Reviewers: titzer,
Description:
Fix HCheckValue::Canonicalize wrt uninitialized HConstant unique.
[email protected]
BUG=348280
LOG=N
Please review this at https://codereview.chromium.org/183383006/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+15, -9 lines):
M src/hydrogen-instructions.cc
A + test/mjsunit/regress/regress-348280.js
Index: src/hydrogen-instructions.cc
diff --git a/src/hydrogen-instructions.cc b/src/hydrogen-instructions.cc
index
a35134952da753ee932fd104ee680e06f5173d2f..1c6f76f3b157313e3a8490494b14a0c92926498a
100644
--- a/src/hydrogen-instructions.cc
+++ b/src/hydrogen-instructions.cc
@@ -1566,10 +1566,11 @@ void HCheckValue::PrintDataTo(StringStream* stream)
{
HValue* HCheckValue::Canonicalize() {
- return (value()->IsConstant() &&
- HConstant::cast(value())->GetUnique() == object_)
- ? NULL
- : this;
+ if (value()->IsConstant()) {
+ Unique<Object> unique = HConstant::cast(value())->GetUnique();
+ if (unique.IsInitialized() && unique == object_) return NULL;
+ }
+ return this;
}
Index: test/mjsunit/regress/regress-348280.js
diff --git a/test/mjsunit/regress/regress-347542.js
b/test/mjsunit/regress/regress-348280.js
similarity index 55%
copy from test/mjsunit/regress/regress-347542.js
copy to test/mjsunit/regress/regress-348280.js
index
901d798fb7fbea45f0d9f3d8ba6c7a9846bf6dd6..319c270bef843c8b5202f3d699b8019ef9cdb1b5
100644
--- a/test/mjsunit/regress/regress-347542.js
+++ b/test/mjsunit/regress/regress-348280.js
@@ -4,8 +4,13 @@
// Flags: --allow-natives-syntax
-function foo() {}
-foo();
-%OptimizeFunctionOnNextCall(foo);
-foo();
-%NeverOptimizeFunction(foo);
+function baz(f) { f(); }
+function goo() {}
+baz(goo);
+baz(goo);
+
+function bar(p) { if (p == 0) baz(1); }
+bar(1);
+bar(1);
+%OptimizeFunctionOnNextCall(bar);
+bar(1);
--
--
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.