Revision: 24415
Author:   [email protected]
Date:     Mon Oct  6 13:15:23 2014 UTC
Log:      Remove FLAG_opt_safe_uint32_operations.

It has been turned on by default for a long time, and hydrogenized BinaryOpStubs actually depend on it being turned on.

BUG=v8:3487
LOG=n
[email protected]

Review URL: https://codereview.chromium.org/630023002
https://code.google.com/p/v8/source/detail?r=24415

Modified:
 /branches/bleeding_edge/src/arm/lithium-arm.cc
 /branches/bleeding_edge/src/arm64/lithium-arm64.cc
 /branches/bleeding_edge/src/flag-definitions.h
 /branches/bleeding_edge/src/hydrogen.cc
 /branches/bleeding_edge/src/ia32/lithium-ia32.cc
 /branches/bleeding_edge/src/mips/lithium-mips.cc
 /branches/bleeding_edge/src/mips64/lithium-mips64.cc
 /branches/bleeding_edge/src/x64/lithium-x64.cc
 /branches/bleeding_edge/src/x87/lithium-x87.cc
 /branches/bleeding_edge/test/mjsunit/compiler/shift-shr.js
 /branches/bleeding_edge/test/mjsunit/mjsunit.status

=======================================
--- /branches/bleeding_edge/src/arm/lithium-arm.cc Tue Sep 30 10:29:32 2014 UTC +++ /branches/bleeding_edge/src/arm/lithium-arm.cc Mon Oct 6 13:15:23 2014 UTC
@@ -699,11 +699,7 @@
     // Shift operations can only deoptimize if we do a logical shift
     // by 0 and the result cannot be truncated to int32.
     if (op == Token::SHR && constant_value == 0) {
-      if (FLAG_opt_safe_uint32_operations) {
-        does_deopt = !instr->CheckFlag(HInstruction::kUint32);
-      } else {
-        does_deopt = !instr->CheckUsesForFlag(HValue::kTruncatingToInt32);
-      }
+      does_deopt = !instr->CheckFlag(HInstruction::kUint32);
     }

     LInstruction* result =
=======================================
--- /branches/bleeding_edge/src/arm64/lithium-arm64.cc Tue Sep 30 10:29:32 2014 UTC +++ /branches/bleeding_edge/src/arm64/lithium-arm64.cc Mon Oct 6 13:15:23 2014 UTC
@@ -2236,11 +2236,7 @@
(JSShiftAmountFromHConstant(instr->right()) == 0);
   bool can_deopt = false;
   if ((op == Token::SHR) && right_can_be_zero) {
-    if (FLAG_opt_safe_uint32_operations) {
-      can_deopt = !instr->CheckFlag(HInstruction::kUint32);
-    } else {
-      can_deopt = !instr->CheckUsesForFlag(HValue::kTruncatingToInt32);
-    }
+    can_deopt = !instr->CheckFlag(HInstruction::kUint32);
   }

   LInstruction* result;
=======================================
--- /branches/bleeding_edge/src/flag-definitions.h Thu Oct 2 08:24:48 2014 UTC +++ /branches/bleeding_edge/src/flag-definitions.h Mon Oct 6 13:15:23 2014 UTC
@@ -307,9 +307,6 @@
            "maximum number of escape analysis fix-point iterations")

DEFINE_BOOL(optimize_for_in, true, "optimize functions containing for-in loops")
-DEFINE_BOOL(opt_safe_uint32_operations, true,
- "allow uint32 values on optimize frames if they are used only in "
-            "safe operations")

 DEFINE_BOOL(concurrent_recompilation, true,
             "optimizing hot functions asynchronously on a separate thread")
=======================================
--- /branches/bleeding_edge/src/hydrogen.cc     Thu Oct  2 10:52:12 2014 UTC
+++ /branches/bleeding_edge/src/hydrogen.cc     Mon Oct  6 13:15:23 2014 UTC
@@ -2686,9 +2686,8 @@
   DCHECK(val == NULL);
   HLoadKeyed* load = Add<HLoadKeyed>(
       elements, checked_key, dependency, elements_kind, load_mode);
