comparison src/cpu/x86/vm/x86_64.ad @ 168:7793bd37a336

6705887: Compressed Oops: generate x64 addressing and implicit null checks with narrow oops Summary: Generate addresses and implicit null checks with narrow oops to avoid decoding. Reviewed-by: jrose, never
author kvn
date Thu, 29 May 2008 12:04:14 -0700
parents c436414a719e
children 9148c65abefc
comparison
equal deleted inserted replaced
167:feeb96a45707 168:7793bd37a336
5200 scale($scale); 5200 scale($scale);
5201 disp($off); 5201 disp($off);
5202 %} 5202 %}
5203 %} 5203 %}
5204 5204
5205 // Indirect Memory Times Scale Plus Index Register Plus Offset Operand 5205 // Indirect Narrow Oop Plus Offset Operand
5206 operand indIndexScaleOffsetComp(rRegN src, immL32 off, r12RegL base) %{ 5206 operand indNarrowOopOffset(rRegN src, immL32 off) %{
5207 constraint(ALLOC_IN_RC(ptr_reg)); 5207 constraint(ALLOC_IN_RC(ptr_reg));
5208 match(AddP (DecodeN src base) off); 5208 match(AddP (DecodeN src) off);
5209 5209
5210 op_cost(10); 5210 op_cost(10);
5211 format %{"[$base + $src << 3 + $off] (compressed)" %} 5211 format %{"[R12 + $src << 3 + $off] (compressed oop addressing)" %}
5212 interface(MEMORY_INTER) %{ 5212 interface(MEMORY_INTER) %{
5213 base($base); 5213 base(0xc); // R12
5214 index($src); 5214 index($src);
5215 scale(0x3); 5215 scale(0x3);
5216 disp($off); 5216 disp($off);
5217 %} 5217 %}
5218 %} 5218 %}
5363 // multiple operand types with the same basic encoding and format. The classic 5363 // multiple operand types with the same basic encoding and format. The classic
5364 // case of this is memory operands. 5364 // case of this is memory operands.
5365 5365
5366 opclass memory(indirect, indOffset8, indOffset32, indIndexOffset, indIndex, 5366 opclass memory(indirect, indOffset8, indOffset32, indIndexOffset, indIndex,
5367 indIndexScale, indIndexScaleOffset, indPosIndexScaleOffset, 5367 indIndexScale, indIndexScaleOffset, indPosIndexScaleOffset,
5368 indIndexScaleOffsetComp); 5368 indNarrowOopOffset);
5369 5369
5370 //----------PIPELINE----------------------------------------------------------- 5370 //----------PIPELINE-----------------------------------------------------------
5371 // Rules which define the behavior of the target architectures pipeline. 5371 // Rules which define the behavior of the target architectures pipeline.
5372 pipeline %{ 5372 pipeline %{
5373 5373