diff options
Diffstat (limited to 'deps/v8/test/mjsunit/track-fields.js')
-rw-r--r-- | deps/v8/test/mjsunit/track-fields.js | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/track-fields.js b/deps/v8/test/mjsunit/track-fields.js index bcf37ae63..ced006c4f 100644 --- a/deps/v8/test/mjsunit/track-fields.js +++ b/deps/v8/test/mjsunit/track-fields.js @@ -261,3 +261,67 @@ assertEquals(some_object20, obj20); assertEquals(100, o20.smi); assertEquals(100, o20.dbl); assertEquals(100, o20.dbl); + +function attr_mismatch_obj(v, writable) { + var o = {}; + o.some_value = v; + Object.defineProperty(o, "second_value", {value:10, writable:writable}); + return o; +} + +function is_writable(o, p) { + return Object.getOwnPropertyDescriptor(o,p).writable; +} + +var writable = attr_mismatch_obj(10, true); +var non_writable1 = attr_mismatch_obj(10.5, false); +assertTrue(is_writable(writable,"second_value")); +assertFalse(is_writable(non_writable1,"second_value")); +writable.some_value = 20.5; +assertTrue(is_writable(writable,"second_value")); +var non_writable2 = attr_mismatch_obj(10.5, false); +assertTrue(%HaveSameMap(non_writable1, non_writable2)); + +function test_f(v) { + var o = {}; + o.vbf = v; + o.func = test_f; + return o; +} + +function test_fic(o) { + return o.vbf; +} + +var ftest1 = test_f(10); +var ftest2 = test_f(10); +var ftest3 = test_f(10.5); +var ftest4 = test_f(10); +assertFalse(%HaveSameMap(ftest1, ftest3)); +assertTrue(%HaveSameMap(ftest3, ftest4)); +ftest2.func = is_writable; +test_fic(ftest1); +test_fic(ftest2); +test_fic(ftest3); +test_fic(ftest4); +assertTrue(%HaveSameMap(ftest1, ftest3)); +assertTrue(%HaveSameMap(ftest3, ftest4)); + +// Test representations and transition conversions. +function read_first_double(o) { + return o.first_double; +} +var df1 = {}; +df1.first_double=1.6; +read_first_double(df1); +read_first_double(df1); +function some_function1() { return 10; } +var df2 = {}; +df2.first_double = 1.7; +df2.second_function = some_function1; +function some_function2() { return 20; } +var df3 = {}; +df3.first_double = 1.7; +df3.second_function = some_function2; +df1.first_double = 10; +read_first_double(df1); |