< prev index next >

src/hotspot/share/runtime/javaCalls.cpp

Print this page

        

*** 447,460 **** --- 447,472 ---- THROW(vmSymbols::jdk_vm_ci_code_InvalidInstalledCodeException()); } } #endif + Handle vt; + if (ValueTypeReturnedAsFields && result->get_type() == T_VALUETYPE) { + // Pre allocate buffered value in case the result is returned + // flattened by compiled code + ValueKlass* vk = method->returned_value_type(thread); + vt = vk->allocate_instance_handle(CHECK); + } + // do call { JavaCallWrapper link(method, receiver, result, CHECK); { HandleMark hm(thread); // HandleMark used by HandleMarkCleaner + if (vt() != NULL) { + result->set_jobject((jobject)vt()); + } + StubRoutines::call_stub()( (address)&link, // (intptr_t*)&(result->_value), // see NOTE above (compiler problem) result_val_address, // see NOTE above (compiler problem) result_type,
< prev index next >