comparison src/share/vm/opto/machnode.cpp @ 673:fbc12e71c476

6810845: Performance regression in mpegaudio on x64 Summary: Used the outer loop frequency in frequencies checks in RA. Reviewed-by: never, twisti
author kvn
date Thu, 26 Mar 2009 15:04:55 -0700
parents 98cb887364d3
children bd02caa94611 fc4be448891f
comparison
equal deleted inserted replaced
672:afd8dfb5c2a6 673:fbc12e71c476
338 338
339 // base of -1 with no particular offset means all of memory 339 // base of -1 with no particular offset means all of memory
340 if (base == NodeSentinel) return TypePtr::BOTTOM; 340 if (base == NodeSentinel) return TypePtr::BOTTOM;
341 341
342 const Type* t = base->bottom_type(); 342 const Type* t = base->bottom_type();
343 if (UseCompressedOops && Universe::narrow_oop_shift() == 0) {
344 // 32-bit unscaled narrow oop can be the base of any address expression
345 t = t->make_ptr();
346 }
343 if (t->isa_intptr_t() && offset != 0 && offset != Type::OffsetBot) { 347 if (t->isa_intptr_t() && offset != 0 && offset != Type::OffsetBot) {
344 // We cannot assert that the offset does not look oop-ish here. 348 // We cannot assert that the offset does not look oop-ish here.
345 // Depending on the heap layout the cardmark base could land 349 // Depending on the heap layout the cardmark base could land
346 // inside some oopish region. It definitely does for Win2K. 350 // inside some oopish region. It definitely does for Win2K.
347 // The sum of cardmark-base plus shift-by-9-oop lands outside 351 // The sum of cardmark-base plus shift-by-9-oop lands outside
351 355
352 const TypePtr *tp = t->isa_ptr(); 356 const TypePtr *tp = t->isa_ptr();
353 357
354 // be conservative if we do not recognize the type 358 // be conservative if we do not recognize the type
355 if (tp == NULL) { 359 if (tp == NULL) {
360 assert(false, "this path may produce not optimal code");
356 return TypePtr::BOTTOM; 361 return TypePtr::BOTTOM;
357 } 362 }
358 assert(tp->base() != Type::AnyPtr, "not a bare pointer"); 363 assert(tp->base() != Type::AnyPtr, "not a bare pointer");
359 364
360 return tp->add_offset(offset); 365 return tp->add_offset(offset);