Revision: 19684
Author: [email protected]
Date: Thu Mar 6 09:49:10 2014 UTC
Log: Use Representation::Integer32() for smi types on 32-bit-tagged
systems.
BUG=
[email protected]
Review URL: https://codereview.chromium.org/187353005
http://code.google.com/p/v8/source/detail?r=19684
Modified:
/branches/bleeding_edge/src/hydrogen-instructions.cc
/branches/bleeding_edge/src/hydrogen.cc
/branches/bleeding_edge/src/types.cc
/branches/bleeding_edge/test/mjsunit/regress/regress-crbug-349079.js
=======================================
--- /branches/bleeding_edge/src/hydrogen-instructions.cc Tue Mar 4
12:34:04 2014 UTC
+++ /branches/bleeding_edge/src/hydrogen-instructions.cc Thu Mar 6
09:49:10 2014 UTC
@@ -2605,8 +2605,8 @@
void HConstant::Initialize(Representation r) {
if (r.IsNone()) {
- if (has_smi_value_ && SmiValuesAre31Bits()) {
- r = Representation::Smi();
+ if (has_smi_value_) {
+ r = Representation::FromType(Type::Smi());
} else if (has_int32_value_) {
r = Representation::Integer32();
} else if (has_double_value_) {
=======================================
--- /branches/bleeding_edge/src/hydrogen.cc Wed Mar 5 12:45:46 2014 UTC
+++ /branches/bleeding_edge/src/hydrogen.cc Thu Mar 6 09:49:10 2014 UTC
@@ -8741,7 +8741,7 @@
// The input to the count operation is on top of the expression stack.
Representation rep = Representation::FromType(expr->type());
if (rep.IsNone() || rep.IsTagged()) {
- rep = Representation::Smi();
+ rep = Representation::FromType(Type::Smi());
}
if (returns_original_input) {
@@ -8991,14 +8991,8 @@
HValue* HGraphBuilder::EnforceNumberType(HValue* number,
Type* expected) {
- if (expected->Is(Type::Smi())) {
- return AddUncasted<HForceRepresentation>(number,
Representation::Smi());
- }
- if (expected->Is(Type::Signed32())) {
- return AddUncasted<HForceRepresentation>(number,
- Representation::Integer32());
- }
- return number;
+ return AddUncasted<HForceRepresentation>(
+ number, Representation::FromType(expected));
}
=======================================
--- /branches/bleeding_edge/src/types.cc Fri Feb 14 12:34:28 2014 UTC
+++ /branches/bleeding_edge/src/types.cc Thu Mar 6 09:49:10 2014 UTC
@@ -568,7 +568,8 @@
// TODO(rossberg): this does not belong here.
Representation Representation::FromType(Type* type) {
if (type->Is(Type::None())) return Representation::None();
- if (type->Is(Type::Smi())) return Representation::Smi();
+ if (type->Is(Type::Smi())) return SmiValuesAre31Bits()
+ ? Representation::Smi() : Representation::Integer32();
if (type->Is(Type::Signed32())) return Representation::Integer32();
if (type->Is(Type::Number())) return Representation::Double();
return Representation::Tagged();
=======================================
--- /branches/bleeding_edge/test/mjsunit/regress/regress-crbug-349079.js
Wed Mar 5 09:49:07 2014 UTC
+++ /branches/bleeding_edge/test/mjsunit/regress/regress-crbug-349079.js
Thu Mar 6 09:49:10 2014 UTC
@@ -21,3 +21,16 @@
crash();
%OptimizeFunctionOnNextCall(crash);
crash();
+
+function f() {
+ var v1 = 0;
+ var v2 = -0;
+ var t = v2++;
+ v2++;
+ return Math.max(v2++, v1++);
+}
+
+f();
+f();
+%OptimizeFunctionOnNextCall(f);
+f();
--
--
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/groups/opt_out.