summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/watchtower/property-modification.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/watchtower/property-modification.js')
-rw-r--r--js/src/jit-test/tests/watchtower/property-modification.js36
1 files changed, 36 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/watchtower/property-modification.js b/js/src/jit-test/tests/watchtower/property-modification.js
new file mode 100644
index 0000000000..993cb5bdf8
--- /dev/null
+++ b/js/src/jit-test/tests/watchtower/property-modification.js
@@ -0,0 +1,36 @@
+function getLogString(obj) {
+ let log = getWatchtowerLog();
+ return log.map(item => {
+ assertEq(item.object, obj);
+ if (typeof item.extra === "symbol") {
+ item.extra = "<symbol>";
+ }
+ return item.kind + (item.extra ? ": " + item.extra : "");
+ }).join("\n");
+}
+
+function testBasic() {
+ let o = { a: 10 };
+ addWatchtowerTarget(o);
+
+ // modify-prop: a
+ o.a = 12;
+ let p = { a: 15 };
+
+ // modify-prop: a
+ Object.assign(o, p);
+
+ // change-prop: a
+ Object.defineProperty(o, "a", { value: 19 });
+ let log = getLogString(o);
+
+ assertEq(log,
+ `modify-prop: a
+modify-prop: a
+change-prop: a`);
+}
+
+for (var i = 0; i < 20; i++) {
+ console.log(`Iteration ${i}`);
+ testBasic();
+}