You need to sign in or sign up before continuing.
提交 482d20f3 编写于 作者: T twisti

7018673: Zero: 6953144, 6990754 and 7009756 made some changes which broke Zero

Reviewed-by: kvn, chrisphi, twisti
上级 15261a49
/* /*
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008 Red Hat, Inc. * Copyright 2007, 2008, 2011 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -300,4 +300,18 @@ inline void* Atomic::cmpxchg_ptr(void* exchange_value, ...@@ -300,4 +300,18 @@ inline void* Atomic::cmpxchg_ptr(void* exchange_value,
(intptr_t) compare_value); (intptr_t) compare_value);
} }
inline jlong Atomic::load(volatile jlong* src) {
volatile jlong dest;
os::atomic_copy64(src, &dest);
return dest;
}
inline void Atomic::store(jlong store_value, jlong* dest) {
os::atomic_copy64((volatile jlong*)&store_value, (volatile jlong*)dest);
}
inline void Atomic::store(jlong store_value, volatile jlong* dest) {
os::atomic_copy64((volatile jlong*)&store_value, dest);
}
#endif // OS_CPU_LINUX_ZERO_VM_ATOMIC_LINUX_ZERO_INLINE_HPP #endif // OS_CPU_LINUX_ZERO_VM_ATOMIC_LINUX_ZERO_INLINE_HPP
/* /*
* Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -768,7 +768,9 @@ CompilerThread* CompileBroker::make_compiler_thread(const char* name, CompileQue ...@@ -768,7 +768,9 @@ CompilerThread* CompileBroker::make_compiler_thread(const char* name, CompileQue
// Initialize the compilation queue // Initialize the compilation queue
void CompileBroker::init_compiler_threads(int c1_compiler_count, int c2_compiler_count) { void CompileBroker::init_compiler_threads(int c1_compiler_count, int c2_compiler_count) {
EXCEPTION_MARK; EXCEPTION_MARK;
#ifndef ZERO
assert(c2_compiler_count > 0 || c1_compiler_count > 0, "No compilers?"); assert(c2_compiler_count > 0 || c1_compiler_count > 0, "No compilers?");
#endif // !ZERO
if (c2_compiler_count > 0) { if (c2_compiler_count > 0) {
_c2_method_queue = new CompileQueue("C2MethodQueue", MethodCompileQueue_lock); _c2_method_queue = new CompileQueue("C2MethodQueue", MethodCompileQueue_lock);
} }
......
...@@ -1936,7 +1936,7 @@ run: ...@@ -1936,7 +1936,7 @@ run:
constantPoolOop constants = istate->method()->constants(); constantPoolOop constants = istate->method()->constants();
if (!constants->tag_at(index).is_unresolved_klass()) { if (!constants->tag_at(index).is_unresolved_klass()) {
// Make sure klass is initialized and doesn't have a finalizer // Make sure klass is initialized and doesn't have a finalizer
oop entry = (klassOop) *constants->obj_at_addr(index); oop entry = constants->slot_at(index).get_oop();
assert(entry->is_klass(), "Should be resolved klass"); assert(entry->is_klass(), "Should be resolved klass");
klassOop k_entry = (klassOop) entry; klassOop k_entry = (klassOop) entry;
assert(k_entry->klass_part()->oop_is_instance(), "Should be instanceKlass"); assert(k_entry->klass_part()->oop_is_instance(), "Should be instanceKlass");
...@@ -2026,7 +2026,7 @@ run: ...@@ -2026,7 +2026,7 @@ run:
if (METHOD->constants()->tag_at(index).is_unresolved_klass()) { if (METHOD->constants()->tag_at(index).is_unresolved_klass()) {
CALL_VM(InterpreterRuntime::quicken_io_cc(THREAD), handle_exception); CALL_VM(InterpreterRuntime::quicken_io_cc(THREAD), handle_exception);
} }
klassOop klassOf = (klassOop) *(METHOD->constants()->obj_at_addr(index)); klassOop klassOf = (klassOop) METHOD->constants()->slot_at(index).get_oop();
klassOop objKlassOop = STACK_OBJECT(-1)->klass(); //ebx klassOop objKlassOop = STACK_OBJECT(-1)->klass(); //ebx
// //
// Check for compatibilty. This check must not GC!! // Check for compatibilty. This check must not GC!!
...@@ -2061,7 +2061,7 @@ run: ...@@ -2061,7 +2061,7 @@ run:
if (METHOD->constants()->tag_at(index).is_unresolved_klass()) { if (METHOD->constants()->tag_at(index).is_unresolved_klass()) {
CALL_VM(InterpreterRuntime::quicken_io_cc(THREAD), handle_exception); CALL_VM(InterpreterRuntime::quicken_io_cc(THREAD), handle_exception);
} }
klassOop klassOf = (klassOop) *(METHOD->constants()->obj_at_addr(index)); klassOop klassOf = (klassOop) METHOD->constants()->slot_at(index).get_oop();
klassOop objKlassOop = STACK_OBJECT(-1)->klass(); klassOop objKlassOop = STACK_OBJECT(-1)->klass();
// //
// Check for compatibilty. This check must not GC!! // Check for compatibilty. This check must not GC!!
......
...@@ -934,7 +934,7 @@ methodHandle methodOopDesc::make_invoke_method(KlassHandle holder, ...@@ -934,7 +934,7 @@ methodHandle methodOopDesc::make_invoke_method(KlassHandle holder,
assert(m->signature() == signature, ""); assert(m->signature() == signature, "");
assert(m->is_method_handle_invoke(), ""); assert(m->is_method_handle_invoke(), "");
#ifdef CC_INTERP #ifdef CC_INTERP
ResultTypeFinder rtf(signature()); ResultTypeFinder rtf(signature);
m->set_result_index(rtf.type()); m->set_result_index(rtf.type());
#endif #endif
m->compute_size_of_parameters(THREAD); m->compute_size_of_parameters(THREAD);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册