MIPS: Use weak cell to embed known map in CompareIC
authorbalazs.kilvady <balazs.kilvady@imgtec.com>
Mon, 2 Feb 2015 19:44:58 +0000 (11:44 -0800)
committerCommit bot <commit-bot@chromium.org>
Mon, 2 Feb 2015 19:45:12 +0000 (19:45 +0000)
Port 246a749a6f7e7e3a025bb032bc0c643656c9b08f

BUG=v8:3663
LOG=N

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

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

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

index 00d9c3c..b0b3272 100644 (file)
@@ -3856,12 +3856,14 @@ void CompareICStub::GenerateObjects(MacroAssembler* masm) {
 
 void CompareICStub::GenerateKnownObjects(MacroAssembler* masm) {
   Label miss;
+  Handle<WeakCell> cell = Map::WeakCellForMap(known_map_);
   __ And(a2, a1, a0);
   __ JumpIfSmi(a2, &miss);
+  __ GetWeakValue(t0, cell);
   __ lw(a2, FieldMemOperand(a0, HeapObject::kMapOffset));
   __ lw(a3, FieldMemOperand(a1, HeapObject::kMapOffset));
-  __ Branch(&miss, ne, a2, Operand(known_map_));
-  __ Branch(&miss, ne, a3, Operand(known_map_));
+  __ Branch(&miss, ne, a2, Operand(t0));
+  __ Branch(&miss, ne, a3, Operand(t0));
 
   __ Ret(USE_DELAY_SLOT);
   __ subu(v0, a0, a1);
index 05bf5f1..efb1fd1 100644 (file)
@@ -3895,12 +3895,14 @@ void CompareICStub::GenerateObjects(MacroAssembler* masm) {
 
 void CompareICStub::GenerateKnownObjects(MacroAssembler* masm) {
   Label miss;
+  Handle<WeakCell> cell = Map::WeakCellForMap(known_map_);
   __ And(a2, a1, a0);
   __ JumpIfSmi(a2, &miss);
+  __ GetWeakValue(a4, cell);
   __ ld(a2, FieldMemOperand(a0, HeapObject::kMapOffset));
   __ ld(a3, FieldMemOperand(a1, HeapObject::kMapOffset));
-  __ Branch(&miss, ne, a2, Operand(known_map_));
-  __ Branch(&miss, ne, a3, Operand(known_map_));
+  __ Branch(&miss, ne, a2, Operand(a4));
+  __ Branch(&miss, ne, a3, Operand(a4));
 
   __ Ret(USE_DELAY_SLOT);
   __ dsubu(v0, a0, a1);