< prev index next >
src/hotspot/share/jvmci/jvmciCompilerToVM.cpp
Print this page
*** 434,444 ****
Handle protection_domain(THREAD, accessing_klass->protection_domain());
if (resolve) {
resolved_klass = SystemDictionary::resolve_or_null(class_name, class_loader, protection_domain, CHECK_0);
} else {
! if (class_name->char_at(0) == 'L' &&
class_name->char_at(class_name->utf8_length()-1) == ';') {
// This is a name from a signature. Strip off the trimmings.
// Call recursive to keep scope of strippedsym.
TempNewSymbol strippedsym = SymbolTable::new_symbol(class_name->as_utf8()+1,
class_name->utf8_length()-2,
--- 434,444 ----
Handle protection_domain(THREAD, accessing_klass->protection_domain());
if (resolve) {
resolved_klass = SystemDictionary::resolve_or_null(class_name, class_loader, protection_domain, CHECK_0);
} else {
! if ((class_name->char_at(0) == 'L' || class_name->char_at(0) == 'Q' ) &&
class_name->char_at(class_name->utf8_length()-1) == ';') {
// This is a name from a signature. Strip off the trimmings.
// Call recursive to keep scope of strippedsym.
TempNewSymbol strippedsym = SymbolTable::new_symbol(class_name->as_utf8()+1,
class_name->utf8_length()-2,
*** 877,887 ****
jca.set_alternative_target(nm);
JavaCalls::call(&result, mh, &jca, CHECK_NULL);
if (jap.get_ret_type() == T_VOID) {
return NULL;
! } else if (jap.get_ret_type() == T_OBJECT || jap.get_ret_type() == T_ARRAY) {
return JNIHandles::make_local(THREAD, (oop) result.get_jobject());
} else {
jvalue *value = (jvalue *) result.get_value_addr();
// Narrow the value down if required (Important on big endian machines)
switch (jap.get_ret_type()) {
--- 877,888 ----
jca.set_alternative_target(nm);
JavaCalls::call(&result, mh, &jca, CHECK_NULL);
if (jap.get_ret_type() == T_VOID) {
return NULL;
! } else if (jap.get_ret_type() == T_OBJECT || jap.get_ret_type() == T_ARRAY
! || jap.get_ret_type() == T_VALUETYPE) {
return JNIHandles::make_local(THREAD, (oop) result.get_jobject());
} else {
jvalue *value = (jvalue *) result.get_value_addr();
// Narrow the value down if required (Important on big endian machines)
switch (jap.get_ret_type()) {
*** 1081,1091 ****
objects->append(sv);
}
}
}
bool realloc_failures = Deoptimization::realloc_objects(thread, fst.current(), objects, CHECK_NULL);
! Deoptimization::reassign_fields(fst.current(), fst.register_map(), objects, realloc_failures, false);
realloc_called = true;
GrowableArray<ScopeValue*>* local_values = scope->locals();
assert(local_values != NULL, "NULL locals");
typeArrayOop array_oop = oopFactory::new_boolArray(local_values->length(), CHECK_NULL);
--- 1082,1092 ----
objects->append(sv);
}
}
}
bool realloc_failures = Deoptimization::realloc_objects(thread, fst.current(), objects, CHECK_NULL);
! Deoptimization::reassign_fields(fst.current(), fst.register_map(), objects, realloc_failures, false, CHECK_NULL);
realloc_called = true;
GrowableArray<ScopeValue*>* local_values = scope->locals();
assert(local_values != NULL, "NULL locals");
typeArrayOop array_oop = oopFactory::new_boolArray(local_values->length(), CHECK_NULL);
*** 1338,1348 ****
// no objects to materialize
return;
}
bool realloc_failures = Deoptimization::realloc_objects(thread, fstAfterDeopt.current(), objects, CHECK);
! Deoptimization::reassign_fields(fstAfterDeopt.current(), fstAfterDeopt.register_map(), objects, realloc_failures, false);
for (int frame_index = 0; frame_index < virtualFrames->length(); frame_index++) {
compiledVFrame* cvf = virtualFrames->at(frame_index);
GrowableArray<ScopeValue*>* scopeLocals = cvf->scope()->locals();
--- 1339,1349 ----
// no objects to materialize
return;
}
bool realloc_failures = Deoptimization::realloc_objects(thread, fstAfterDeopt.current(), objects, CHECK);
! Deoptimization::reassign_fields(fstAfterDeopt.current(), fstAfterDeopt.register_map(), objects, realloc_failures, false, THREAD);
for (int frame_index = 0; frame_index < virtualFrames->length(); frame_index++) {
compiledVFrame* cvf = virtualFrames->at(frame_index);
GrowableArray<ScopeValue*>* scopeLocals = cvf->scope()->locals();
< prev index next >