From b7a4c77c17d51ca7f3b87cbce506c26b71bd3b18 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Wed, 9 May 2012 14:10:30 +0200 Subject: [PATCH] mips: Fix the global compare routines for mips The code got broken during the 3.10.1 upgrade. Registers a2 and a3 will hold the maps for a0 and a1. Use the right registers to fetch the map fields. Change-Id: I8678ddd1e6126cca6c80dc811b08a5c1b933cb35 Reviewed-by: Kent Hansen Reviewed-by: Girish Ramakrishnan --- src/3rdparty/v8/src/mips/code-stubs-mips.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/3rdparty/v8/src/mips/code-stubs-mips.cc b/src/3rdparty/v8/src/mips/code-stubs-mips.cc index 381d193..4f67061 100644 --- a/src/3rdparty/v8/src/mips/code-stubs-mips.cc +++ b/src/3rdparty/v8/src/mips/code-stubs-mips.cc @@ -7062,12 +7062,16 @@ void ICCompareStub::GenerateKnownObjects(MacroAssembler* masm) { __ JumpIfSmi(a2, &miss); __ lw(a2, FieldMemOperand(a0, HeapObject::kMapOffset)); __ lw(a3, FieldMemOperand(a1, HeapObject::kMapOffset)); + + // Check object in a0 __ Branch(&miss, ne, a2, Operand(known_map_)); - __ lbu(a2, FieldMemOperand(a0, Map::kBitField2Offset)); + __ lbu(a2, FieldMemOperand(a2, Map::kBitField2Offset)); __ And(a2, a2, Operand(1 << Map::kUseUserObjectComparison)); __ Branch(&miss, eq, a2, Operand(1 << Map::kUseUserObjectComparison)); + + // Check object in a1 __ Branch(&miss, ne, a3, Operand(known_map_)); - __ lbu(a3, FieldMemOperand(a1, Map::kBitField2Offset)); + __ lbu(a3, FieldMemOperand(a3, Map::kBitField2Offset)); __ And(a3, a3, Operand(1 << Map::kUseUserObjectComparison)); __ Branch(&miss, eq, a3, Operand(1 << Map::kUseUserObjectComparison)); -- 2.7.4