Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(291)

Unified Diff: test/mjsunit/compiler/inline-arguments.js

Issue 9837002: Support arguments object access from inlined functions. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: revert heap.cc Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« src/ia32/lithium-codegen-ia32.cc ('K') | « src/x64/lithium-x64.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/compiler/inline-arguments.js
diff --git a/test/mjsunit/compiler/inline-arguments.js b/test/mjsunit/compiler/inline-arguments.js
index b6adf7f6ccf308da4614ccdbfce3ffeff9472db9..d94c1e573c84982a202db87586907c3805f532fe 100644
--- a/test/mjsunit/compiler/inline-arguments.js
+++ b/test/mjsunit/compiler/inline-arguments.js
@@ -113,3 +113,35 @@ F4(1);
%OptimizeFunctionOnNextCall(test_adaptation);
test_adaptation();
})();
+
+// Test arguments access from the inlined function.
+function uninlinable(v) {
+ assertEquals(0, v);
+ try { } catch (e) { }
+ return 0;
+}
+
+function toarr_inner() {
+ var a = arguments;
+ var marker = a[0];
+ uninlinable(uninlinable(0, 0), marker.x);
+
+ var r = new Array();
+ for (var i = a.length - 1; i >= 1; i--) {
+ r.push(a[i]);
+ }
+
+ return r;
+}
+
+function toarr(marker, a, b, c) {
+ return toarr_inner(marker, a/2, b/2, c/2);
fschneider 2012/03/22 10:30:19 Please also add a test where inlining happens insi
Vyacheslav Egorov (Chromium) 2012/03/22 12:24:53 Done.
+}
+
+var marker = { x: 0 };
+assertArrayEquals([3, 2, 1], toarr(marker, 2, 4, 6));
+assertArrayEquals([3, 2, 1], toarr(marker, 2, 4, 6));
+%OptimizeFunctionOnNextCall(toarr);
+assertArrayEquals([3, 2, 1], toarr(marker, 2, 4, 6));
+delete marker.x;
+assertArrayEquals([3, 2, 1], toarr(marker, 2, 4, 6));
« src/ia32/lithium-codegen-ia32.cc ('K') | « src/x64/lithium-x64.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698