[JAEGER] Mimic GCC output for loadValueAsComponents(). b=586240, r=dvander.
authorSean Stangl <sstangl@mozilla.com>
Wed, 11 Aug 2010 16:55:32 -0700
changeset 53387 f7cf2b7b79613a6f27033c130d637a1cfb3ea8a3
parent 53386 7dd58614272f8d60eca8f57a96a683e94ee85a65
child 53388 49c88708325a7171d80a7b39ca7df98ab0a3bde1
push id1
push userroot
push dateTue, 26 Apr 2011 22:38:44 +0000
treeherdermozilla-beta@bfdb6e623a36 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdvander
bugs586240
milestone2.0b4pre
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
[JAEGER] Mimic GCC output for loadValueAsComponents(). b=586240, r=dvander.
js/src/methodjit/PunboxAssembler.h
--- a/js/src/methodjit/PunboxAssembler.h
+++ b/js/src/methodjit/PunboxAssembler.h
@@ -125,25 +125,21 @@ class Assembler : public BaseAssembler
         /*
          * Loading into the ValueRegister is better than loading directly into type:
          * with this code, there are no interdependencies between type and payload,
          * allowing the instructions to be better pipelined. This is X64-specific.
          */
         loadValue(address, Registers::ValueReg);
         Label l = label();
         
-        move(Registers::ValueReg, type);
-        move(Registers::ValueReg, payload);
-        move(Imm64(JSVAL_PAYLOAD_MASK), Registers::ValueReg);
+        move(Imm64(JSVAL_PAYLOAD_MASK), payload);
+        move(Imm64(JSVAL_TAG_MASK), type);
 
-        /* Use JSC::scratchRegister to mask type bits. */
-        convertValueToType(type);
-
-        /* Use ValueReg to mask payload bits. */
         andPtr(Registers::ValueReg, payload);
+        andPtr(Registers::ValueReg, type);
 
         return l;
     }
 
     void loadTypeTag(Address address, RegisterID reg) {
         loadValue(address, reg);
         convertValueToType(reg);
     }