summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/pic/watch5.js
blob: 6b22951a4af05edcd2aeee9057bd6f8aff6807af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// test against future pic support for symbols

// assignments to watched objects must not be cached
var obj = {};
var x = Symbol.for("x");
obj[x] = 0;
var hits = 0;
obj.watch(x, function (id, oldval, newval) { hits++; return newval; });
for (var i = 0; i < 10; i++)
    obj[x] = i;
assertEq(hits, 10);

// assignments to watched properties via ++ must not be cached
hits = 0;
for (var i = 0; i < 10; i++)
    obj[x]++;
assertEq(hits, 10);

// adding assignment + watchpoint vs. caching
hits = 0;
obj = {};
obj.watch(x, function (id, oldval, newval) { hits++; return newval; });
for (var i = 0; i < 10; i++) {
    obj[x] = 1;
    delete obj[x];
}
assertEq(hits, 10);