< prev index next >

src/share/vm/runtime/deoptimization.cpp

Print this page

        

*** 877,892 **** // We're deoptimizing at the return of a call, value type fields are // in registers. When we go back to the interpreter, it will expect a // reference to a value type instance. Allocate and initialize it from // the register values here. bool Deoptimization::realloc_value_type_result(ValueKlass* vk, const RegisterMap& map, GrowableArray<Handle>& return_oops, TRAPS) { ! VMRegPair* regs; ! int nb_fields; ! const GrowableArray<SigEntry>& sig_vk = vk->return_convention(regs, nb_fields); ! regs++; ! nb_fields--; ! oop new_vt = vk->realloc_result(sig_vk, map, regs, return_oops, nb_fields, THREAD); if (new_vt == NULL) { CLEAR_PENDING_EXCEPTION; THROW_OOP_(Universe::out_of_memory_error_realloc_objects(), true); } return_oops.clear(); --- 877,887 ---- // We're deoptimizing at the return of a call, value type fields are // in registers. When we go back to the interpreter, it will expect a // reference to a value type instance. Allocate and initialize it from // the register values here. bool Deoptimization::realloc_value_type_result(ValueKlass* vk, const RegisterMap& map, GrowableArray<Handle>& return_oops, TRAPS) { ! oop new_vt = vk->realloc_result(map, return_oops, THREAD); if (new_vt == NULL) { CLEAR_PENDING_EXCEPTION; THROW_OOP_(Universe::out_of_memory_error_realloc_objects(), true); } return_oops.clear();
< prev index next >