changeset 1461:944071972cd9

Small fix.
author Thomas Wuerthinger <wuerthinger@ssw.jku.at>
date Sat, 13 Nov 2010 19:58:27 +0100
parents 1ffaf7819f91
children 1845386f5403
files src/share/vm/c1x/c1x_Compiler.cpp src/share/vm/c1x/c1x_Compiler.hpp src/share/vm/c1x/c1x_VMEntries.cpp src/share/vm/ci/ciField.cpp
diffstat 4 files changed, 7 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/c1x/c1x_Compiler.cpp	Sat Nov 13 18:29:13 2010 +0100
+++ b/src/share/vm/c1x/c1x_Compiler.cpp	Sat Nov 13 19:58:27 2010 +0100
@@ -100,15 +100,12 @@
   }
 }
 
-oop C1XCompiler::get_RiField(ciField *field, KlassHandle accessor, Bytecodes::Code byteCode, TRAPS) {
+oop C1XCompiler::get_RiField(ciField *field, ciInstanceKlass* accessor_klass, KlassHandle accessor, Bytecodes::Code byteCode, TRAPS) {
+  bool will_link = field->will_link_from_vm(accessor_klass, byteCode);
+  int offset = (field->holder()->is_loaded() && will_link) ? field->offset() : -1;
+  Handle field_name = VmIds::toString<Handle>(field->name()->get_symbolOop(), CHECK_0);
   Handle field_holder = get_RiType(field->holder(), accessor, CHECK_0);
   Handle field_type = get_RiType(field->type(), accessor, CHECK_0);
-  Handle field_name = VmIds::toString<Handle>(field->name()->get_symbolOop(), CHECK_0);
-
-  ciInstanceKlass* accessor_klass = (ciInstanceKlass *) CURRENT_ENV->get_object(accessor());
-  bool will_link = field->will_link_from_vm(accessor_klass, byteCode);
-
-  int offset = (field->holder()->is_loaded() && will_link) ? field->offset() : -1;
 
   // TODO: implement caching
   return VMExits::createRiField(field_holder, field_name, field_type, offset, THREAD);
--- a/src/share/vm/c1x/c1x_Compiler.hpp	Sat Nov 13 18:29:13 2010 +0100
+++ b/src/share/vm/c1x/c1x_Compiler.hpp	Sat Nov 13 19:58:27 2010 +0100
@@ -57,7 +57,7 @@
   virtual void print_timers();
 
   static oop get_RiType(ciType *klass, KlassHandle accessor, TRAPS);
-  static oop get_RiField(ciField *ciField, KlassHandle accessor, Bytecodes::Code byteCode, TRAPS);
+  static oop get_RiField(ciField *ciField, ciInstanceKlass* accessor_klass, KlassHandle accessor, Bytecodes::Code byteCode, TRAPS);
 
   static oop createHotSpotTypeResolved(KlassHandle klass, Handle name, TRAPS);
 
--- a/src/share/vm/c1x/c1x_VMEntries.cpp	Sat Nov 13 18:29:13 2010 +0100
+++ b/src/share/vm/c1x/c1x_VMEntries.cpp	Sat Nov 13 19:58:27 2010 +0100
@@ -256,7 +256,7 @@
   ciInstanceKlass* loading_klass = (ciInstanceKlass *) CURRENT_ENV->get_object(cp->pool_holder());
   ciField *field = CURRENT_ENV->get_field_by_index(loading_klass, index);
   Bytecodes::Code code = (Bytecodes::Code)(((int) byteCode) & 0xFF);
-  return JNIHandles::make_local(THREAD, C1XCompiler::get_RiField(field, cp->pool_holder(), code, THREAD));
+  return JNIHandles::make_local(THREAD, C1XCompiler::get_RiField(field, loading_klass, cp->pool_holder(), code, THREAD));
 }
 
 // public RiConstantPool RiType_constantPool(long vmId);
--- a/src/share/vm/ci/ciField.cpp	Sat Nov 13 18:29:13 2010 +0100
+++ b/src/share/vm/ci/ciField.cpp	Sat Nov 13 19:58:27 2010 +0100
@@ -307,6 +307,7 @@
 // link errors?
 bool ciField::will_link_from_vm(ciInstanceKlass* accessing_klass,
                         Bytecodes::Code bc) {
+  Thread* THREAD = Thread::current();
   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