Fix regression in custom object comparison on arm
authorKent Hansen <kent.hansen@nokia.com>
Wed, 9 May 2012 08:14:54 +0000 (10:14 +0200)
committerQt by Nokia <qt-info@nokia.com>
Wed, 9 May 2012 09:02:13 +0000 (11:02 +0200)
When the "Add custom object compare callback" patch was rebased on
top of V8 3.10.1, a regression was introduced; the
kUseUserObjectComparison flag was fetched from the wrong location.

With this fix, tst_v8::userobjectcompare() passes again on arm.

Change-Id: I7f0dc2cc9d077b2018facb413dbe7a119dd9de5f
Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
src/3rdparty/v8/src/arm/code-stubs-arm.cc

index 136d4ab..dd13f88 100644 (file)
@@ -6810,14 +6810,14 @@ void ICCompareStub::GenerateKnownObjects(MacroAssembler* masm) {
   __ ldr(r3, FieldMemOperand(r1, HeapObject::kMapOffset));
   __ cmp(r2, Operand(known_map_));
   __ b(ne, &miss);
-  __ ldrb(r2, FieldMemOperand(r0, Map::kBitField2Offset));
+  __ ldrb(r2, FieldMemOperand(r2, Map::kBitField2Offset));
   __ and_(r2, r2, Operand(1 << Map::kUseUserObjectComparison));
   __ cmp(r2, Operand(1 << Map::kUseUserObjectComparison));
   __ b(eq, &miss);
   __ cmp(r3, Operand(known_map_));
   __ b(ne, &miss);
-  __ ldrb(r3, FieldMemOperand(r1, Map::kBitField2Offset));
-  __ and_(r3, r2, Operand(1 << Map::kUseUserObjectComparison));
+  __ ldrb(r3, FieldMemOperand(r3, Map::kBitField2Offset));
+  __ and_(r3, r3, Operand(1 << Map::kUseUserObjectComparison));
   __ cmp(r3, Operand(1 << Map::kUseUserObjectComparison));
   __ b(eq, &miss);