# HG changeset patch # User Thomas Wuerthinger # Date 1289669328 -3600 # Node ID a8f9f091c219b676911c46d10f3b7262362991f0 # Parent 7cf1952ec5fb930f58951a397bce77e794bf8b68 Don't mess with VMToNative transitions.. diff -r 7cf1952ec5fb -r a8f9f091c219 src/share/vm/c1x/c1x_Compiler.cpp --- a/src/share/vm/c1x/c1x_Compiler.cpp Fri Nov 12 20:57:08 2010 +0100 +++ b/src/share/vm/c1x/c1x_Compiler.cpp Sat Nov 13 18:28:48 2010 +0100 @@ -106,11 +106,7 @@ Handle field_name = VmIds::toString(field->name()->get_symbolOop(), CHECK_0); ciInstanceKlass* accessor_klass = (ciInstanceKlass *) CURRENT_ENV->get_object(accessor()); - bool will_link; - { - ThreadToNativeFromVM trans((JavaThread*)THREAD); - will_link = field->will_link(accessor_klass, byteCode); - } + bool will_link = field->will_link_from_vm(accessor_klass, byteCode); int offset = (field->holder()->is_loaded() && will_link) ? field->offset() : -1; diff -r 7cf1952ec5fb -r a8f9f091c219 src/share/vm/ci/ciField.cpp --- a/src/share/vm/ci/ciField.cpp Fri Nov 12 20:57:08 2010 +0100 +++ b/src/share/vm/ci/ciField.cpp Sat Nov 13 18:28:48 2010 +0100 @@ -294,15 +294,19 @@ return type; } +bool ciField::will_link(ciInstanceKlass* accessing_klass, + Bytecodes::Code bc) { + VM_ENTRY_MARK; + will_link_from_vm(accessing_klass, bc); +} // ------------------------------------------------------------------ // ciField::will_link // // Can a specific access to this field be made without causing // link errors? -bool ciField::will_link(ciInstanceKlass* accessing_klass, +bool ciField::will_link_from_vm(ciInstanceKlass* accessing_klass, Bytecodes::Code bc) { - VM_ENTRY_MARK; if (_offset == -1) { // at creation we couldn't link to our holder so we need to // maintain that stance, otherwise there's no safe way to use this diff -r 7cf1952ec5fb -r a8f9f091c219 src/share/vm/ci/ciField.hpp --- a/src/share/vm/ci/ciField.hpp Fri Nov 12 20:57:08 2010 +0100 +++ b/src/share/vm/ci/ciField.hpp Sat Nov 13 18:28:48 2010 +0100 @@ -160,6 +160,8 @@ // at each point of access. bool will_link(ciInstanceKlass* accessing_klass, Bytecodes::Code bc); + bool will_link_from_vm(ciInstanceKlass* accessing_klass, + Bytecodes::Code bc); // Java access flags bool is_public () { return flags().is_public(); }