Revision: 7243
Author: [email protected]
Date: Thu Mar 17 08:46:42 2011
Log: Emit slightly more compact code in untag double.
Review URL: http://codereview.chromium.org/6677111
http://code.google.com/p/v8/source/detail?r=7243
Modified:
/branches/bleeding_edge/src/assembler.cc
/branches/bleeding_edge/src/assembler.h
/branches/bleeding_edge/src/ia32/lithium-codegen-ia32.cc
=======================================
--- /branches/bleeding_edge/src/assembler.cc Wed Mar 2 06:40:38 2011
+++ /branches/bleeding_edge/src/assembler.cc Thu Mar 17 08:46:42 2011
@@ -67,6 +67,7 @@
const double DoubleConstant::min_int = kMinInt;
const double DoubleConstant::one_half = 0.5;
const double DoubleConstant::minus_zero = -0.0;
+const double DoubleConstant::nan = OS::nan_value();
const double DoubleConstant::negative_infinity = -V8_INFINITY;
const char* RelocInfo::kFillerCommentString = "DEOPTIMIZATION PADDING";
@@ -743,6 +744,12 @@
return ExternalReference(reinterpret_cast<void*>(
const_cast<double*>(&DoubleConstant::negative_infinity)));
}
+
+
+ExternalReference ExternalReference::address_of_nan() {
+ return ExternalReference(reinterpret_cast<void*>(
+ const_cast<double*>(&DoubleConstant::nan)));
+}
#ifndef V8_INTERPRETED_REGEXP
=======================================
--- /branches/bleeding_edge/src/assembler.h Wed Mar 2 06:40:38 2011
+++ /branches/bleeding_edge/src/assembler.h Thu Mar 17 08:46:42 2011
@@ -53,6 +53,7 @@
static const double one_half;
static const double minus_zero;
static const double negative_infinity;
+ static const double nan;
};
@@ -590,6 +591,7 @@
static ExternalReference address_of_one_half();
static ExternalReference address_of_minus_zero();
static ExternalReference address_of_negative_infinity();
+ static ExternalReference address_of_nan();
static ExternalReference math_sin_double_function();
static ExternalReference math_cos_double_function();
=======================================
--- /branches/bleeding_edge/src/ia32/lithium-codegen-ia32.cc Thu Mar 17
07:30:48 2011
+++ /branches/bleeding_edge/src/ia32/lithium-codegen-ia32.cc Thu Mar 17
08:46:42 2011
@@ -3276,10 +3276,8 @@
DeoptimizeIf(not_equal, env);
// Convert undefined to NaN.
- __ push(input_reg);
- __ mov(input_reg, Factory::nan_value());
- __ movdbl(result_reg, FieldOperand(input_reg, HeapNumber::kValueOffset));
- __ pop(input_reg);
+ ExternalReference nan = ExternalReference::address_of_nan();
+ __ movdbl(result_reg, Operand::StaticVariable(nan));
__ jmp(&done);
// Heap number to XMM conversion.
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev