Mercurial > hg > graal-jvmci-8
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); |