< prev index next >
src/share/vm/opto/library_call.cpp
Print this page
*** 3584,3594 ****
if (generate_array_guard(kls, region) != NULL)
// A guard was added. If the guard is taken, it was an array.
phi->add_req(makecon(TypeInstPtr::make(env()->Object_klass()->java_mirror())));
// If we fall through, it's a plain class. Get its _super.
p = basic_plus_adr(kls, in_bytes(Klass::super_offset()));
! kls = _gvn.transform(LoadKlassNode::make(_gvn, NULL, immutable_memory(), p, TypeRawPtr::BOTTOM, TypeKlassPtr::OBJECT_OR_NULL));
null_ctl = top();
kls = null_check_oop(kls, &null_ctl);
if (null_ctl != top()) {
// If the guard is taken, Object.superClass is null (both klass and mirror).
region->add_req(null_ctl);
--- 3584,3594 ----
if (generate_array_guard(kls, region) != NULL)
// A guard was added. If the guard is taken, it was an array.
phi->add_req(makecon(TypeInstPtr::make(env()->Object_klass()->java_mirror())));
// If we fall through, it's a plain class. Get its _super.
p = basic_plus_adr(kls, in_bytes(Klass::super_offset()));
! kls = _gvn.transform(LoadKlassNode::make(_gvn, NULL, immutable_memory(), p, TypeRawPtr::BOTTOM, TypeKlassPtr::BOTTOM));
null_ctl = top();
kls = null_check_oop(kls, &null_ctl);
if (null_ctl != top()) {
// If the guard is taken, Object.superClass is null (both klass and mirror).
region->add_req(null_ctl);
*** 3726,3736 ****
RegionNode* region = new RegionNode(PATH_LIMIT);
Node* phi = new PhiNode(region, TypeInt::BOOL);
record_for_igvn(region);
const TypePtr* adr_type = TypeRawPtr::BOTTOM; // memory type of loads
! const TypeKlassPtr* kls_type = TypeKlassPtr::OBJECT_OR_NULL;
int class_klass_offset = java_lang_Class::klass_offset_in_bytes();
// First null-check both mirrors and load each mirror's klass metaobject.
int which_arg;
for (which_arg = 0; which_arg <= 1; which_arg++) {
--- 3726,3736 ----
RegionNode* region = new RegionNode(PATH_LIMIT);
Node* phi = new PhiNode(region, TypeInt::BOOL);
record_for_igvn(region);
const TypePtr* adr_type = TypeRawPtr::BOTTOM; // memory type of loads
! const TypeKlassPtr* kls_type = TypeKlassPtr::BOTTOM;
int class_klass_offset = java_lang_Class::klass_offset_in_bytes();
// First null-check both mirrors and load each mirror's klass metaobject.
int which_arg;
for (which_arg = 0; which_arg <= 1; which_arg++) {
< prev index next >