MIPS64: Fix LoadGlobalViaContextStub
authorpaul.lind <paul.lind@imgtec.com>
Sun, 26 Jul 2015 05:01:42 +0000 (22:01 -0700)
committerCommit bot <commit-bot@chromium.org>
Sun, 26 Jul 2015 05:01:54 +0000 (05:01 +0000)
Also make a minor improvement in the mips32 StoreGlobalViaContextStub
and fix some bad comments in the macro-assembler.

BUG=

Review URL: https://codereview.chromium.org/1254153002

Cr-Commit-Position: refs/heads/master@{#29859}

src/mips/code-stubs-mips.cc
src/mips/macro-assembler-mips.cc
src/mips64/code-stubs-mips64.cc
src/mips64/macro-assembler-mips64.cc

index 7dbc5d8e7359dc7d5b07a1a95b117e498eedf8ef..2610f19629eac4c1514a6befd52c71f52ce5e0ed 100644 (file)
@@ -5351,8 +5351,8 @@ void StoreGlobalViaContextStub::Generate(MacroAssembler* masm) {
                       cell_details_reg, kRAHasNotBeenSaved, kDontSaveFPRegs,
                       EMIT_REMEMBERED_SET, OMIT_SMI_CHECK);
   // RecordWriteField clobbers the value register, so we need to reload.
+  __ Ret(USE_DELAY_SLOT);
   __ lw(value_reg, FieldMemOperand(cell_reg, PropertyCell::kValueOffset));
-  __ Ret();
   __ bind(&not_mutable_data);
 
   // Check if PropertyCell value matches the new value (relevant for Constant,
index 9189468ce58e3eeb82e39c1ce59368c4e6596e46..16a8c1e10700ca20761582587b46025926d9372d 100644 (file)
@@ -164,6 +164,9 @@ void MacroAssembler::InNewSpace(Register object,
 }
 
 
+// Clobbers object, dst, value, and ra, if (ra_status == kRAHasBeenSaved)
+// The register 'object' contains a heap object pointer.  The heap object
+// tag is shifted away.
 void MacroAssembler::RecordWriteField(
     Register object,
     int offset,
@@ -217,8 +220,7 @@ void MacroAssembler::RecordWriteField(
 }
 
 
-// Will clobber 4 registers: object, map, dst, ip.  The
-// register 'object' contains a heap object pointer.
+// Clobbers object, dst, map, and ra, if (ra_status == kRAHasBeenSaved)
 void MacroAssembler::RecordWriteForMap(Register object,
                                        Register map,
                                        Register dst,
@@ -292,8 +294,8 @@ void MacroAssembler::RecordWriteForMap(Register object,
 }
 
 
-// Will clobber 4 registers: object, address, scratch, ip.  The
-// register 'object' contains a heap object pointer.  The heap object
+// Clobbers object, address, value, and ra, if (ra_status == kRAHasBeenSaved)
+// The register 'object' contains a heap object pointer.  The heap object
 // tag is shifted away.
 void MacroAssembler::RecordWrite(
     Register object,
index dad5e75fd75b47f3f7d0d560aefa0cbdd71be4aa..6ce2c9edbc452ad9416763ed2b67e9fcf019dd6a 100644 (file)
@@ -5310,7 +5310,7 @@ void LoadGlobalViaContextStub::Generate(MacroAssembler* masm) {
 
   // Go up context chain to the script context.
   for (int i = 0; i < depth(); ++i) {
-    __ lw(result_reg, ContextOperand(context_reg, Context::PREVIOUS_INDEX));
+    __ ld(result_reg, ContextOperand(context_reg, Context::PREVIOUS_INDEX));
     context_reg = result_reg;
   }
 
index e81d68f405fc661e134b2564487c6705b40b8a5c..a0925dd6ebee3ba5259e02ce0b203d5d7750b0b0 100644 (file)
@@ -167,6 +167,9 @@ void MacroAssembler::InNewSpace(Register object,
 }
 
 
+// Clobbers object, dst, value, and ra, if (ra_status == kRAHasBeenSaved)
+// The register 'object' contains a heap object pointer.  The heap object
+// tag is shifted away.
 void MacroAssembler::RecordWriteField(
     Register object,
     int offset,
@@ -220,8 +223,7 @@ void MacroAssembler::RecordWriteField(
 }
 
 
-// Will clobber 4 registers: object, map, dst, ip.  The
-// register 'object' contains a heap object pointer.
+// Clobbers object, dst, map, and ra, if (ra_status == kRAHasBeenSaved)
 void MacroAssembler::RecordWriteForMap(Register object,
                                        Register map,
                                        Register dst,
@@ -295,8 +297,8 @@ void MacroAssembler::RecordWriteForMap(Register object,
 }
 
 
-// Will clobber 4 registers: object, address, scratch, ip.  The
-// register 'object' contains a heap object pointer.  The heap object
+// Clobbers object, address, value, and ra, if (ra_status == kRAHasBeenSaved)
+// The register 'object' contains a heap object pointer.  The heap object
 // tag is shifted away.
 void MacroAssembler::RecordWrite(
     Register object,