1.1 --- a/src/cpu/x86/vm/x86_32.ad Tue Oct 09 10:09:34 2012 -0700 1.2 +++ b/src/cpu/x86/vm/x86_32.ad Fri Oct 12 09:22:52 2012 -0700 1.3 @@ -1424,6 +1424,11 @@ 1.4 return true; 1.5 } 1.6 1.7 +bool Matcher::narrow_klass_use_complex_address() { 1.8 + ShouldNotCallThis(); 1.9 + return true; 1.10 +} 1.11 + 1.12 1.13 // Is it better to copy float constants, or load them directly from memory? 1.14 // Intel can load a float constant from a direct address, requiring no 1.15 @@ -1553,9 +1558,6 @@ 1.16 // Returns true if the high 32 bits of the value is known to be zero. 1.17 bool is_operand_hi32_zero(Node* n) { 1.18 int opc = n->Opcode(); 1.19 - if (opc == Op_LoadUI2L) { 1.20 - return true; 1.21 - } 1.22 if (opc == Op_AndL) { 1.23 Node* o2 = n->in(2); 1.24 if (o2->is_Con() && (o2->get_long() & 0xFFFFFFFF00000000LL) == 0LL) { 1.25 @@ -6147,8 +6149,8 @@ 1.26 %} 1.27 1.28 // Load Unsigned Integer into Long Register 1.29 -instruct loadUI2L(eRegL dst, memory mem, eFlagsReg cr) %{ 1.30 - match(Set dst (LoadUI2L mem)); 1.31 +instruct loadUI2L(eRegL dst, memory mem, immL_32bits mask, eFlagsReg cr) %{ 1.32 + match(Set dst (AndL (ConvI2L (LoadI mem)) mask)); 1.33 effect(KILL cr); 1.34 1.35 ins_cost(250);