Reviewers: Jakob,

Message:
PTAL

Description:
Use Representation::Integer32() for smi types on 32-bit-tagged systems.

BUG=

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

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

Affected files (+20, -12 lines):
  M src/hydrogen-instructions.cc
  M src/hydrogen.cc
  M src/types.cc
  M test/mjsunit/regress/regress-crbug-349079.js


Index: src/hydrogen-instructions.cc
diff --git a/src/hydrogen-instructions.cc b/src/hydrogen-instructions.cc
index 05e88c7c358cf950e4e28756e38f0e7f46b793ec..2a2c43a105e0a228bfc351957e31e4825e36bb5d 100644
--- a/src/hydrogen-instructions.cc
+++ b/src/hydrogen-instructions.cc
@@ -2605,8 +2605,8 @@ HConstant::HConstant(ExternalReference reference)

 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_) {
Index: src/hydrogen.cc
diff --git a/src/hydrogen.cc b/src/hydrogen.cc
index 891b58facd058b9b14712fbcc0ed60d6939ec4c4..a7163bf2eb691f4b25305ec34f2ff1e86b33ed65 100644
--- a/src/hydrogen.cc
+++ b/src/hydrogen.cc
@@ -8741,7 +8741,7 @@ HInstruction* HOptimizedGraphBuilder::BuildIncrement(
   // 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 @@ bool CanBeZero(HValue* right) {

 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));
 }


Index: src/types.cc
diff --git a/src/types.cc b/src/types.cc
index 3840e6fd223f72c0210b49a386e3ca4462ef4a0b..755840cd84f746ac46089c09519f0c49fdcac6de 100644
--- a/src/types.cc
+++ b/src/types.cc
@@ -568,7 +568,8 @@ typename TypeImpl<Config>::TypeHandle TypeImpl<Config>::Convert(
 // 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();
Index: test/mjsunit/regress/regress-crbug-349079.js
diff --git a/test/mjsunit/regress/regress-crbug-349079.js b/test/mjsunit/regress/regress-crbug-349079.js index b1076ea435c7d1e66c7bb906bf718b1ba1dc2a7b..822941ae08d80fbe0f292370206f406e44b49987 100644
--- a/test/mjsunit/regress/regress-crbug-349079.js
+++ b/test/mjsunit/regress/regress-crbug-349079.js
@@ -21,3 +21,16 @@ crash();
 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.

Reply via email to