# HG changeset patch # User Thomas Wuerthinger # Date 1321548334 -3600 # Node ID d24f157f2ba84b9ed0632ce67ed33ba8504ee731 # Parent c805dfba251d33f413a3559dbda10604bf8c8021 Use write barrier in JavaAccess. Fixed thread transition bug. diff -r c805dfba251d -r d24f157f2ba8 src/share/vm/graal/graalCodeInstaller.cpp --- a/src/share/vm/graal/graalCodeInstaller.cpp Thu Nov 17 17:18:16 2011 +0100 +++ b/src/share/vm/graal/graalCodeInstaller.cpp Thu Nov 17 17:45:34 2011 +0100 @@ -266,10 +266,11 @@ } int stack_slots = (_frame_size / HeapWordSize) + 2; // conversion to words, need to add two slots for ret address and frame pointer - ThreadToNativeFromVM t((JavaThread*) Thread::current()); methodHandle method = getMethodFromHotSpotMethod(HotSpotTargetMethod::method(target_method)); - nm = GraalEnv::register_method(method, -1, &_offsets, _custom_stack_area_offset, &buffer, stack_slots, _debug_recorder->_oopmaps, &_exception_handler_table, - &_implicit_exception_table, GraalCompiler::instance(), _debug_recorder, _dependencies, NULL, -1, false, false, install_code); + { + nm = GraalEnv::register_method(method, -1, &_offsets, _custom_stack_area_offset, &buffer, stack_slots, _debug_recorder->_oopmaps, &_exception_handler_table, + &_implicit_exception_table, GraalCompiler::instance(), _debug_recorder, _dependencies, NULL, -1, false, false, install_code); + } method->clear_queued_for_compilation(); } diff -r c805dfba251d -r d24f157f2ba8 src/share/vm/graal/graalEnv.cpp --- a/src/share/vm/graal/graalEnv.cpp Thu Nov 17 17:18:16 2011 +0100 +++ b/src/share/vm/graal/graalEnv.cpp Thu Nov 17 17:45:34 2011 +0100 @@ -424,7 +424,7 @@ // ------------------------------------------------------------------ // ciEnv::register_method -nmethod* GraalEnv::register_method(methodHandle method, +nmethod* GraalEnv::register_method(methodHandle& method, int entry_bci, CodeOffsets* offsets, int orig_pc_offset, @@ -441,7 +441,7 @@ bool has_debug_info, bool has_unsafe_access, bool install_code) { - VM_ENTRY_MARK; + EXCEPTION_CONTEXT; nmethod* nm = NULL; int comp_level = CompLevel_simple; { diff -r c805dfba251d -r d24f157f2ba8 src/share/vm/graal/graalEnv.hpp --- a/src/share/vm/graal/graalEnv.hpp Thu Nov 17 17:18:16 2011 +0100 +++ b/src/share/vm/graal/graalEnv.hpp Thu Nov 17 17:45:34 2011 +0100 @@ -109,7 +109,7 @@ public: // Register the result of a compilation. - static nmethod* register_method(methodHandle target, + static nmethod* register_method(methodHandle& target, int entry_bci, CodeOffsets* offsets, int orig_pc_offset, diff -r c805dfba251d -r d24f157f2ba8 src/share/vm/graal/graalJavaAccess.hpp --- a/src/share/vm/graal/graalJavaAccess.hpp Thu Nov 17 17:18:16 2011 +0100 +++ b/src/share/vm/graal/graalJavaAccess.hpp Thu Nov 17 17:45:34 2011 +0100 @@ -265,9 +265,9 @@ instanceKlass* ik = instanceKlass::cast(klassName::klass()); \ address addr = ik->static_field_addr(_##name##_offset - instanceMirrorKlass::offset_of_static_fields()); \ if (UseCompressedOops) { \ - oopDesc::encode_store_heap_oop((narrowOop *)addr, x); \ + oop_store((narrowOop *)addr, x); \ } else { \ - oopDesc::encode_store_heap_oop((oop*)addr, x); \ + oop_store((oop*)addr, x); \ } \ } COMPILER_CLASSES_DO(START_CLASS, END_CLASS, CHAR_FIELD, INT_FIELD, BOOLEAN_FIELD, LONG_FIELD, FLOAT_FIELD, OOP_FIELD, STATIC_OOP_FIELD)