Revision: 23642
Author:   [email protected]
Date:     Wed Sep  3 11:35:19 2014 UTC
Log:      Fix typed lowering of JSToBoolean on number inputs.

[email protected]
TEST=cctest/test-js-typed-lowering/JSToBoolean_replacement

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

Modified:
 /branches/bleeding_edge/src/compiler/js-typed-lowering.cc
 /branches/bleeding_edge/test/cctest/compiler/test-js-typed-lowering.cc

=======================================
--- /branches/bleeding_edge/src/compiler/js-typed-lowering.cc Tue Sep 2 12:46:37 2014 UTC +++ /branches/bleeding_edge/src/compiler/js-typed-lowering.cc Wed Sep 3 11:35:19 2014 UTC
@@ -491,10 +491,7 @@
     Node* cmp = graph()->NewNode(simplified()->NumberEqual(), input,
                                  jsgraph()->ZeroConstant());
     Node* inv = graph()->NewNode(simplified()->BooleanNot(), cmp);
-    ReplaceEagerly(input, inv);
- // TODO(titzer): Ugly. ReplaceEagerly smashes all uses. Smash it back here.
-    cmp->ReplaceInput(0, input);
-    return Changed(inv);
+    return ReplaceWith(inv);
   }
   // TODO(turbofan): js-typed-lowering of ToBoolean(string)
   return NoChange();
=======================================
--- /branches/bleeding_edge/test/cctest/compiler/test-js-typed-lowering.cc Mon Sep 1 12:17:43 2014 UTC +++ /branches/bleeding_edge/test/cctest/compiler/test-js-typed-lowering.cc Wed Sep 3 11:35:19 2014 UTC
@@ -506,7 +506,8 @@
 TEST(JSToBoolean_replacement) {
   JSTypedLoweringTester R;

-  Type* types[] = {Type::Null(), Type::Undefined(), Type::Boolean(),
+  Type* types[] = {Type::Null(),             Type::Undefined(),
+                   Type::Boolean(),          Type::Number(),
                    Type::DetectableObject(), Type::Undetectable()};

   for (size_t i = 0; i < arraysize(types); i++) {
@@ -521,6 +522,8 @@

     if (types[i]->Is(Type::Boolean())) {
       CHECK_EQ(n, r);
+    } else if (types[i]->Is(Type::Number())) {
+      CHECK_EQ(IrOpcode::kBooleanNot, r->opcode());
     } else {
       CHECK_EQ(IrOpcode::kHeapConstant, r->opcode());
     }

--
--
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