Make escape analysis preserve all representations required by HCompareNumericAndBranch.
authorjarin@chromium.org <jarin@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 12 May 2014 08:43:18 +0000 (08:43 +0000)
committerjarin@chromium.org <jarin@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 12 May 2014 08:43:18 +0000 (08:43 +0000)
R=mstarzinger@chromium.org
BUG=

Review URL: https://codereview.chromium.org/257803012

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21255 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/hydrogen-escape-analysis.cc
test/mjsunit/regress/regress-escape-preserve-smi-representation.js

index 8514d88..4eb2a13 100644 (file)
@@ -144,7 +144,7 @@ HValue* HEscapeAnalysisPhase::NewLoadReplacement(
     HLoadNamedField* load, HValue* load_value) {
   HValue* replacement = load_value;
   Representation representation = load->representation();
-  if (representation.IsSmi()) {
+  if (representation.IsSmiOrInteger32() || representation.IsDouble()) {
     Zone* zone = graph()->zone();
     HInstruction* new_instr =
         HForceRepresentation::New(zone, NULL, load_value, representation);
index 551147e..fd899d6 100644 (file)
@@ -12,7 +12,7 @@ function deepEquals(a, b) {
   if (objectClass === "RegExp") { return (a.toString() === b.toString()); }
   if (objectClass === "Function") return false;
   if (objectClass === "Array") {
-    var elementCount = 0;
+    var elementsCount = 0;
     if (a.length != b.length) { return false; }
     for (var i = 0; i < a.length; i++) {
       if (!deepEquals(a[i], b[i])) return false;
@@ -23,12 +23,11 @@ function deepEquals(a, b) {
 
 
 function __f_1(){
- var __v_0 = [];
- for(var i=0; i<2; i++){
-   var __v_1=[];
-   __v_0.push([])
-   deepEquals(2, __v_0.length);
- }
+  var __v_0 = [];
+  for(var i=0; i<2; i++){
+    __v_0.push([])
+    deepEquals(2, __v_0.length);
+  }
 }
 __f_1();
 %OptimizeFunctionOnNextCall(__f_1);