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

Unified Diff: test/mjsunit/array-feedback.js

Issue 300693002: Revert "Customized support for feedback on calls to Array." and follow-up fixes. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 7 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
« no previous file with comments | « test/mjsunit/array-constructor-feedback.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/array-feedback.js
diff --git a/test/mjsunit/array-feedback.js b/test/mjsunit/array-feedback.js
index cb91995230215f291c96437886c4d182969d084e..4129be1f880cb7974ec15d784707b1e2412fea0f 100644
--- a/test/mjsunit/array-feedback.js
+++ b/test/mjsunit/array-feedback.js
@@ -85,69 +85,69 @@ if (support_smi_only_arrays) {
// Verify that basic elements kind feedback works for non-constructor
// array calls (as long as the call is made through an IC, and not
// a CallStub).
- (function (){
- function create0() {
- return Array();
- }
-
- // Calls through ICs need warm up through uninitialized, then
- // premonomorphic first.
- create0();
- a = create0();
- assertKind(elements_kind.fast_smi_only, a);
- a[0] = 3.5;
- b = create0();
- assertKind(elements_kind.fast_double, b);
-
- function create1(arg) {
- return Array(arg);
- }
-
- create1(0);
- create1(0);
- a = create1(0);
- assertFalse(isHoley(a));
- assertKind(elements_kind.fast_smi_only, a);
- a[0] = "hello";
- b = create1(10);
- assertTrue(isHoley(b));
- assertKind(elements_kind.fast, b);
-
- a = create1(100000);
- assertKind(elements_kind.dictionary, a);
-
- function create3(arg1, arg2, arg3) {
- return Array(arg1, arg2, arg3);
- }
-
- create3(1,2,3);
- create3(1,2,3);
- a = create3(1,2,3);
- a[0] = 3.035;
- assertKind(elements_kind.fast_double, a);
- b = create3(1,2,3);
- assertKind(elements_kind.fast_double, b);
- assertFalse(isHoley(b));
- })();
+ // (function (){
+ // function create0() {
+ // return Array();
+ // }
+
+ // // Calls through ICs need warm up through uninitialized, then
+ // // premonomorphic first.
+ // create0();
+ // create0();
+ // a = create0();
+ // assertKind(elements_kind.fast_smi_only, a);
+ // a[0] = 3.5;
+ // b = create0();
+ // assertKind(elements_kind.fast_double, b);
+
+ // function create1(arg) {
+ // return Array(arg);
+ // }
+
+ // create1(0);
+ // create1(0);
+ // a = create1(0);
+ // assertFalse(isHoley(a));
+ // assertKind(elements_kind.fast_smi_only, a);
+ // a[0] = "hello";
+ // b = create1(10);
+ // assertTrue(isHoley(b));
+ // assertKind(elements_kind.fast, b);
+
+ // a = create1(100000);
+ // assertKind(elements_kind.dictionary, a);
+
+ // function create3(arg1, arg2, arg3) {
+ // return Array(arg1, arg2, arg3);
+ // }
+
+ // create3();
+ // create3();
+ // a = create3(1,2,3);
+ // a[0] = 3.5;
+ // b = create3(1,2,3);
+ // assertKind(elements_kind.fast_double, b);
+ // assertFalse(isHoley(b));
+ // })();
// Verify that keyed calls work
- (function (){
- function create0(name) {
- return this[name]();
- }
-
- name = "Array";
- create0(name);
- create0(name);
- a = create0(name);
- a[0] = 3.5;
- b = create0(name);
- assertKind(elements_kind.fast_double, b);
- })();
-
-
- // Verify that crankshaft consumes type feedback.
+ // (function (){
+ // function create0(name) {
+ // return this[name]();
+ // }
+
+ // name = "Array";
+ // create0(name);
+ // create0(name);
+ // a = create0(name);
+ // a[0] = 3.5;
+ // b = create0(name);
+ // assertKind(elements_kind.fast_double, b);
+ // })();
+
+
+ // Verify that the IC can't be spoofed by patching
(function (){
function create0() {
return Array();
@@ -156,40 +156,41 @@ if (support_smi_only_arrays) {
create0();
create0();
a = create0();
- a[0] = 3.5;
- %OptimizeFunctionOnNextCall(create0);
- create0();
- create0();
+ assertKind(elements_kind.fast_smi_only, a);
+ var oldArray = this.Array;
+ this.Array = function() { return ["hi"]; };
b = create0();
- assertKind(elements_kind.fast_double, b);
- assertOptimized(create0);
-
- function create1(arg) {
- return Array(arg);
- }
+ assertEquals(["hi"], b);
+ this.Array = oldArray;
+ })();
- create1(8);
- create1(8);
- a = create1(8);
- a[0] = 3.5;
- %OptimizeFunctionOnNextCall(create1);
- b = create1(8);
- assertKind(elements_kind.fast_double, b);
- assertOptimized(create1);
-
- function createN(arg1, arg2, arg3) {
- return Array(arg1, arg2, arg3);
- }
+ // Verify that calls are still made through an IC after crankshaft,
+ // though the type information is reset.
+ // TODO(mvstanton): instead, consume the type feedback gathered up
+ // until crankshaft time.
+ // (function (){
+ // function create0() {
+ // return Array();
+ // }
+
+ // create0();
+ // create0();
+ // a = create0();
+ // a[0] = 3.5;
+ // %OptimizeFunctionOnNextCall(create0);
+ // create0();
+ // // This test only makes sense if crankshaft is allowed
+ // if (4 != %GetOptimizationStatus(create0)) {
+ // create0();
+ // b = create0();
+ // assertKind(elements_kind.fast_smi_only, b);
+ // b[0] = 3.5;
+ // c = create0();
+ // assertKind(elements_kind.fast_double, c);
+ // assertOptimized(create0);
+ // }
+ // })();
- createN(1, 2, 3);
- createN(1, 2, 3);
- a = createN(1, 2, 3);
- a[0] = 3.5;
- %OptimizeFunctionOnNextCall(createN);
- b = createN(1, 2, 3);
- assertKind(elements_kind.fast_double, b);
- assertOptimized(createN);
- })();
// Verify that cross context calls work
(function (){
« no previous file with comments | « test/mjsunit/array-constructor-feedback.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698