src/share/vm/opto/machnode.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
6714694 Cdiff src/share/vm/opto/machnode.cpp
src/share/vm/opto/machnode.cpp
Print this page
*** 260,277 ****
intptr_t disp = oper->constant_disp();
int scale = oper->scale();
// Now we have collected every part of the ADLC MEMORY_INTER.
// See if it adds up to a base + offset.
if (index != NULL) {
- if (!index->is_Con()) {
const TypeNarrowOop* narrowoop = index->bottom_type()->isa_narrowoop();
! if (narrowoop != NULL) {
// Memory references through narrow oops have a
! // funny base so grab the type from the index.
! adr_type = narrowoop->make_oopptr();
return NULL;
! }
disp = Type::OffsetBot;
} else if (disp != Type::OffsetBot) {
const TypeX* ti = index->bottom_type()->isa_intptr_t();
if (ti == NULL) {
disp = Type::OffsetBot; // a random constant??
--- 260,279 ----
intptr_t disp = oper->constant_disp();
int scale = oper->scale();
// Now we have collected every part of the ADLC MEMORY_INTER.
// See if it adds up to a base + offset.
if (index != NULL) {
const TypeNarrowOop* narrowoop = index->bottom_type()->isa_narrowoop();
! if (narrowoop != NULL) { // EncodeN, LoadN, LoadConN, LoadNKlass.
// Memory references through narrow oops have a
! // funny base so grab the type from the index:
! // [R12 + narrow_oop_reg<<3 + offset]
! assert(base == NULL, "Memory references through narrow oops have no base");
! offset = disp;
! adr_type = narrowoop->make_oopptr()->add_offset(offset);
return NULL;
! } else if (!index->is_Con()) {
disp = Type::OffsetBot;
} else if (disp != Type::OffsetBot) {
const TypeX* ti = index->bottom_type()->isa_intptr_t();
if (ti == NULL) {
disp = Type::OffsetBot; // a random constant??
src/share/vm/opto/machnode.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File