Index: test/mjsunit/object-literal.js |
diff --git a/test/mjsunit/object-literal.js b/test/mjsunit/object-literal.js |
index 8fdf68d42e1b3e1a5ad8cbb57cfa7c2ccbb022ac..f3727163f6fbcde9469f2ea0b80f40fbaa4f494d 100644 |
--- a/test/mjsunit/object-literal.js |
+++ b/test/mjsunit/object-literal.js |
@@ -25,6 +25,8 @@ |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
+// Flags: --allow-natives-syntax |
+ |
var obj = { |
a: 7, |
b: { x: 12, y: 24 }, |
@@ -301,3 +303,50 @@ TestNumericNamesSetter(['1.2', '1.3'], { |
var l = new Proxy({[prop]: 'my value'}, handler); |
assertEquals('my value', l[prop]); |
})(); |
+ |
+(function TestLiteralWithNullProto() { |
+ // Assume dictionary usage for simple null prototype literal objects, |
+ // this is equivalent to Object.create(null). |
+ var obj = {__proto__:null}; |
+ assertFalse(%HasFastProperties(obj)); |
+ assertEquals(Object.getPrototypeOf(obj), null); |
+ // Once we add inline properties we probably don't want slow properties |
+ // anymore. |
+ obj = {__proto__:null, a:1, b:2}; |
+ assertFalse(%HasFastProperties(obj)); |
+ assertEquals(Object.getPrototypeOf(obj), null); |
+ |
+ obj = {__proto__: null, ["a"]: 1}; |
+ assertFalse(%HasFastProperties(obj)); |
+ assertEquals(Object.getPrototypeOf(obj), null); |
+ |
+ obj = {__proto__: null, a: obj}; |
+ assertFalse(%HasFastProperties(obj)); |
+ assertEquals(Object.getPrototypeOf(obj), null); |
+ |
+ obj = {a:1, b:2, __proto__:null}; |
+ assertFalse(%HasFastProperties(obj)); |
+ assertEquals(Object.getPrototypeOf(obj), null); |
+ |
+ obj = {["a"]: 1, __proto__: null}; |
+ assertFalse(%HasFastProperties(obj)); |
+ assertEquals(Object.getPrototypeOf(obj), null); |
+ |
+ obj = {a: obj, __proto__: null}; |
+ assertFalse(%HasFastProperties(obj)); |
+ assertEquals(Object.getPrototypeOf(obj), null); |
+})(); |
+ |
+(function TestSlowLiteralOptimized() { |
+ function f() { |
+ return {__proto__:null}; |
+ } |
+ let obj = f(); |
+ assertFalse(%HasFastProperties(obj)); |
+ assertEquals(Object.getPrototypeOf(obj), null); |
+ |
+ %OptimizeFunctionOnNextCall(f); |
+ obj = f(); |
+ assertFalse(%HasFastProperties(obj)); |
+ assertEquals(Object.getPrototypeOf(obj), null); |
+})(); |