ARM: Fix the type recording binary operation stub subtract
authorsgjesse@chromium.org <sgjesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 26 Jan 2011 12:31:35 +0000 (12:31 +0000)
committersgjesse@chromium.org <sgjesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 26 Jan 2011 12:31:35 +0000 (12:31 +0000)
Failure exposed by Sputning tests where the generic case tried to string add for subtract.
Review URL: http://codereview.chromium.org/6339013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6488 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/arm/code-stubs-arm.cc

index 2a40bde..f3be2d3 100644 (file)
@@ -2695,7 +2695,9 @@ void TypeRecordingBinaryOpStub::GenerateGeneric(MacroAssembler* masm) {
   __ bind(&call_runtime);
 
   // Try to add strings before calling runtime.
-  GenerateAddStrings(masm);
+  if (op_ == Token::ADD) {
+    GenerateAddStrings(masm);
+  }
 
   GenericBinaryOpStub stub(op_, mode_, r1, r0);
   __ TailCallStub(&stub);
@@ -2703,6 +2705,8 @@ void TypeRecordingBinaryOpStub::GenerateGeneric(MacroAssembler* masm) {
 
 
 void TypeRecordingBinaryOpStub::GenerateAddStrings(MacroAssembler* masm) {
+  ASSERT(op_ == Token::ADD);
+
   Register left = r1;
   Register right = r0;
   Label call_runtime;