OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
360 TestKeyGet(obj) | 360 TestKeyGet(obj) |
361 TestKeyHas(obj) | 361 TestKeyHas(obj) |
362 TestKeyEnum(obj) | 362 TestKeyEnum(obj) |
363 TestKeyNames(obj) | 363 TestKeyNames(obj) |
364 TestGetOwnPropertySymbols(obj) | 364 TestGetOwnPropertySymbols(obj) |
365 TestKeyDescriptor(obj) | 365 TestKeyDescriptor(obj) |
366 TestKeyDelete(obj) | 366 TestKeyDelete(obj) |
367 } | 367 } |
368 | 368 |
369 | 369 |
| 370 function TestDefineProperties() { |
| 371 var properties = {} |
| 372 for (var i in symbols) { |
| 373 Object.defineProperty( |
| 374 properties, symbols[i], {value: {value: i}, enumerable: i % 2 === 0}) |
| 375 } |
| 376 var o = Object.defineProperties({}, properties) |
| 377 for (var i in symbols) { |
| 378 assertEquals(i % 2 === 0, symbols[i] in o) |
| 379 } |
| 380 } |
| 381 TestDefineProperties() |
| 382 |
| 383 |
| 384 function TestCreate() { |
| 385 var properties = {} |
| 386 for (var i in symbols) { |
| 387 Object.defineProperty( |
| 388 properties, symbols[i], {value: {value: i}, enumerable: i % 2 === 0}) |
| 389 } |
| 390 var o = Object.create(Object.prototype, properties) |
| 391 for (var i in symbols) { |
| 392 assertEquals(i % 2 === 0, symbols[i] in o) |
| 393 } |
| 394 } |
| 395 TestCreate() |
| 396 |
| 397 |
370 function TestCachedKeyAfterScavenge() { | 398 function TestCachedKeyAfterScavenge() { |
371 gc(); | 399 gc(); |
372 // Keyed property lookup are cached. Hereby we assume that the keys are | 400 // Keyed property lookup are cached. Hereby we assume that the keys are |
373 // tenured, so that we only have to clear the cache between mark compacts, | 401 // tenured, so that we only have to clear the cache between mark compacts, |
374 // but not between scavenges. This must also apply for symbol keys. | 402 // but not between scavenges. This must also apply for symbol keys. |
375 var key = Symbol("key"); | 403 var key = Symbol("key"); |
376 var a = {}; | 404 var a = {}; |
377 a[key] = "abc"; | 405 a[key] = "abc"; |
378 | 406 |
379 for (var i = 0; i < 100000; i++) { | 407 for (var i = 0; i < 100000; i++) { |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
459 Realm.shared = symbol1 | 487 Realm.shared = symbol1 |
460 assertSame("x1", Realm.eval(realm, "Symbol.keyFor(Realm.shared)")) | 488 assertSame("x1", Realm.eval(realm, "Symbol.keyFor(Realm.shared)")) |
461 | 489 |
462 var symbol3 = Realm.eval(realm, "Symbol.for('x3')") | 490 var symbol3 = Realm.eval(realm, "Symbol.for('x3')") |
463 assertFalse(symbol1 === symbol3) | 491 assertFalse(symbol1 === symbol3) |
464 assertFalse(symbol2 === symbol3) | 492 assertFalse(symbol2 === symbol3) |
465 assertSame(symbol3, Symbol.for("x3")) | 493 assertSame(symbol3, Symbol.for("x3")) |
466 assertSame("x3", Symbol.keyFor(symbol3)) | 494 assertSame("x3", Symbol.keyFor(symbol3)) |
467 } | 495 } |
468 TestRegistry() | 496 TestRegistry() |
OLD | NEW |