Reviewers: jarin,
Description:
[x64] Smi zero can be used as an immediate.
R=ja...@chromium.org
Please review this at https://codereview.chromium.org/1150853009/
Base URL: https://chromium.googlesource.com/v8/v8.git@master
Affected files (+10, -1 lines):
M src/compiler/x64/code-generator-x64.cc
M src/compiler/x64/instruction-selector-x64.cc
Index: src/compiler/x64/code-generator-x64.cc
diff --git a/src/compiler/x64/code-generator-x64.cc
b/src/compiler/x64/code-generator-x64.cc
index
2105d66e4714ba709efc1c1efca36ef31625bf1a..b4d200b39d8056c9b05a83eb7a7a110a94caed0a
100644
--- a/src/compiler/x64/code-generator-x64.cc
+++ b/src/compiler/x64/code-generator-x64.cc
@@ -38,7 +38,12 @@ class X64OperandConverter : public
InstructionOperandConverter {
Operand OutputOperand() { return ToOperand(instr_->Output()); }
Immediate ToImmediate(InstructionOperand* operand) {
- return Immediate(ToConstant(operand).ToInt32());
+ Constant constant = ToConstant(operand);
+ if (constant.type() == Constant::kFloat64) {
+ DCHECK_EQ(0, bit_cast<int64_t>(constant.ToFloat64()));
+ return Immediate(0);
+ }
+ return Immediate(constant.ToInt32());
}
Operand ToOperand(InstructionOperand* op, int extra = 0) {
Index: src/compiler/x64/instruction-selector-x64.cc
diff --git a/src/compiler/x64/instruction-selector-x64.cc
b/src/compiler/x64/instruction-selector-x64.cc
index
df0f8809a7bb87c2c3c33246959cbea2eb8ec2f8..c841acebc0667ea95086a3c29a825650f70d1643
100644
--- a/src/compiler/x64/instruction-selector-x64.cc
+++ b/src/compiler/x64/instruction-selector-x64.cc
@@ -27,6 +27,10 @@ class X64OperandGenerator final : public
OperandGenerator {
const int64_t value = OpParameter<int64_t>(node);
return value == static_cast<int64_t>(static_cast<int32_t>(value));
}
+ case IrOpcode::kNumberConstant: {
+ const double value = OpParameter<double>(node);
+ return bit_cast<int64_t>(value) == 0;
+ }
default:
return false;
}
--
--
v8-dev mailing list
v8-dev@googlegroups.com
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 v8-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.