-  if (FLAG_opt_safe_uint32_operations &&
-      (elements_kind == EXTERNAL_UINT32_ELEMENTS ||
-       elements_kind == UINT32_ELEMENTS)) {
+  if (elements_kind == EXTERNAL_UINT32_ELEMENTS ||
+      elements_kind == UINT32_ELEMENTS) {
     graph()->RecordUint32Instruction(load);
   }
   return load;
@@ -4400,7 +4399,7 @@
   // Must be performed before canonicalization to ensure that Canonicalize
// will not remove semantically meaningful ToInt32 operations e.g. BIT_OR with
   // zero.
-  if (FLAG_opt_safe_uint32_operations) Run<HUint32AnalysisPhase>();
+  Run<HUint32AnalysisPhase>();

   if (FLAG_use_canonicalizing) Run<HCanonicalizePhase>();

@@ -10456,8 +10455,7 @@
         break;
       case Token::SHR:
         instr = AddUncasted<HShr>(left, right);
-        if (FLAG_opt_safe_uint32_operations && instr->IsShr() &&
-            CanBeZero(right)) {
+        if (instr->IsShr() && CanBeZero(right)) {
           graph()->RecordUint32Instruction(instr);
         }
         break;
=======================================
--- /branches/bleeding_edge/src/ia32/lithium-ia32.cc Tue Sep 30 10:29:32 2014 UTC +++ /branches/bleeding_edge/src/ia32/lithium-ia32.cc Mon Oct 6 13:15:23 2014 UTC
@@ -739,11 +739,7 @@
// Shift operations can only deoptimize if we do a logical shift by 0 and
     // the result cannot be truncated to int32.
     if (op == Token::SHR && constant_value == 0) {
-      if (FLAG_opt_safe_uint32_operations) {
-        does_deopt = !instr->CheckFlag(HInstruction::kUint32);
-      } else {
-        does_deopt = !instr->CheckUsesForFlag(HValue::kTruncatingToInt32);
-      }
+      does_deopt = !instr->CheckFlag(HInstruction::kUint32);
     }

     LInstruction* result =
=======================================
--- /branches/bleeding_edge/src/mips/lithium-mips.cc Tue Sep 30 14:37:59 2014 UTC +++ /branches/bleeding_edge/src/mips/lithium-mips.cc Mon Oct 6 13:15:23 2014 UTC
@@ -706,11 +706,7 @@
     // Shift operations can only deoptimize if we do a logical shift
     // by 0 and the result cannot be truncated to int32.
     if (op == Token::SHR && constant_value == 0) {
-      if (FLAG_opt_safe_uint32_operations) {
-        does_deopt = !instr->CheckFlag(HInstruction::kUint32);
-      } else {
-        does_deopt = !instr->CheckUsesForFlag(HValue::kTruncatingToInt32);
-      }
+      does_deopt = !instr->CheckFlag(HInstruction::kUint32);
     }

     LInstruction* result =
=======================================
--- /branches/bleeding_edge/src/mips64/lithium-mips64.cc Tue Sep 30 14:37:59 2014 UTC +++ /branches/bleeding_edge/src/mips64/lithium-mips64.cc Mon Oct 6 13:15:23 2014 UTC
@@ -706,11 +706,7 @@
     // Shift operations can only deoptimize if we do a logical shift
     // by 0 and the result cannot be truncated to int32.
     if (op == Token::SHR && constant_value == 0) {
-      if (FLAG_opt_safe_uint32_operations) {
-        does_deopt = !instr->CheckFlag(HInstruction::kUint32);
-      } else {
-        does_deopt = !instr->CheckUsesForFlag(HValue::kTruncatingToInt32);
-      }
+      does_deopt = !instr->CheckFlag(HInstruction::kUint32);
     }

     LInstruction* result =
=======================================
--- /branches/bleeding_edge/src/x64/lithium-x64.cc Tue Sep 30 10:29:32 2014 UTC +++ /branches/bleeding_edge/src/x64/lithium-x64.cc Mon Oct 6 13:15:23 2014 UTC
@@ -722,11 +722,7 @@
// Shift operations can only deoptimize if we do a logical shift by 0 and
     // the result cannot be truncated to int32.
     if (op == Token::SHR && constant_value == 0) {
-      if (FLAG_opt_safe_uint32_operations) {
-        does_deopt = !instr->CheckFlag(HInstruction::kUint32);
-      } else {
-        does_deopt = !instr->CheckUsesForFlag(HValue::kTruncatingToInt32);
-      }
+      does_deopt = !instr->CheckFlag(HInstruction::kUint32);
     }

     LInstruction* result =
=======================================
--- /branches/bleeding_edge/src/x87/lithium-x87.cc Tue Sep 30 10:29:32 2014 UTC +++ /branches/bleeding_edge/src/x87/lithium-x87.cc Mon Oct 6 13:15:23 2014 UTC
@@ -736,11 +736,7 @@
// Shift operations can only deoptimize if we do a logical shift by 0 and
     // the result cannot be truncated to int32.
     if (op == Token::SHR && constant_value == 0) {
-      if (FLAG_opt_safe_uint32_operations) {
-        does_deopt = !instr->CheckFlag(HInstruction::kUint32);
-      } else {
-        does_deopt = !instr->CheckUsesForFlag(HValue::kTruncatingToInt32);
-      }
+      does_deopt = !instr->CheckFlag(HInstruction::kUint32);
     }

     LInstruction* result =
=======================================
--- /branches/bleeding_edge/test/mjsunit/compiler/shift-shr.js Wed Aug 20 14:58:18 2014 UTC +++ /branches/bleeding_edge/test/mjsunit/compiler/shift-shr.js Mon Oct 6 13:15:23 2014 UTC
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.

-// Flags: --allow-natives-syntax --noopt-safe-uint32-operations
+// Flags: --allow-natives-syntax

// Check the results of `left >>> right`. The result is always unsigned (and
 // therefore positive).
=======================================
--- /branches/bleeding_edge/test/mjsunit/mjsunit.status Thu Oct 2 08:37:51 2014 UTC +++ /branches/bleeding_edge/test/mjsunit/mjsunit.status Mon Oct 6 13:15:23 2014 UTC
@@ -51,10 +51,6 @@
   # Issue 3389: deopt_every_n_garbage_collections is unsafe
   'regress/regress-2653': [SKIP],

- # This test relies on --noopt-safe-uint32-operations, which is broken. See
-  # issue 3487 for details.
-  'compiler/shift-shr': [SKIP],
-
##############################################################################
   # TurboFan compiler failures.

--
--
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/d/optout.

Reply via email to