summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/regexp/bug-1841771.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/regexp/bug-1841771.js')
-rw-r--r--js/src/jit-test/tests/regexp/bug-1841771.js76
1 files changed, 76 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/regexp/bug-1841771.js b/js/src/jit-test/tests/regexp/bug-1841771.js
new file mode 100644
index 0000000000..ae13aa86f5
--- /dev/null
+++ b/js/src/jit-test/tests/regexp/bug-1841771.js
@@ -0,0 +1,76 @@
+var lfLogBuffer = `
+let hasFunction ;
+for (const name of [, "" ])
+ g55 = newGlobal();
+gcparam('maxBytes', gcparam('gcBytes') );
+//corefuzz-dcd-endofdata
+/*
+//corefuzz-dcd-endofdata
+/**/
+
+
+
+let hasFunction ;
+for (const name of [ "", "", "", ""]) {
+
+
+
+
+
+ const present = name in this;
+ if (!present)
+ thisname = function() {};
+}
+//corefuzz-dcd-endofdata
+//corefuzz-dcd-selectmode 1089924061
+//corefuzz-dcd-endofdata
+oomTest(function() {
+ let m14 = parseModule('a'.replace(/a/, assertEq.toString));
+});
+`;
+lfLogBuffer = lfLogBuffer.split('\n');
+let lfPreamble = `
+ Object.defineProperty(this, "fuzzutils", {
+ value:{
+ untemplate: function(s) {
+ return s.replace(/\\\\/g, '\\\\\\\\').replace(/\`/g, '\\\\\`').replace(/\\\$/g, '\\\\\$');
+ }
+ }
+ });
+function lfFixRedeclaration(lfSrc, lfExc, lfRewriteSet) {
+ let varName;
+ let srcParts = lfSrc.split("\\n");
+ let regReplace = new RegExp;
+ for (let lfIdx = 0; lfIdx < srcParts.length; ++lfIdx)
+ srcParts[lfExc.lineNumber - 1] = srcParts[lfExc.lineNumber - 1].replace(regReplace, varName);
+ return srcParts.join();
+}
+`;
+evaluate(lfPreamble);
+let lfRunTypeId = -1;
+let lfCodeBuffer = "";
+while (true) {
+ let line = lfLogBuffer.shift();
+ if (line == null) break;
+ else if (line == "//corefuzz-dcd-endofdata") {
+ loadFile(lfCodeBuffer);
+ lfCodeBuffer = "";
+ } else lfCodeBuffer += line + "\n";
+}
+loadFile(lfCodeBuffer);
+function loadFile(lfVarx, lfForceRunType = 0, lfPatchSets = []) {
+ try {
+ if (lfVarx.indexOf("//corefuzz-dcd-selectmode ") === 0) {
+ if (lfGCStress);
+ } else {
+ evaluate(lfVarx);
+ }
+ } catch (lfVare) {
+ if (lfVare.toString.indexOf0 >= 0);
+ else if (lfVare.toString().indexOf("redeclaration of ") >= 0) {
+ let lfNewSrc = lfFixRedeclaration(lfVarx, lfVare, lfPatchSets);
+ loadFile(lfNewSrc, lfRunTypeId, lfPatchSets);
+ }
+ lfVarx = fuzzutils.untemplate(lfVarx);
+ }
+}