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.