| Index: test/mjsunit/track-fields.js
|
| diff --git a/test/mjsunit/track-fields.js b/test/mjsunit/track-fields.js
|
| index bcf37ae637d06c39646e5c05f7e98aa1497638b7..74389d908ade8ff6324555dfd20ae3a0eca47b77 100644
|
| --- a/test/mjsunit/track-fields.js
|
| +++ b/test/mjsunit/track-fields.js
|
| @@ -261,3 +261,48 @@ 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));
|
|
|