Reviewers: Michael Starzinger,
Description:
Dead code elimination of inlined arguments objects causes wrong deopt info
to be
generated - instead of materializing the arguments, we get 'undefined'.
Golem says the change is perf-neutral.
[email protected]
BUG=
Please review this at https://codereview.chromium.org/208683006/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+8, -6 lines):
M src/hydrogen-instructions.h
A + test/mjsunit/regress/regress-355486.js
Index: src/hydrogen-instructions.h
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h
index
d22cc32f1518ebf00545be935ad77e54ecc9323f..37b507bd92f02ec591040414775344536d653a2f
100644
--- a/src/hydrogen-instructions.h
+++ b/src/hydrogen-instructions.h
@@ -3378,7 +3378,7 @@ class HArgumentsObject V8_FINAL : public
HDematerializedObject {
SetFlag(kIsArguments);
}
- virtual bool IsDeletable() const V8_FINAL V8_OVERRIDE { return true; }
+ virtual bool IsDeletable() const V8_FINAL V8_OVERRIDE { return false; }
};
Index: test/mjsunit/regress/regress-355486.js
diff --git a/test/mjsunit/regress/regress-347542.js
b/test/mjsunit/regress/regress-355486.js
similarity index 64%
copy from test/mjsunit/regress/regress-347542.js
copy to test/mjsunit/regress/regress-355486.js
index
901d798fb7fbea45f0d9f3d8ba6c7a9846bf6dd6..55362a13416335b72bfa1ff92bc29f7a04edbd65
100644
--- a/test/mjsunit/regress/regress-347542.js
+++ b/test/mjsunit/regress/regress-355486.js
@@ -4,8 +4,10 @@
// Flags: --allow-natives-syntax
-function foo() {}
-foo();
-%OptimizeFunctionOnNextCall(foo);
-foo();
-%NeverOptimizeFunction(foo);
+function f() { var v = arguments[0]; }
+function g() { f(); }
+
+g();
+g();
+%OptimizeFunctionOnNextCall(g);
+g();
--
--
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.