< prev index next >

src/hotspot/share/ci/ciInstance.cpp

Print this page

        

@@ -68,10 +68,11 @@
     case T_BOOLEAN: return ciConstant(field_btype, obj->bool_field(offset));
     case T_INT:     return ciConstant(field_btype, obj->int_field(offset));
     case T_FLOAT:   return ciConstant(obj->float_field(offset));
     case T_DOUBLE:  return ciConstant(obj->double_field(offset));
     case T_LONG:    return ciConstant(obj->long_field(offset));
+    case T_VALUETYPE:  // fall through
     case T_OBJECT:  // fall through
     case T_ARRAY: {
       oop o = obj->obj_field(offset);
 
       // A field will be "constant" if it is known always to be

@@ -98,11 +99,12 @@
 //
 // Constant value of a field.
 ciConstant ciInstance::field_value(ciField* field) {
   assert(is_loaded(), "invalid access - must be loaded");
   assert(field->holder()->is_loaded(), "invalid access - holder must be loaded");
-  assert(field->is_static() || klass()->is_subclass_of(field->holder()), "invalid access - must be subclass");
+  assert(field->is_static() || field->holder()->is_valuetype() || klass()->is_subclass_of(field->holder()),
+         "invalid access - must be subclass");
 
   GUARDED_VM_ENTRY(return field_value_impl(field->type()->basic_type(), field->offset());)
 }
 
 // ------------------------------------------------------------------
< prev index next >