summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/gc/bug-1138390.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/gc/bug-1138390.js')
-rw-r--r--js/src/jit-test/tests/gc/bug-1138390.js28
1 files changed, 28 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/gc/bug-1138390.js b/js/src/jit-test/tests/gc/bug-1138390.js
new file mode 100644
index 000000000..f0f46e2fb
--- /dev/null
+++ b/js/src/jit-test/tests/gc/bug-1138390.js
@@ -0,0 +1,28 @@
+if (!("startgc" in this &&
+ "offThreadCompileScript" in this &&
+ "runOffThreadScript" in this))
+{
+ quit();
+}
+
+if (helperThreadCount() == 0)
+ quit();
+
+gczeal(0);
+gc();
+
+// Start an incremental GC that includes the atoms zone
+startgc(0);
+var g = newGlobal();
+
+// Start an off thread compilation that will not run until GC has finished
+if ("gcstate" in this)
+ assertEq(gcstate(), "Mark");
+g.offThreadCompileScript('23;', {});
+
+// Wait for the compilation to finish, which must finish the GC first
+assertEq(23, g.runOffThreadScript());
+if ("gcstate" in this)
+ assertEq(gcstate(), "NotActive");
+
+print("done");