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

Unified Diff: test/mjsunit/strong/literals.js

Issue 1158933002: [strong] fix strong array, object prototypes (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 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 | « src/objects.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/strong/literals.js
diff --git a/test/mjsunit/strong/literals.js b/test/mjsunit/strong/literals.js
index a810dcc8cbb7a3f55972f23f38e5b880154b7d46..db608fc626f86045eb5aed5ca5aa8c94188a84b6 100644
--- a/test/mjsunit/strong/literals.js
+++ b/test/mjsunit/strong/literals.js
@@ -8,6 +8,28 @@
'use strict';
+let GeneratorFunctionPrototype = (function*(){}).__proto__;
+
+function assertStrongObject(o) {
+ assertTrue(%IsStrong(o));
+ assertSame(Object.prototype, o.__proto__);
+}
+
+function assertStrongArray(a) {
+ assertTrue(%IsStrong(a));
+ assertSame(Array.prototype, a.__proto__);
+}
+
+function assertStrongFunction(f) {
+ assertTrue(%IsStrong(f));
+ assertSame(Function.prototype, f.__proto__);
+}
+
+function assertStrongGenerator(g) {
+ assertTrue(%IsStrong(g));
+ assertSame(GeneratorFunctionPrototype, g.__proto__);
+}
+
(function WeakObjectLiterals() {
assertTrue(!%IsStrong({}));
assertTrue(!%IsStrong({a: 0, b: 0}));
@@ -24,16 +46,16 @@
(function StrongObjectLiterals() {
'use strong';
- assertTrue(%IsStrong({}));
- assertTrue(%IsStrong({a: 0, b: 0}));
- assertTrue(%IsStrong({a: [], b: {}}));
- assertTrue(%IsStrong({a: [], b: {}}.a));
- assertTrue(%IsStrong({a: [], b: {}}.b));
- assertTrue(%IsStrong({a: {b: {c: {}}}}.a));
- assertTrue(%IsStrong({a: {b: {c: {}}}}.a.b));
- assertTrue(%IsStrong({a: {b: {c: {}}}}.a.b.c));
+ assertStrongObject({});
+ assertStrongObject({a: 0, b: 0});
+ assertStrongObject({a: [], b: {}});
+ assertStrongArray({a: [], b: {}}.a);
+ assertStrongObject({a: [], b: {}}.b);
+ assertStrongObject({a: {b: {c: {}}}}.a);
+ assertStrongObject({a: {b: {c: {}}}}.a.b);
+ assertStrongObject({a: {b: {c: {}}}}.a.b.c);
// Maps for literals with too many properties are not cached.
- assertTrue(%IsStrong({
+ assertStrongObject({
x001: 0, x002: 0, x003: 0, x004: 0, x005: 0,
x006: 0, x007: 0, x008: 0, x009: 0, x010: 0,
x011: 0, x012: 0, x013: 0, x014: 0, x015: 0,
@@ -74,15 +96,15 @@
x186: 0, x187: 0, x188: 0, x189: 0, x190: 0,
x191: 0, x192: 0, x193: 0, x194: 0, x195: 0,
x196: 0, x197: 0, x198: 0, x199: 0, x200: 0,
- }));
- assertTrue(%IsStrong({__proto__: {}, get a() {}, set b(x) {}}));
- assertTrue(%IsStrong({[Date() + ""]: 0, [Symbol()]: 0}));
- assertTrue(%IsStrong({m() { super.m() }}));
+ });
+ assertStrongObject({[Date() + ""]: 0, [Symbol()]: 0});
+ assertStrongObject({m() { super.m() }});
// Object literals with constant functions are treated specially,
// but currently only on the toplevel (using Realm.eval to emulate that).
- assertTrue(%IsStrong({f: function(){}}));
- assertTrue(%IsStrong(Realm.eval(Realm.current(),
- "'use strong'; ({f: function(){}})")));
+ assertStrongObject({f: function(){}});
+ assertStrongObject(Realm.eval(Realm.current(),
+ "'use strong'; ({f: function(){}})"));
+ assertTrue(%IsStrong({__proto__: {}, get a() {}, set b(x) {}}));
})();
(function WeakArrayLiterals(...args) {
@@ -108,12 +130,12 @@
// assertTrue(%IsStrong([]));
// assertTrue(%IsStrong([1, 2, 3]));
// assertTrue(%IsStrong([1, 2, ...[3, 4], 5]));
- assertTrue(%IsStrong([[[]]]));
- assertTrue(%IsStrong([[1], {}, [[3]]]));
- assertTrue(%IsStrong([[1], {}, [[3]]][0]));
- assertTrue(%IsStrong([[1], {}, [[3]]][1]));
- assertTrue(%IsStrong([[1], {}, [[3]]][2]));
- assertTrue(%IsStrong([[1], {}, [[3]]][2][0]));
+ assertStrongArray([[[]]]);
+ assertStrongArray([[1], {}, [[3]]]);
+ assertStrongArray([[1], {}, [[3]]][0]);
+ assertStrongObject([[1], {}, [[3]]][1]);
+ assertStrongArray([[1], {}, [[3]]][2]);
+ assertStrongArray([[1], {}, [[3]]][2][0]);
})();
(function WeakFunctionLiterals() {
@@ -143,50 +165,50 @@
(function StrongFunctionLiterals() {
'use strong';
function f() {}
- assertTrue(%IsStrong(f));
- assertTrue(%IsStrong(function(){}));
- assertTrue(%IsStrong(function f(){}));
- assertTrue(%IsStrong(() => {}));
- assertTrue(%IsStrong(x => x));
- assertTrue(%IsStrong({m(){}}.m));
- assertTrue(%IsStrong(Object.getOwnPropertyDescriptor(
- {get a(){}}, 'a').get));
- assertTrue(%IsStrong(Object.getOwnPropertyDescriptor(
- {set a(x){}}, 'a').set));
- assertTrue(%IsStrong((class {static m(){}}).m));
- assertTrue(%IsStrong(Object.getOwnPropertyDescriptor(
- class {static get a(){}}, 'a').get));
- assertTrue(%IsStrong(Object.getOwnPropertyDescriptor(
- class {static set a(x){}}, 'a').set));
- assertTrue(%IsStrong((new class {m(){}}).m));
- assertTrue(%IsStrong(Object.getOwnPropertyDescriptor(
- (class {get a(){}}).prototype, 'a').get));
- assertTrue(%IsStrong(Object.getOwnPropertyDescriptor(
- (class {set a(x){}}).prototype, 'a').set));
+ assertStrongFunction(f);
+ assertStrongFunction(function(){});
+ assertStrongFunction(function f(){});
+ assertStrongFunction(() => {});
+ assertStrongFunction(x => x);
+ assertStrongFunction({m(){}}.m);
+ assertStrongFunction(Object.getOwnPropertyDescriptor(
+ {get a(){}}, 'a').get);
+ assertStrongFunction(Object.getOwnPropertyDescriptor(
+ {set a(x){}}, 'a').set);
+ assertStrongFunction((class {static m(){}}).m);
+ assertStrongFunction(Object.getOwnPropertyDescriptor(
+ class {static get a(){}}, 'a').get);
+ assertStrongFunction(Object.getOwnPropertyDescriptor(
+ class {static set a(x){}}, 'a').set);
+ assertStrongFunction((new class {m(){}}).m);
+ assertStrongFunction(Object.getOwnPropertyDescriptor(
+ (class {get a(){}}).prototype, 'a').get);
+ assertStrongFunction(Object.getOwnPropertyDescriptor(
+ (class {set a(x){}}).prototype, 'a').set);
})();
(function SelfStrongFunctionLiterals() {
function f() {'use strong'}
- assertTrue(%IsStrong(f));
- assertTrue(%IsStrong(function(){'use strong'}));
- assertTrue(%IsStrong(function f(){'use strong'}));
- assertTrue(%IsStrong(() => {'use strong'}));
- assertTrue(%IsStrong(x => {'use strong'}));
- assertTrue(%IsStrong({m(){'use strong'}}.m));
- assertTrue(%IsStrong(Object.getOwnPropertyDescriptor(
- {get a(){'use strong'}}, 'a').get));
- assertTrue(%IsStrong(Object.getOwnPropertyDescriptor(
- {set a(x){'use strong'}}, 'a').set));
- assertTrue(%IsStrong((class {static m(){'use strong'}}).m));
- assertTrue(%IsStrong(Object.getOwnPropertyDescriptor(
- class {static get a(){'use strong'}}, 'a').get));
- assertTrue(%IsStrong(Object.getOwnPropertyDescriptor(
- class {static set a(x){'use strong'}}, 'a').set));
- assertTrue(%IsStrong((new class {m(){'use strong'}}).m));
- assertTrue(%IsStrong(Object.getOwnPropertyDescriptor(
- (class {get a(){'use strong'}}).prototype, 'a').get));
- assertTrue(%IsStrong(Object.getOwnPropertyDescriptor(
- (class {set a(x){'use strong'}}).prototype, 'a').set));
+ assertStrongFunction(f);
+ assertStrongFunction(function(){'use strong'});
+ assertStrongFunction(function f(){'use strong'});
+ assertStrongFunction(() => {'use strong'});
+ assertStrongFunction(x => {'use strong'});
+ assertStrongFunction({m(){'use strong'}}.m);
+ assertStrongFunction(Object.getOwnPropertyDescriptor(
+ {get a(){'use strong'}}, 'a').get);
+ assertStrongFunction(Object.getOwnPropertyDescriptor(
+ {set a(x){'use strong'}}, 'a').set);
+ assertStrongFunction((class {static m(){'use strong'}}).m);
+ assertStrongFunction(Object.getOwnPropertyDescriptor(
+ class {static get a(){'use strong'}}, 'a').get);
+ assertStrongFunction(Object.getOwnPropertyDescriptor(
+ class {static set a(x){'use strong'}}, 'a').set);
+ assertStrongFunction((new class {m(){'use strong'}}).m);
+ assertStrongFunction(Object.getOwnPropertyDescriptor(
+ (class {get a(){'use strong'}}).prototype, 'a').get);
+ assertStrongFunction(Object.getOwnPropertyDescriptor(
+ (class {set a(x){'use strong'}}).prototype, 'a').set);
})();
(function WeakGeneratorLiterals() {
@@ -202,22 +224,22 @@
(function StrongGeneratorLiterals() {
'use strong';
function* g() {}
- assertTrue(%IsStrong(g));
- assertTrue(%IsStrong(function*(){}));
- assertTrue(%IsStrong(function* g(){}));
- assertTrue(%IsStrong({*m(){}}.m));
- assertTrue(%IsStrong((class {static *m(){}}).m));
- assertTrue(%IsStrong((new class {*m(){}}).m));
+ assertStrongGenerator(g);
+ assertStrongGenerator(function*(){});
+ assertStrongGenerator(function* g(){});
+ assertStrongGenerator({*m(){}}.m);
+ assertStrongGenerator((class {static *m(){}}).m);
+ assertStrongGenerator((new class {*m(){}}).m);
})();
(function SelfStrongGeneratorLiterals() {
function* g() {'use strong'}
- assertTrue(%IsStrong(g));
- assertTrue(%IsStrong(function*(){'use strong'}));
- assertTrue(%IsStrong(function* g(){'use strong'}));
- assertTrue(%IsStrong({*m(){'use strong'}}.m));
- assertTrue(%IsStrong((class {static *m(){'use strong'}}).m));
- assertTrue(%IsStrong((new class {*m(){'use strong'}}).m));
+ assertStrongGenerator(g);
+ assertStrongGenerator(function*(){'use strong'});
+ assertStrongGenerator(function* g(){'use strong'});
+ assertStrongGenerator({*m(){'use strong'}}.m);
+ assertStrongGenerator((class {static *m(){'use strong'}}).m);
+ assertStrongGenerator((new class {*m(){'use strong'}}).m);
})();
(function WeakClassLiterals() {
« no previous file with comments | « src/objects.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698