Reviewers: Benedikt Meurer, ulan,

Message:
Fix bug in DoDeferredTaggedToI. Remove a temp register which becomes unused.

Speedup octane/zlib: now arround 5 minutes on simulation.

Description:
ARM64: fix DoDeferredTaggedToI

BUG=

[email protected], [email protected]

Please review this at https://codereview.chromium.org/211063004/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+4, -6 lines):
  M src/arm64/lithium-arm64.cc
  M src/arm64/lithium-codegen-arm64.cc


Index: src/arm64/lithium-arm64.cc
diff --git a/src/arm64/lithium-arm64.cc b/src/arm64/lithium-arm64.cc
index 3d3ae97b0caab0f3c79e9d030a0737502b137a18..60bf51ebbdc7d33170faff92dcf106d777a1f7c4 100644
--- a/src/arm64/lithium-arm64.cc
+++ b/src/arm64/lithium-arm64.cc
@@ -1106,8 +1106,7 @@ LInstruction* LChunkBuilder::DoChange(HChange* instr) {
       } else {
         LOperand* value = UseRegister(instr->value());
         LOperand* temp1 = TempRegister();
-        LOperand* temp2 =
-            instr->CanTruncateToInt32() ? TempRegister() : FixedTemp(d24);
+ LOperand* temp2 = instr->CanTruncateToInt32() ? NULL : FixedTemp(d24); res = DefineAsRegister(new(zone()) LTaggedToI(value, temp1, temp2));
         res = AssignEnvironment(res);
       }
Index: src/arm64/lithium-codegen-arm64.cc
diff --git a/src/arm64/lithium-codegen-arm64.cc b/src/arm64/lithium-codegen-arm64.cc index 5b0b018ab9f148a2cdb77768e42d2779525249ef..578ca5fc9b0160a971e30fcdb40257c83a7154f5 100644
--- a/src/arm64/lithium-codegen-arm64.cc
+++ b/src/arm64/lithium-codegen-arm64.cc
@@ -5517,7 +5517,6 @@ void LCodeGen::DoDeferredTaggedToI(LTaggedToI* instr,

   if (instr->truncating()) {
     Register output = ToRegister(instr->result());
-    Register scratch2 = ToRegister(temp2);
     Label check_bools;

     // If it's not a heap number, jump to undefined check.
@@ -5530,11 +5529,11 @@ void LCodeGen::DoDeferredTaggedToI(LTaggedToI* instr,
     __ Bind(&check_bools);

     Register true_root = output;
-    Register false_root = scratch2;
+    Register false_root = scratch1;
     __ LoadTrueFalseRoots(true_root, false_root);
-    __ Cmp(scratch1, true_root);
+    __ Cmp(input, true_root);
     __ Cset(output, eq);
-    __ Ccmp(scratch1, false_root, ZFlag, ne);
+    __ Ccmp(input, false_root, ZFlag, ne);
     __ B(eq, &done);

     // Output contains zero, undefined is converted to zero for truncating


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to