| Index: src/arm64/code-stubs-arm64.cc | 
| diff --git a/src/arm64/code-stubs-arm64.cc b/src/arm64/code-stubs-arm64.cc | 
| index d3493833ef4d6eca6c3b3b5e1f8d05b19ff07b2f..4b1cab0e3651594e75e818d6ce38bac30744fd3d 100644 | 
| --- a/src/arm64/code-stubs-arm64.cc | 
| +++ b/src/arm64/code-stubs-arm64.cc | 
| @@ -221,6 +221,7 @@ static void EmitIdenticalObjectComparison(MacroAssembler* masm, Register left, | 
| // Smis.  If it's not a heap number, then return equal. | 
| Register right_type = scratch; | 
| if ((cond == lt) || (cond == gt)) { | 
| +    Label not_simd; | 
| // Call runtime on identical JSObjects.  Otherwise return equal. | 
| __ JumpIfObjectType(right, right_type, right_type, FIRST_SPEC_OBJECT_TYPE, | 
| slow, ge); | 
| @@ -228,8 +229,11 @@ static void EmitIdenticalObjectComparison(MacroAssembler* masm, Register left, | 
| __ Cmp(right_type, SYMBOL_TYPE); | 
| __ B(eq, slow); | 
| // Call runtime on identical SIMD values since we must throw a TypeError. | 
| -    __ Cmp(right_type, FLOAT32X4_TYPE); | 
| -    __ B(eq, slow); | 
| +    __ Cmp(right_type, FIRST_SIMD128_VALUE_TYPE); | 
| +    __ B(lt, ¬_simd); | 
| +    __ Cmp(right_type, LAST_SIMD128_VALUE_TYPE); | 
| +    __ B(le, slow); | 
| +    __ Bind(¬_simd); | 
| if (is_strong(strength)) { | 
| // Call the runtime on anything that is converted in the semantics, since | 
| // we need to throw a TypeError. Smis have already been ruled out. | 
| @@ -241,6 +245,7 @@ static void EmitIdenticalObjectComparison(MacroAssembler* masm, Register left, | 
| } else if (cond == eq) { | 
| __ JumpIfHeapNumber(right, &heap_number); | 
| } else { | 
| +    Label not_simd; | 
| __ JumpIfObjectType(right, right_type, right_type, HEAP_NUMBER_TYPE, | 
| &heap_number); | 
| // Comparing JS objects with <=, >= is complicated. | 
| @@ -250,8 +255,11 @@ static void EmitIdenticalObjectComparison(MacroAssembler* masm, Register left, | 
| __ Cmp(right_type, SYMBOL_TYPE); | 
| __ B(eq, slow); | 
| // Call runtime on identical SIMD values since we must throw a TypeError. | 
| -    __ Cmp(right_type, FLOAT32X4_TYPE); | 
| -    __ B(eq, slow); | 
| +    __ Cmp(right_type, FIRST_SIMD128_VALUE_TYPE); | 
| +    __ B(lt, ¬_simd); | 
| +    __ Cmp(right_type, LAST_SIMD128_VALUE_TYPE); | 
| +    __ B(le, slow); | 
| +    __ Bind(¬_simd); | 
| if (is_strong(strength)) { | 
| // Call the runtime on anything that is converted in the semantics, | 
| // since we need to throw a TypeError. Smis and heap numbers have | 
|  |