< prev index next >

src/hotspot/share/interpreter/interpreterRuntime.cpp

Print this page




 401     // otherwise the JVM should not be executing this code.
 402     mirror->obj_field_put(offset, defaultvalue);
 403     thread->set_vm_result(defaultvalue);
 404   } else {
 405     assert(klass->is_in_error_state(), "If not initializing, initialization must have failed to get there");
 406     ResourceMark rm(THREAD);
 407     const char* desc = "Could not initialize class ";
 408     const char* className = klass->external_name();
 409     size_t msglen = strlen(desc) + strlen(className) + 1;
 410     char* message = NEW_RESOURCE_ARRAY(char, msglen);
 411     if (NULL == message) {
 412       // Out of memory: can't create detailed error message
 413       THROW_MSG(vmSymbols::java_lang_NoClassDefFoundError(), className);
 414     } else {
 415       jio_snprintf(message, msglen, "%s%s", desc, className);
 416       THROW_MSG(vmSymbols::java_lang_NoClassDefFoundError(), message);
 417     }
 418   }
 419 JRT_END
 420 
 421 JRT_ENTRY(void, InterpreterRuntime::uninitialized_instance_value_field(JavaThread* thread, oopDesc* obj, int index))
 422   instanceHandle obj_h(THREAD, (instanceOop)obj);
 423   InstanceKlass* klass = InstanceKlass::cast(obj_h()->klass());
 424   Klass* field_k = klass->get_value_field_klass_or_null(index);
 425   assert(field_k != NULL, "Must have been initialized");
 426   ValueKlass* field_vklass = ValueKlass::cast(field_k);
 427   assert(field_vklass->is_initialized(), "Must have been initialized at this point");
 428   instanceOop res = (instanceOop)field_vklass->default_value();
 429   thread->set_vm_result(res);
 430 JRT_END
 431 
 432 JRT_ENTRY(void, InterpreterRuntime::read_flattened_field(JavaThread* thread, oopDesc* obj, int index, Klass* field_holder))
 433   Handle obj_h(THREAD, obj);
 434 
 435   assert(oopDesc::is_oop(obj), "Sanity check");
 436 
 437   assert(field_holder->is_instance_klass(), "Sanity check");
 438   InstanceKlass* klass = InstanceKlass::cast(field_holder);
 439 
 440   assert(klass->field_is_flattened(index), "Sanity check");
 441 
 442   ValueKlass* field_vklass = ValueKlass::cast(klass->get_value_field_klass(index));
 443   assert(field_vklass->is_initialized(), "Must be initialized at this point");
 444 
 445   oop res = field_vklass->read_flattened_field(obj_h(), klass->field_offset(index), CHECK);
 446   thread->set_vm_result(res);
 447 JRT_END
 448 
 449 JRT_ENTRY(void, InterpreterRuntime::newarray(JavaThread* thread, BasicType type, jint size))
 450   oop obj = oopFactory::new_typeArray(type, size, CHECK);
 451   thread->set_vm_result(obj);




 401     // otherwise the JVM should not be executing this code.
 402     mirror->obj_field_put(offset, defaultvalue);
 403     thread->set_vm_result(defaultvalue);
 404   } else {
 405     assert(klass->is_in_error_state(), "If not initializing, initialization must have failed to get there");
 406     ResourceMark rm(THREAD);
 407     const char* desc = "Could not initialize class ";
 408     const char* className = klass->external_name();
 409     size_t msglen = strlen(desc) + strlen(className) + 1;
 410     char* message = NEW_RESOURCE_ARRAY(char, msglen);
 411     if (NULL == message) {
 412       // Out of memory: can't create detailed error message
 413       THROW_MSG(vmSymbols::java_lang_NoClassDefFoundError(), className);
 414     } else {
 415       jio_snprintf(message, msglen, "%s%s", desc, className);
 416       THROW_MSG(vmSymbols::java_lang_NoClassDefFoundError(), message);
 417     }
 418   }
 419 JRT_END
 420 











 421 JRT_ENTRY(void, InterpreterRuntime::read_flattened_field(JavaThread* thread, oopDesc* obj, int index, Klass* field_holder))
 422   Handle obj_h(THREAD, obj);
 423 
 424   assert(oopDesc::is_oop(obj), "Sanity check");
 425 
 426   assert(field_holder->is_instance_klass(), "Sanity check");
 427   InstanceKlass* klass = InstanceKlass::cast(field_holder);
 428 
 429   assert(klass->field_is_flattened(index), "Sanity check");
 430 
 431   ValueKlass* field_vklass = ValueKlass::cast(klass->get_value_field_klass(index));
 432   assert(field_vklass->is_initialized(), "Must be initialized at this point");
 433 
 434   oop res = field_vklass->read_flattened_field(obj_h(), klass->field_offset(index), CHECK);
 435   thread->set_vm_result(res);
 436 JRT_END
 437 
 438 JRT_ENTRY(void, InterpreterRuntime::newarray(JavaThread* thread, BasicType type, jint size))
 439   oop obj = oopFactory::new_typeArray(type, size, CHECK);
 440   thread->set_vm_result(obj);


< prev index next >