Bug 1518753 part 7 - Replace newGlobal() => newGlobal({newCompartment: true}) in jit-tests that fail with same-compartment realms. r=jorendorff
authorJan de Mooij <jdemooij@mozilla.com>
Sat, 12 Jan 2019 10:50:53 +0000
changeset 453633 83c9c1d0af97
parent 453632 02251eb9e2c1
child 453634 cdcc178f4896
push id35362
push userncsoregi@mozilla.com
push dateSat, 12 Jan 2019 21:35:38 +0000
treeherdermozilla-central@877169d8ef49 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjorendorff
bugs1518753
milestone66.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1518753 part 7 - Replace newGlobal() => newGlobal({newCompartment: true}) in jit-tests that fail with same-compartment realms. r=jorendorff These tests mostly use either the debugger (requires separate compartemnts for debugger/debuggee) or require a new compartment for things like nukeAllCCWs(). Differential Revision: https://phabricator.services.mozilla.com/D16172
js/src/jit-test/tests/arguments/rest-debugger.js
js/src/jit-test/tests/asm.js/testBug1236552.js
js/src/jit-test/tests/asm.js/testBug893519.js
js/src/jit-test/tests/asm.js/testDebugModeDisables.js
js/src/jit-test/tests/auto-regress/bug1147907.js
js/src/jit-test/tests/auto-regress/bug1315943.js
js/src/jit-test/tests/auto-regress/bug1479076.js
js/src/jit-test/tests/auto-regress/bug677386.js
js/src/jit-test/tests/auto-regress/bug677587.js
js/src/jit-test/tests/auto-regress/bug677977.js
js/src/jit-test/tests/auto-regress/bug721497.js
js/src/jit-test/tests/auto-regress/bug797493.js
js/src/jit-test/tests/auto-regress/for-of-iterator-close-debugger.js
js/src/jit-test/tests/baseline/bug1416727.js
js/src/jit-test/tests/baseline/bug836742.js
js/src/jit-test/tests/baseline/bug842431-1.js
js/src/jit-test/tests/baseline/bug842431-2.js
js/src/jit-test/tests/baseline/bug842431-3.js
js/src/jit-test/tests/baseline/bug842432.js
js/src/jit-test/tests/baseline/bug852175.js
js/src/jit-test/tests/baseline/bug857580.js
js/src/jit-test/tests/basic/bug1141154.js
js/src/jit-test/tests/basic/bug713226.js
js/src/jit-test/tests/basic/bug951632.js
js/src/jit-test/tests/basic/properly-remove-timeout-root-before-shutdown.js
js/src/jit-test/tests/basic/testBug895774.js
js/src/jit-test/tests/basic/testGeneratorDieButScopeAlive.js
js/src/jit-test/tests/cacheir/bug1448136.js
js/src/jit-test/tests/collections/bug-743101.js
js/src/jit-test/tests/debug/DebuggeeWouldRun-03.js
js/src/jit-test/tests/debug/DebuggeeWouldRun-04.js
js/src/jit-test/tests/debug/Debugger-adoptDebuggeeValue.js
js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-01.js
js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js
js/src/jit-test/tests/debug/Debugger-clearAllBreakpoints-01.js
js/src/jit-test/tests/debug/Debugger-ctor-01.js
js/src/jit-test/tests/debug/Debugger-ctor-02.js
js/src/jit-test/tests/debug/Debugger-ctor-04.js
js/src/jit-test/tests/debug/Debugger-ctor-05.js
js/src/jit-test/tests/debug/Debugger-debuggees-02.js
js/src/jit-test/tests/debug/Debugger-debuggees-03.js
js/src/jit-test/tests/debug/Debugger-debuggees-04.js
js/src/jit-test/tests/debug/Debugger-debuggees-05.js
js/src/jit-test/tests/debug/Debugger-debuggees-06.js
js/src/jit-test/tests/debug/Debugger-debuggees-08.js
js/src/jit-test/tests/debug/Debugger-debuggees-09.js
js/src/jit-test/tests/debug/Debugger-debuggees-10.js
js/src/jit-test/tests/debug/Debugger-debuggees-11.js
js/src/jit-test/tests/debug/Debugger-debuggees-12.js
js/src/jit-test/tests/debug/Debugger-debuggees-13.js
js/src/jit-test/tests/debug/Debugger-debuggees-14.js
js/src/jit-test/tests/debug/Debugger-debuggees-15.js
js/src/jit-test/tests/debug/Debugger-debuggees-16.js
js/src/jit-test/tests/debug/Debugger-debuggees-17.js
js/src/jit-test/tests/debug/Debugger-debuggees-18.js
js/src/jit-test/tests/debug/Debugger-debuggees-19.js
js/src/jit-test/tests/debug/Debugger-debuggees-20.js
js/src/jit-test/tests/debug/Debugger-debuggees-22.js
js/src/jit-test/tests/debug/Debugger-debuggees-23.js
js/src/jit-test/tests/debug/Debugger-debuggees-24.js
js/src/jit-test/tests/debug/Debugger-debuggees-25.js
js/src/jit-test/tests/debug/Debugger-debuggees-26.js
js/src/jit-test/tests/debug/Debugger-debuggees-27.js
js/src/jit-test/tests/debug/Debugger-debuggees-28.js
js/src/jit-test/tests/debug/Debugger-debuggees-30.js
js/src/jit-test/tests/debug/Debugger-enabled-01.js
js/src/jit-test/tests/debug/Debugger-enabled-02.js
js/src/jit-test/tests/debug/Debugger-findAllGlobals-02.js
js/src/jit-test/tests/debug/Debugger-findObjects-02.js
js/src/jit-test/tests/debug/Debugger-findObjects-03.js
js/src/jit-test/tests/debug/Debugger-findObjects-04.js
js/src/jit-test/tests/debug/Debugger-findObjects-05.js
js/src/jit-test/tests/debug/Debugger-findObjects-06.js
js/src/jit-test/tests/debug/Debugger-findObjects-07.js
js/src/jit-test/tests/debug/Debugger-findObjects-09.js
js/src/jit-test/tests/debug/Debugger-findObjects-10.js
js/src/jit-test/tests/debug/Debugger-findObjects-11.js
js/src/jit-test/tests/debug/Debugger-findScripts-02.js
js/src/jit-test/tests/debug/Debugger-findScripts-03.js
js/src/jit-test/tests/debug/Debugger-findScripts-04.js
js/src/jit-test/tests/debug/Debugger-findScripts-05.js
js/src/jit-test/tests/debug/Debugger-findScripts-06.js
js/src/jit-test/tests/debug/Debugger-findScripts-07.js
js/src/jit-test/tests/debug/Debugger-findScripts-08.js
js/src/jit-test/tests/debug/Debugger-findScripts-10.js
js/src/jit-test/tests/debug/Debugger-findScripts-11.js
js/src/jit-test/tests/debug/Debugger-findScripts-12.js
js/src/jit-test/tests/debug/Debugger-findScripts-14.js
js/src/jit-test/tests/debug/Debugger-findScripts-15.js
js/src/jit-test/tests/debug/Debugger-findScripts-16.js
js/src/jit-test/tests/debug/Debugger-findScripts-17.js
js/src/jit-test/tests/debug/Debugger-findScripts-18.js
js/src/jit-test/tests/debug/Debugger-findScripts-19.js
js/src/jit-test/tests/debug/Debugger-findScripts-20.js
js/src/jit-test/tests/debug/Debugger-findScripts-22.js
js/src/jit-test/tests/debug/Debugger-findScripts-23.js
js/src/jit-test/tests/debug/Debugger-findScripts-24.js
js/src/jit-test/tests/debug/Debugger-findScripts-optimized-out.js
js/src/jit-test/tests/debug/Debugger-findScripts-uncompleted-01.js
js/src/jit-test/tests/debug/Debugger-findScripts-uncompleted-02.js
js/src/jit-test/tests/debug/Debugger-findSources-02.js
js/src/jit-test/tests/debug/Debugger-findSources-03.js
js/src/jit-test/tests/debug/Debugger-getNewestFrame-01.js
js/src/jit-test/tests/debug/Debugger-getNewestFrame-02.js
js/src/jit-test/tests/debug/Debugger-getNewestFrame-03.js
js/src/jit-test/tests/debug/Debugger-getNewestFrame-generators-01.js
js/src/jit-test/tests/debug/Debugger-multi-01.js
js/src/jit-test/tests/debug/Debugger-multi-02.js
js/src/jit-test/tests/debug/Debugger-multi-03.js
js/src/jit-test/tests/debug/Debugger-onEnterFrame-resumption-01.js
js/src/jit-test/tests/debug/Debugger-onEnterFrame-resumption-02.js
js/src/jit-test/tests/debug/Debugger-onEnterFrame-resumption-03.js
js/src/jit-test/tests/debug/Debugger-onEnterFrame-resumption-04.js
js/src/jit-test/tests/debug/Debugger-onEnterFrame-resumption-05.js
js/src/jit-test/tests/debug/Debugger-onNewGlobalObject-13.js
js/src/jit-test/tests/debug/Debugger-onNewGlobalObject-14.js
js/src/jit-test/tests/debug/Debugger-onNewPromise-01.js
js/src/jit-test/tests/debug/Debugger-onNewPromise-02.js
js/src/jit-test/tests/debug/Debugger-onNewPromise-03.js
js/src/jit-test/tests/debug/Debugger-onNewPromise-04.js
js/src/jit-test/tests/debug/Debugger-onNewPromise-05.js
js/src/jit-test/tests/debug/Debugger-onNewPromise-06.js
js/src/jit-test/tests/debug/Debugger-onNewPromise-07.js
js/src/jit-test/tests/debug/Debugger-onPromiseSettled-01.js
js/src/jit-test/tests/debug/Debugger-onPromiseSettled-02.js
js/src/jit-test/tests/debug/Debugger-onPromiseSettled-03.js
js/src/jit-test/tests/debug/Debugger-onPromiseSettled-04.js
js/src/jit-test/tests/debug/Debugger-onPromiseSettled-05.js
js/src/jit-test/tests/debug/Debugger-onPromiseSettled-06.js
js/src/jit-test/tests/debug/Environment-01.js
js/src/jit-test/tests/debug/Environment-02.js
js/src/jit-test/tests/debug/Environment-03.js
js/src/jit-test/tests/debug/Environment-Function-prototype.js
js/src/jit-test/tests/debug/Environment-bug-1431461.js
js/src/jit-test/tests/debug/Environment-callee-01.js
js/src/jit-test/tests/debug/Environment-callee-02.js
js/src/jit-test/tests/debug/Environment-callee-03.js
js/src/jit-test/tests/debug/Environment-callee-04.js
js/src/jit-test/tests/debug/Environment-find-01.js
js/src/jit-test/tests/debug/Environment-find-02.js
js/src/jit-test/tests/debug/Environment-find-03.js
js/src/jit-test/tests/debug/Environment-find-04.js
js/src/jit-test/tests/debug/Environment-find-06.js
js/src/jit-test/tests/debug/Environment-find-07.js
js/src/jit-test/tests/debug/Environment-gc-01.js
js/src/jit-test/tests/debug/Environment-gc-02.js
js/src/jit-test/tests/debug/Environment-gc-03.js
js/src/jit-test/tests/debug/Environment-getVariable-01.js
js/src/jit-test/tests/debug/Environment-getVariable-02.js
js/src/jit-test/tests/debug/Environment-getVariable-03.js
js/src/jit-test/tests/debug/Environment-getVariable-04.js
js/src/jit-test/tests/debug/Environment-getVariable-05.js
js/src/jit-test/tests/debug/Environment-getVariable-06.js
js/src/jit-test/tests/debug/Environment-getVariable-07.js
js/src/jit-test/tests/debug/Environment-getVariable-08.js
js/src/jit-test/tests/debug/Environment-getVariable-09.js
js/src/jit-test/tests/debug/Environment-getVariable-10.js
js/src/jit-test/tests/debug/Environment-getVariable-11.js
js/src/jit-test/tests/debug/Environment-getVariable-12.js
js/src/jit-test/tests/debug/Environment-getVariable-13.js
js/src/jit-test/tests/debug/Environment-getVariable-14.js
js/src/jit-test/tests/debug/Environment-getVariable-15.js
js/src/jit-test/tests/debug/Environment-getVariable-WouldRun.js
js/src/jit-test/tests/debug/Environment-identity-01.js
js/src/jit-test/tests/debug/Environment-identity-02.js
js/src/jit-test/tests/debug/Environment-identity-03.js
js/src/jit-test/tests/debug/Environment-identity-04.js
js/src/jit-test/tests/debug/Environment-identity-05.js
js/src/jit-test/tests/debug/Environment-inspectable-01.js
js/src/jit-test/tests/debug/Environment-names-01.js
js/src/jit-test/tests/debug/Environment-names-02.js
js/src/jit-test/tests/debug/Environment-names-03.js
js/src/jit-test/tests/debug/Environment-nondebuggee.js
js/src/jit-test/tests/debug/Environment-object-01.js
js/src/jit-test/tests/debug/Environment-optimizedOut-01.js
js/src/jit-test/tests/debug/Environment-parent-01.js
js/src/jit-test/tests/debug/Environment-setVariable-01.js
js/src/jit-test/tests/debug/Environment-setVariable-02.js
js/src/jit-test/tests/debug/Environment-setVariable-03.js
js/src/jit-test/tests/debug/Environment-setVariable-04.js
js/src/jit-test/tests/debug/Environment-setVariable-05.js
js/src/jit-test/tests/debug/Environment-setVariable-06.js
js/src/jit-test/tests/debug/Environment-setVariable-07.js
js/src/jit-test/tests/debug/Environment-setVariable-08.js
js/src/jit-test/tests/debug/Environment-setVariable-10.js
js/src/jit-test/tests/debug/Environment-setVariable-11.js
js/src/jit-test/tests/debug/Environment-setVariable-12.js
js/src/jit-test/tests/debug/Environment-setVariable-13.js
js/src/jit-test/tests/debug/Environment-setVariable-WouldRun.js
js/src/jit-test/tests/debug/Environment-type-01.js
js/src/jit-test/tests/debug/Environment-unscopables.js
js/src/jit-test/tests/debug/Environment-variables.js
js/src/jit-test/tests/debug/Frame-01.js
js/src/jit-test/tests/debug/Frame-02.js
js/src/jit-test/tests/debug/Frame-03.js
js/src/jit-test/tests/debug/Frame-arguments-01.js
js/src/jit-test/tests/debug/Frame-arguments-02.js
js/src/jit-test/tests/debug/Frame-arguments-03.js
js/src/jit-test/tests/debug/Frame-arguments-04.js
js/src/jit-test/tests/debug/Frame-arguments-05.js
js/src/jit-test/tests/debug/Frame-arguments-06.js
js/src/jit-test/tests/debug/Frame-arguments-07.js
js/src/jit-test/tests/debug/Frame-environment-01.js
js/src/jit-test/tests/debug/Frame-environment-02.js
js/src/jit-test/tests/debug/Frame-environment-03.js
js/src/jit-test/tests/debug/Frame-environment-04.js
js/src/jit-test/tests/debug/Frame-environment-05.js
js/src/jit-test/tests/debug/Frame-eval-01.js
js/src/jit-test/tests/debug/Frame-eval-02.js
js/src/jit-test/tests/debug/Frame-eval-03.js
js/src/jit-test/tests/debug/Frame-eval-04.js
js/src/jit-test/tests/debug/Frame-eval-05.js
js/src/jit-test/tests/debug/Frame-eval-06.js
js/src/jit-test/tests/debug/Frame-eval-07.js
js/src/jit-test/tests/debug/Frame-eval-08.js
js/src/jit-test/tests/debug/Frame-eval-09.js
js/src/jit-test/tests/debug/Frame-eval-10.js
js/src/jit-test/tests/debug/Frame-eval-11.js
js/src/jit-test/tests/debug/Frame-eval-12.js
js/src/jit-test/tests/debug/Frame-eval-13.js
js/src/jit-test/tests/debug/Frame-eval-14.js
js/src/jit-test/tests/debug/Frame-eval-15.js
js/src/jit-test/tests/debug/Frame-eval-16.js
js/src/jit-test/tests/debug/Frame-eval-17.js
js/src/jit-test/tests/debug/Frame-eval-18.js
js/src/jit-test/tests/debug/Frame-eval-19.js
js/src/jit-test/tests/debug/Frame-eval-20.js
js/src/jit-test/tests/debug/Frame-eval-21.js
js/src/jit-test/tests/debug/Frame-eval-22.js
js/src/jit-test/tests/debug/Frame-eval-23.js
js/src/jit-test/tests/debug/Frame-eval-24.js
js/src/jit-test/tests/debug/Frame-eval-26.js
js/src/jit-test/tests/debug/Frame-eval-27.js
js/src/jit-test/tests/debug/Frame-eval-28.js
js/src/jit-test/tests/debug/Frame-eval-stack.js
js/src/jit-test/tests/debug/Frame-evalWithBindings-01.js
js/src/jit-test/tests/debug/Frame-evalWithBindings-02.js
js/src/jit-test/tests/debug/Frame-evalWithBindings-03.js
js/src/jit-test/tests/debug/Frame-evalWithBindings-04.js
js/src/jit-test/tests/debug/Frame-evalWithBindings-05.js
js/src/jit-test/tests/debug/Frame-evalWithBindings-06.js
js/src/jit-test/tests/debug/Frame-evalWithBindings-07.js
js/src/jit-test/tests/debug/Frame-evalWithBindings-08.js
js/src/jit-test/tests/debug/Frame-evalWithBindings-09.js
js/src/jit-test/tests/debug/Frame-evalWithBindings-10.js
js/src/jit-test/tests/debug/Frame-evalWithBindings-11.js
js/src/jit-test/tests/debug/Frame-evalWithBindings-12.js
js/src/jit-test/tests/debug/Frame-evalWithBindings-13.js
js/src/jit-test/tests/debug/Frame-evalWithBindings-14.js
js/src/jit-test/tests/debug/Frame-evalWithBindings-15.js
js/src/jit-test/tests/debug/Frame-identity-01.js
js/src/jit-test/tests/debug/Frame-identity-02.js
js/src/jit-test/tests/debug/Frame-identity-03.js
js/src/jit-test/tests/debug/Frame-identity-04.js
js/src/jit-test/tests/debug/Frame-identity-05.js
js/src/jit-test/tests/debug/Frame-identity-06.js
js/src/jit-test/tests/debug/Frame-identity-07.js
js/src/jit-test/tests/debug/Frame-implementation-01.js
js/src/jit-test/tests/debug/Frame-implementation-02.js
js/src/jit-test/tests/debug/Frame-live-01.js
js/src/jit-test/tests/debug/Frame-live-02.js
js/src/jit-test/tests/debug/Frame-live-03.js
js/src/jit-test/tests/debug/Frame-live-04.js
js/src/jit-test/tests/debug/Frame-live-05.js
js/src/jit-test/tests/debug/Frame-live-06.js
js/src/jit-test/tests/debug/Frame-live-07.js
js/src/jit-test/tests/debug/Frame-newTargetEval-01.js
js/src/jit-test/tests/debug/Frame-newTargetEval-02.js
js/src/jit-test/tests/debug/Frame-newTargetOverflow-01.js
js/src/jit-test/tests/debug/Frame-offset-01.js
js/src/jit-test/tests/debug/Frame-offset-02.js
js/src/jit-test/tests/debug/Frame-older-01.js
js/src/jit-test/tests/debug/Frame-older-generators-01.js
js/src/jit-test/tests/debug/Frame-older-generators-02.js
js/src/jit-test/tests/debug/Frame-onPop-01.js
js/src/jit-test/tests/debug/Frame-onPop-02.js
js/src/jit-test/tests/debug/Frame-onPop-03.js
js/src/jit-test/tests/debug/Frame-onPop-04.js
js/src/jit-test/tests/debug/Frame-onPop-05.js
js/src/jit-test/tests/debug/Frame-onPop-06.js
js/src/jit-test/tests/debug/Frame-onPop-07.js
js/src/jit-test/tests/debug/Frame-onPop-08.js
js/src/jit-test/tests/debug/Frame-onPop-09.js
js/src/jit-test/tests/debug/Frame-onPop-10.js
js/src/jit-test/tests/debug/Frame-onPop-11.js
js/src/jit-test/tests/debug/Frame-onPop-12.js
js/src/jit-test/tests/debug/Frame-onPop-13.js
js/src/jit-test/tests/debug/Frame-onPop-14.js
js/src/jit-test/tests/debug/Frame-onPop-15.js
js/src/jit-test/tests/debug/Frame-onPop-16.js
js/src/jit-test/tests/debug/Frame-onPop-17.js
js/src/jit-test/tests/debug/Frame-onPop-18.js
js/src/jit-test/tests/debug/Frame-onPop-19.js
js/src/jit-test/tests/debug/Frame-onPop-20.js
js/src/jit-test/tests/debug/Frame-onPop-21.js
js/src/jit-test/tests/debug/Frame-onPop-23.js
js/src/jit-test/tests/debug/Frame-onPop-after-debugger-return.js
js/src/jit-test/tests/debug/Frame-onPop-async-01.js
js/src/jit-test/tests/debug/Frame-onPop-disabled.js
js/src/jit-test/tests/debug/Frame-onPop-error-error.js
js/src/jit-test/tests/debug/Frame-onPop-error-return.js
js/src/jit-test/tests/debug/Frame-onPop-error-scope-unwind-01.js
js/src/jit-test/tests/debug/Frame-onPop-error-scope-unwind-02.js
js/src/jit-test/tests/debug/Frame-onPop-error-throw.js
js/src/jit-test/tests/debug/Frame-onPop-error.js
js/src/jit-test/tests/debug/Frame-onPop-generator-resumption-01.js
js/src/jit-test/tests/debug/Frame-onPop-generators-01.js
js/src/jit-test/tests/debug/Frame-onPop-generators-02.js
js/src/jit-test/tests/debug/Frame-onPop-generators-03.js
js/src/jit-test/tests/debug/Frame-onPop-generators-04.js
js/src/jit-test/tests/debug/Frame-onPop-generators-05.js
js/src/jit-test/tests/debug/Frame-onPop-multiple-01.js
js/src/jit-test/tests/debug/Frame-onPop-multiple-02.js
js/src/jit-test/tests/debug/Frame-onPop-multiple-03.js
js/src/jit-test/tests/debug/Frame-onPop-multiple-04.js
js/src/jit-test/tests/debug/Frame-onPop-return-error.js
js/src/jit-test/tests/debug/Frame-onPop-return-return.js
js/src/jit-test/tests/debug/Frame-onPop-return-throw.js
js/src/jit-test/tests/debug/Frame-onPop-return.js
js/src/jit-test/tests/debug/Frame-onPop-throw-error.js
js/src/jit-test/tests/debug/Frame-onPop-throw-return.js
js/src/jit-test/tests/debug/Frame-onPop-throw-throw.js
js/src/jit-test/tests/debug/Frame-onPop-throw.js
js/src/jit-test/tests/debug/Frame-onStep-01.js
js/src/jit-test/tests/debug/Frame-onStep-02.js
js/src/jit-test/tests/debug/Frame-onStep-03.js
js/src/jit-test/tests/debug/Frame-onStep-04.js
js/src/jit-test/tests/debug/Frame-onStep-05.js
js/src/jit-test/tests/debug/Frame-onStep-06.js
js/src/jit-test/tests/debug/Frame-onStep-07.js
js/src/jit-test/tests/debug/Frame-onStep-08.js
js/src/jit-test/tests/debug/Frame-onStep-09.js
js/src/jit-test/tests/debug/Frame-onStep-10.js
js/src/jit-test/tests/debug/Frame-onStep-11.js
js/src/jit-test/tests/debug/Frame-onStep-12.js
js/src/jit-test/tests/debug/Frame-onStep-13.js
js/src/jit-test/tests/debug/Frame-onStep-14.js
js/src/jit-test/tests/debug/Frame-onStep-15.js
js/src/jit-test/tests/debug/Frame-onStep-16.js
js/src/jit-test/tests/debug/Frame-onStep-17.js
js/src/jit-test/tests/debug/Frame-onStep-18.js
js/src/jit-test/tests/debug/Frame-onStep-20.js
js/src/jit-test/tests/debug/Frame-onStep-async-01.js
js/src/jit-test/tests/debug/Frame-onStep-async-02.js
js/src/jit-test/tests/debug/Frame-onStep-async-gc-01.js
js/src/jit-test/tests/debug/Frame-onStep-generator-resumption-01.js
js/src/jit-test/tests/debug/Frame-onStep-generators-01.js
js/src/jit-test/tests/debug/Frame-onStep-generators-02.js
js/src/jit-test/tests/debug/Frame-onStep-generators-03.js
js/src/jit-test/tests/debug/Frame-onStep-generators-04.js
js/src/jit-test/tests/debug/Frame-onStep-generators-defaults.js
js/src/jit-test/tests/debug/Frame-onStep-generators-gc-01.js
js/src/jit-test/tests/debug/Frame-onStep-iterators.js
js/src/jit-test/tests/debug/Frame-onStep-lines-01.js
js/src/jit-test/tests/debug/Frame-onStep-resumption-01.js
js/src/jit-test/tests/debug/Frame-onStep-resumption-02.js
js/src/jit-test/tests/debug/Frame-onStep-resumption-03.js
js/src/jit-test/tests/debug/Frame-onStep-resumption-04.js
js/src/jit-test/tests/debug/Frame-onStep-resumption-05.js
js/src/jit-test/tests/debug/Frame-script-01.js
js/src/jit-test/tests/debug/Frame-script-02.js
js/src/jit-test/tests/debug/Frame-script-03.js
js/src/jit-test/tests/debug/Frame-script-environment-nondebuggee.js
js/src/jit-test/tests/debug/Frame-this-01.js
js/src/jit-test/tests/debug/Frame-this-02.js
js/src/jit-test/tests/debug/Frame-this-03.js
js/src/jit-test/tests/debug/Frame-this-04.js
js/src/jit-test/tests/debug/Frame-this-05.js
js/src/jit-test/tests/debug/Frame-this-06.js
js/src/jit-test/tests/debug/Frame-this-07.js
js/src/jit-test/tests/debug/Frame-this-08.js
js/src/jit-test/tests/debug/Frame-this-09.js
js/src/jit-test/tests/debug/Frame-this-10.js
js/src/jit-test/tests/debug/Frame-this-11.js
js/src/jit-test/tests/debug/Frame-this-12.js
js/src/jit-test/tests/debug/Memory-allocationSamplingProbability-01.js
js/src/jit-test/tests/debug/Memory-allocationSamplingProbability-02.js
js/src/jit-test/tests/debug/Memory-allocationsLogOverflowed-01.js
js/src/jit-test/tests/debug/Memory-drainAllocationsLog-01.js
js/src/jit-test/tests/debug/Memory-drainAllocationsLog-03.js
js/src/jit-test/tests/debug/Memory-drainAllocationsLog-04.js
js/src/jit-test/tests/debug/Memory-drainAllocationsLog-05.js
js/src/jit-test/tests/debug/Memory-drainAllocationsLog-06.js
js/src/jit-test/tests/debug/Memory-drainAllocationsLog-07.js
js/src/jit-test/tests/debug/Memory-drainAllocationsLog-08.js
js/src/jit-test/tests/debug/Memory-drainAllocationsLog-09.js
js/src/jit-test/tests/debug/Memory-drainAllocationsLog-10.js
js/src/jit-test/tests/debug/Memory-drainAllocationsLog-11.js
js/src/jit-test/tests/debug/Memory-drainAllocationsLog-12.js
js/src/jit-test/tests/debug/Memory-drainAllocationsLog-13.js
js/src/jit-test/tests/debug/Memory-drainAllocationsLog-14.js
js/src/jit-test/tests/debug/Memory-drainAllocationsLog-15.js
js/src/jit-test/tests/debug/Memory-drainAllocationsLog-16.js
js/src/jit-test/tests/debug/Memory-drainAllocationsLog-17.js
js/src/jit-test/tests/debug/Memory-drainAllocationsLog-18.js
js/src/jit-test/tests/debug/Memory-takeCensus-01.js
js/src/jit-test/tests/debug/Memory-takeCensus-02.js
js/src/jit-test/tests/debug/Memory-takeCensus-03.js
js/src/jit-test/tests/debug/Memory-takeCensus-04.js
js/src/jit-test/tests/debug/Memory-takeCensus-05.js
js/src/jit-test/tests/debug/Memory-takeCensus-06.js
js/src/jit-test/tests/debug/Memory-takeCensus-07.js
js/src/jit-test/tests/debug/Memory-takeCensus-08.js
js/src/jit-test/tests/debug/Memory-takeCensus-09.js
js/src/jit-test/tests/debug/Memory-takeCensus-10.js
js/src/jit-test/tests/debug/Memory-takeCensus-11.js
js/src/jit-test/tests/debug/Memory-takeCensus-12.js
js/src/jit-test/tests/debug/Memory-trackingAllocationSites-01.js
js/src/jit-test/tests/debug/Memory-trackingAllocationSites-02.js
js/src/jit-test/tests/debug/Memory-trackingAllocationSites-03.js
js/src/jit-test/tests/debug/Object-01.js
js/src/jit-test/tests/debug/Object-02.js
js/src/jit-test/tests/debug/Object-apply-01.js
js/src/jit-test/tests/debug/Object-apply-02.js
js/src/jit-test/tests/debug/Object-apply-03.js
js/src/jit-test/tests/debug/Object-apply-04.js
js/src/jit-test/tests/debug/Object-asEnvironment-01.js
js/src/jit-test/tests/debug/Object-boundTargetFunction-01.js
js/src/jit-test/tests/debug/Object-boundTargetFunction-02.js
js/src/jit-test/tests/debug/Object-boundTargetFunction-03.js
js/src/jit-test/tests/debug/Object-callable.js
js/src/jit-test/tests/debug/Object-class.js
js/src/jit-test/tests/debug/Object-defineProperties-01.js
js/src/jit-test/tests/debug/Object-defineProperties-02.js
js/src/jit-test/tests/debug/Object-defineProperties-03.js
js/src/jit-test/tests/debug/Object-defineProperty-01.js
js/src/jit-test/tests/debug/Object-defineProperty-02.js
js/src/jit-test/tests/debug/Object-defineProperty-03.js
js/src/jit-test/tests/debug/Object-defineProperty-04.js
js/src/jit-test/tests/debug/Object-defineProperty-05.js
js/src/jit-test/tests/debug/Object-defineProperty-06.js
js/src/jit-test/tests/debug/Object-defineProperty-07.js
js/src/jit-test/tests/debug/Object-defineProperty-08.js
js/src/jit-test/tests/debug/Object-defineProperty-09.js
js/src/jit-test/tests/debug/Object-defineProperty-10.js
js/src/jit-test/tests/debug/Object-defineProperty-11.js
js/src/jit-test/tests/debug/Object-defineProperty-12.js
js/src/jit-test/tests/debug/Object-defineProperty-13.js
js/src/jit-test/tests/debug/Object-defineProperty-14.js
js/src/jit-test/tests/debug/Object-defineProperty-surfaces-01.js
js/src/jit-test/tests/debug/Object-deleteProperty-01.js
js/src/jit-test/tests/debug/Object-deleteProperty-error-01.js
js/src/jit-test/tests/debug/Object-deleteProperty-error-02.js
js/src/jit-test/tests/debug/Object-displayName-01.js
js/src/jit-test/tests/debug/Object-environment-01.js
js/src/jit-test/tests/debug/Object-environment-02.js
js/src/jit-test/tests/debug/Object-errorLineNumber-errorColumnNumber.js
js/src/jit-test/tests/debug/Object-executeInGlobal-01.js
js/src/jit-test/tests/debug/Object-executeInGlobal-02.js
js/src/jit-test/tests/debug/Object-executeInGlobal-03.js
js/src/jit-test/tests/debug/Object-executeInGlobal-04.js
js/src/jit-test/tests/debug/Object-executeInGlobal-05.js
js/src/jit-test/tests/debug/Object-executeInGlobal-06.js
js/src/jit-test/tests/debug/Object-executeInGlobal-07.js
js/src/jit-test/tests/debug/Object-executeInGlobal-08.js
js/src/jit-test/tests/debug/Object-executeInGlobal-09.js
js/src/jit-test/tests/debug/Object-executeInGlobal-10.js
js/src/jit-test/tests/debug/Object-forceLexicalInitializationByName.js
js/src/jit-test/tests/debug/Object-gc-01.js
js/src/jit-test/tests/debug/Object-getErrorMessageName.js
js/src/jit-test/tests/debug/Object-getOwnPropertyDescriptor-01.js
js/src/jit-test/tests/debug/Object-getOwnPropertyDescriptor-02.js
js/src/jit-test/tests/debug/Object-getOwnPropertyDescriptor-03.js
js/src/jit-test/tests/debug/Object-getOwnPropertyDescriptor-04.js
js/src/jit-test/tests/debug/Object-getOwnPropertyDescriptor-05.js
js/src/jit-test/tests/debug/Object-getOwnPropertyDescriptor-06.js
js/src/jit-test/tests/debug/Object-getOwnPropertyDescriptor-surfaces-01.js
js/src/jit-test/tests/debug/Object-getOwnPropertyDescriptor-surfaces-02.js
js/src/jit-test/tests/debug/Object-getOwnPropertyNames-01.js
js/src/jit-test/tests/debug/Object-getOwnPropertyNames-02.js
js/src/jit-test/tests/debug/Object-getOwnPropertySymbols-01.js
js/src/jit-test/tests/debug/Object-getOwnPropertySymbols-02.js
js/src/jit-test/tests/debug/Object-getProperty-01.js
js/src/jit-test/tests/debug/Object-getProperty-02.js
js/src/jit-test/tests/debug/Object-getProperty-03.js
js/src/jit-test/tests/debug/Object-identity-01.js
js/src/jit-test/tests/debug/Object-identity-02.js
js/src/jit-test/tests/debug/Object-identity-03.js
js/src/jit-test/tests/debug/Object-isArrowFunction.js
js/src/jit-test/tests/debug/Object-makeDebuggeeValue-01.js
js/src/jit-test/tests/debug/Object-makeDebuggeeValue-02.js
js/src/jit-test/tests/debug/Object-name-01.js
js/src/jit-test/tests/debug/Object-name-02.js
js/src/jit-test/tests/debug/Object-parameterNames.js
js/src/jit-test/tests/debug/Object-preventExtensions-01.js
js/src/jit-test/tests/debug/Object-promiseDependentPromises-realms.js
js/src/jit-test/tests/debug/Object-proto.js
js/src/jit-test/tests/debug/Object-proxy.js
js/src/jit-test/tests/debug/Object-script-AsmJSNative.js
js/src/jit-test/tests/debug/Object-script-environment-nondebuggee.js
js/src/jit-test/tests/debug/Object-script-lazy.js
js/src/jit-test/tests/debug/Object-script.js
js/src/jit-test/tests/debug/Object-seal-01.js
js/src/jit-test/tests/debug/Object-setProperty-01.js
js/src/jit-test/tests/debug/Object-setProperty-02.js
js/src/jit-test/tests/debug/Object-setProperty-03.js
js/src/jit-test/tests/debug/Object-unsafeDereference-01.js
js/src/jit-test/tests/debug/Object-unwrap-01.js
js/src/jit-test/tests/debug/Object-unwrap-02.js
js/src/jit-test/tests/debug/Promise-race-dependent-promises.js
js/src/jit-test/tests/debug/RematerializedFrame-retval.js
js/src/jit-test/tests/debug/Script-01.js
js/src/jit-test/tests/debug/Script-clearBreakpoint-01.js
js/src/jit-test/tests/debug/Script-clearBreakpoint-02.js
js/src/jit-test/tests/debug/Script-clearBreakpoint-03.js
js/src/jit-test/tests/debug/Script-clearBreakpoint-04.js
js/src/jit-test/tests/debug/Script-displayName-01.js
js/src/jit-test/tests/debug/Script-format-01.js
js/src/jit-test/tests/debug/Script-gc-01.js
js/src/jit-test/tests/debug/Script-gc-02.js
js/src/jit-test/tests/debug/Script-gc-03.js
js/src/jit-test/tests/debug/Script-getBreakpoints-01.js
js/src/jit-test/tests/debug/Script-getBreakpoints-02.js
js/src/jit-test/tests/debug/Script-getChildScripts-01.js
js/src/jit-test/tests/debug/Script-getChildScripts-02.js
js/src/jit-test/tests/debug/Script-getChildScripts-03.js
js/src/jit-test/tests/debug/Script-getChildScripts-04.js
js/src/jit-test/tests/debug/Script-getChildScripts-05.js
js/src/jit-test/tests/debug/Script-getLineOffsets-01.js
js/src/jit-test/tests/debug/Script-getLineOffsets-02.js
js/src/jit-test/tests/debug/Script-getLineOffsets-03.js
js/src/jit-test/tests/debug/Script-getLineOffsets-04.js
js/src/jit-test/tests/debug/Script-getLineOffsets-05.js
js/src/jit-test/tests/debug/Script-getLineOffsets-06.js
js/src/jit-test/tests/debug/Script-getLineOffsets-07.js
js/src/jit-test/tests/debug/Script-getLineOffsets-08.js
js/src/jit-test/tests/debug/Script-getOffsetLine-01.js
js/src/jit-test/tests/debug/Script-getOffsetLine-02.js
js/src/jit-test/tests/debug/Script-getOffsetLocation.js
js/src/jit-test/tests/debug/Script-getOffsetsCoverage-01.js
js/src/jit-test/tests/debug/Script-getOffsetsCoverage-02.js
js/src/jit-test/tests/debug/Script-getOffsetsCoverage-03.js
js/src/jit-test/tests/debug/Script-getOffsetsCoverage-04.js
js/src/jit-test/tests/debug/Script-getOffsetsCoverage-05.js
js/src/jit-test/tests/debug/Script-getOffsetsCoverage-bug1233178.js
js/src/jit-test/tests/debug/Script-getSuccessorOrPredecessorOffsets-01.js
js/src/jit-test/tests/debug/Script-global-01.js
js/src/jit-test/tests/debug/Script-global-02.js
js/src/jit-test/tests/debug/Script-isInCatchScope.js
js/src/jit-test/tests/debug/Script-isModule-01.js
js/src/jit-test/tests/debug/Script-isModule-02.js
js/src/jit-test/tests/debug/Script-isModule-03.js
js/src/jit-test/tests/debug/Script-isModule-04.js
js/src/jit-test/tests/debug/Script-lineCount.js
js/src/jit-test/tests/debug/Script-mainOffset-01.js
js/src/jit-test/tests/debug/Script-source-01.js
js/src/jit-test/tests/debug/Script-source-02.js
js/src/jit-test/tests/debug/Script-source-03.js
js/src/jit-test/tests/debug/Script-sourceStart-01.js
js/src/jit-test/tests/debug/Script-sourceStart-02.js
js/src/jit-test/tests/debug/Script-sourceStart-03.js
js/src/jit-test/tests/debug/Script-sourceStart-04.js
js/src/jit-test/tests/debug/Script-startLine.js
js/src/jit-test/tests/debug/Script-url.js
js/src/jit-test/tests/debug/Source-element-01.js
js/src/jit-test/tests/debug/Source-element-03.js
js/src/jit-test/tests/debug/Source-introductionScript-01.js
js/src/jit-test/tests/debug/Source-introductionScript-02.js
js/src/jit-test/tests/debug/Source-introductionScript-03.js
js/src/jit-test/tests/debug/Source-introductionType.js
js/src/jit-test/tests/debug/Source-invisible.js
js/src/jit-test/tests/debug/Source-sourceMapURL-deprecated.js
js/src/jit-test/tests/debug/Source-sourceMapURL.js
js/src/jit-test/tests/debug/Source-text-01.js
js/src/jit-test/tests/debug/Source-text-02.js
js/src/jit-test/tests/debug/Source-text-lazy.js
js/src/jit-test/tests/debug/Source-url-01.js
js/src/jit-test/tests/debug/Source-url-02.js
js/src/jit-test/tests/debug/Source-url.js
js/src/jit-test/tests/debug/breakpoint-01.js
js/src/jit-test/tests/debug/breakpoint-02.js
js/src/jit-test/tests/debug/breakpoint-03.js
js/src/jit-test/tests/debug/breakpoint-04.js
js/src/jit-test/tests/debug/breakpoint-05.js
js/src/jit-test/tests/debug/breakpoint-06.js
js/src/jit-test/tests/debug/breakpoint-07.js
js/src/jit-test/tests/debug/breakpoint-08.js
js/src/jit-test/tests/debug/breakpoint-09.js
js/src/jit-test/tests/debug/breakpoint-10.js
js/src/jit-test/tests/debug/breakpoint-11.js
js/src/jit-test/tests/debug/breakpoint-12.js
js/src/jit-test/tests/debug/breakpoint-13.js
js/src/jit-test/tests/debug/breakpoint-14.js
js/src/jit-test/tests/debug/breakpoint-gc-01.js
js/src/jit-test/tests/debug/breakpoint-gc-02.js
js/src/jit-test/tests/debug/breakpoint-gc-04.js
js/src/jit-test/tests/debug/breakpoint-gc-05.js
js/src/jit-test/tests/debug/breakpoint-multi-01.js
js/src/jit-test/tests/debug/breakpoint-multi-02.js
js/src/jit-test/tests/debug/breakpoint-multi-03.js
js/src/jit-test/tests/debug/breakpoint-multi-04.js
js/src/jit-test/tests/debug/breakpoint-noncng.js
js/src/jit-test/tests/debug/breakpoint-oom-01.js
js/src/jit-test/tests/debug/breakpoint-resume-01.js
js/src/jit-test/tests/debug/breakpoint-resume-02.js
js/src/jit-test/tests/debug/breakpoint-resume-03.js
js/src/jit-test/tests/debug/bug-1102549.js
js/src/jit-test/tests/debug/bug-1103386.js
js/src/jit-test/tests/debug/bug-1103817.js
js/src/jit-test/tests/debug/bug-1110327.js
js/src/jit-test/tests/debug/bug-1240090.js
js/src/jit-test/tests/debug/bug-1444604-reduced.js
js/src/jit-test/tests/debug/bug-1444604.js
js/src/jit-test/tests/debug/bug-725733.js
js/src/jit-test/tests/debug/bug-800586.js
js/src/jit-test/tests/debug/bug-826669.js
js/src/jit-test/tests/debug/bug-858170.js
js/src/jit-test/tests/debug/bug-876654.js
js/src/jit-test/tests/debug/bug1001372.js
js/src/jit-test/tests/debug/bug1004447.js
js/src/jit-test/tests/debug/bug1006205.js
js/src/jit-test/tests/debug/bug1006473.js
js/src/jit-test/tests/debug/bug1106164.js
js/src/jit-test/tests/debug/bug1106719.js
js/src/jit-test/tests/debug/bug1107525.js
js/src/jit-test/tests/debug/bug1108556.js
js/src/jit-test/tests/debug/bug1109328.js
js/src/jit-test/tests/debug/bug1109915.js
js/src/jit-test/tests/debug/bug1109964.js
js/src/jit-test/tests/debug/bug1111199.js
js/src/jit-test/tests/debug/bug1116103.js
js/src/jit-test/tests/debug/bug1118878.js
js/src/jit-test/tests/debug/bug1121083.js
js/src/jit-test/tests/debug/bug1130756.js
js/src/jit-test/tests/debug/bug1130768.js
js/src/jit-test/tests/debug/bug1160182.js
js/src/jit-test/tests/debug/bug1188334.js
js/src/jit-test/tests/debug/bug1191499.js
js/src/jit-test/tests/debug/bug1219905.js
js/src/jit-test/tests/debug/bug1232655.js
js/src/jit-test/tests/debug/bug1240803.js
js/src/jit-test/tests/debug/bug1242798.js
js/src/jit-test/tests/debug/bug1245862.js
js/src/jit-test/tests/debug/bug1246605.js
js/src/jit-test/tests/debug/bug1252464.js
js/src/jit-test/tests/debug/bug1253246.js
js/src/jit-test/tests/debug/bug1257045.js
js/src/jit-test/tests/debug/bug1263899.js
js/src/jit-test/tests/debug/bug1266434.js
js/src/jit-test/tests/debug/bug1275001.js
js/src/jit-test/tests/debug/bug1282741.js
js/src/jit-test/tests/debug/bug1299121.js
js/src/jit-test/tests/debug/bug1300517.js
js/src/jit-test/tests/debug/bug1300528.js
js/src/jit-test/tests/debug/bug1302432.js
js/src/jit-test/tests/debug/bug1304553.js
js/src/jit-test/tests/debug/bug1308578.js
js/src/jit-test/tests/debug/bug1330339.js
js/src/jit-test/tests/debug/bug1330489-sps.js
js/src/jit-test/tests/debug/bug1330489.js
js/src/jit-test/tests/debug/bug1330491.js
js/src/jit-test/tests/debug/bug1331592.js
js/src/jit-test/tests/debug/bug1351059.js
js/src/jit-test/tests/debug/bug1363233.js
js/src/jit-test/tests/debug/bug1368736.js
js/src/jit-test/tests/debug/bug1375447.js
js/src/jit-test/tests/debug/bug1385843.js
js/src/jit-test/tests/debug/bug1397049.js
js/src/jit-test/tests/debug/bug1397385.js
js/src/jit-test/tests/debug/bug1406437.js
js/src/jit-test/tests/debug/bug1417961.js
js/src/jit-test/tests/debug/bug1432764.js
js/src/jit-test/tests/debug/bug1434391.js
js/src/jit-test/tests/debug/bug1437537.js
js/src/jit-test/tests/debug/bug1479429.js
js/src/jit-test/tests/debug/bug1488163.js
js/src/jit-test/tests/debug/bug911065.js
js/src/jit-test/tests/debug/bug967039.js
js/src/jit-test/tests/debug/bug973566.js
js/src/jit-test/tests/debug/bug980585.js
js/src/jit-test/tests/debug/bug999655.js
js/src/jit-test/tests/debug/class-07.js
js/src/jit-test/tests/debug/class-08.js
js/src/jit-test/tests/debug/class-default-constructor-01.js
js/src/jit-test/tests/debug/clear-old-analyses-01.js
js/src/jit-test/tests/debug/clear-old-analyses-02.js
js/src/jit-test/tests/debug/dispatch-01.js
js/src/jit-test/tests/debug/dispatch-02.js
js/src/jit-test/tests/debug/execution-observability-01.js
js/src/jit-test/tests/debug/execution-observability-02.js
js/src/jit-test/tests/debug/execution-observability-03.js
js/src/jit-test/tests/debug/execution-observability-04.js
js/src/jit-test/tests/debug/execution-observability-05.js
js/src/jit-test/tests/debug/execution-observability-06.js
js/src/jit-test/tests/debug/gc-01.js
js/src/jit-test/tests/debug/gc-02.js
js/src/jit-test/tests/debug/gc-03.js
js/src/jit-test/tests/debug/gc-04.js
js/src/jit-test/tests/debug/gc-05.js
js/src/jit-test/tests/debug/gc-06.js
js/src/jit-test/tests/debug/gc-07.js
js/src/jit-test/tests/debug/gc-08.js
js/src/jit-test/tests/debug/gc-09.2.js
js/src/jit-test/tests/debug/gc-09.js
js/src/jit-test/tests/debug/gc-compartment-01.js
js/src/jit-test/tests/debug/gc-compartment-02.js
js/src/jit-test/tests/debug/inspect-wrapped-promise.js
js/src/jit-test/tests/debug/isAsyncFunction-isGeneratorFunction.js
js/src/jit-test/tests/debug/makeGlobalObjectReference-01.js
js/src/jit-test/tests/debug/noExecute-01.js
js/src/jit-test/tests/debug/noExecute-02.js
js/src/jit-test/tests/debug/noExecute-03.js
js/src/jit-test/tests/debug/noExecute-04.js
js/src/jit-test/tests/debug/noExecute-05.js
js/src/jit-test/tests/debug/noExecute-06.js
js/src/jit-test/tests/debug/noExecute-07.js
js/src/jit-test/tests/debug/onDebuggerStatement-01.js
js/src/jit-test/tests/debug/onDebuggerStatement-02.js
js/src/jit-test/tests/debug/onDebuggerStatement-03.js
js/src/jit-test/tests/debug/onDebuggerStatement-04.js
js/src/jit-test/tests/debug/onDebuggerStatement-05.js
js/src/jit-test/tests/debug/onDebuggerStatement-async-generator-resumption-01.js
js/src/jit-test/tests/debug/onDebuggerStatement-async-resumption-01.js
js/src/jit-test/tests/debug/onDebuggerStatement-generator-resumption-01.js
js/src/jit-test/tests/debug/onEnterFrame-01.js
js/src/jit-test/tests/debug/onEnterFrame-02.js
js/src/jit-test/tests/debug/onEnterFrame-03.js
js/src/jit-test/tests/debug/onEnterFrame-04.js
js/src/jit-test/tests/debug/onEnterFrame-05.js
js/src/jit-test/tests/debug/onEnterFrame-06.js
js/src/jit-test/tests/debug/onEnterFrame-07.js
js/src/jit-test/tests/debug/onEnterFrame-async-01.js
js/src/jit-test/tests/debug/onEnterFrame-async-resumption-01.js
js/src/jit-test/tests/debug/onEnterFrame-async-resumption-02.js
js/src/jit-test/tests/debug/onEnterFrame-async-resumption-03.js
js/src/jit-test/tests/debug/onEnterFrame-async-resumption-04.js
js/src/jit-test/tests/debug/onEnterFrame-generator-01.js
js/src/jit-test/tests/debug/onEnterFrame-generator-02.js
js/src/jit-test/tests/debug/onEnterFrame-generator-03.js
js/src/jit-test/tests/debug/onEnterFrame-generator-04.js
js/src/jit-test/tests/debug/onEnterFrame-generator-05.js
js/src/jit-test/tests/debug/onEnterFrame-generator-resumption-01.js
js/src/jit-test/tests/debug/onEnterFrame-generator-resumption-02.js
js/src/jit-test/tests/debug/onEnterFrame-generator-resumption-03.js
js/src/jit-test/tests/debug/onEnterFrame-generator-resumption-04.js
js/src/jit-test/tests/debug/onEnterFrame-generator-resumption-05.js
js/src/jit-test/tests/debug/onExceptionUnwind-01.js
js/src/jit-test/tests/debug/onExceptionUnwind-02.js
js/src/jit-test/tests/debug/onExceptionUnwind-03.js
js/src/jit-test/tests/debug/onExceptionUnwind-04.js
js/src/jit-test/tests/debug/onExceptionUnwind-05.js
js/src/jit-test/tests/debug/onExceptionUnwind-06.js
js/src/jit-test/tests/debug/onExceptionUnwind-07.js
js/src/jit-test/tests/debug/onExceptionUnwind-08.js
js/src/jit-test/tests/debug/onExceptionUnwind-09.js
js/src/jit-test/tests/debug/onExceptionUnwind-10.js
js/src/jit-test/tests/debug/onExceptionUnwind-12.js
js/src/jit-test/tests/debug/onExceptionUnwind-13.js
js/src/jit-test/tests/debug/onExceptionUnwind-14.js
js/src/jit-test/tests/debug/onExceptionUnwind-15.js
js/src/jit-test/tests/debug/onExceptionUnwind-generators-01.js
js/src/jit-test/tests/debug/onExceptionUnwind-resumption-01.js
js/src/jit-test/tests/debug/onExceptionUnwind-resumption-02.js
js/src/jit-test/tests/debug/onExceptionUnwind-resumption-03.js
js/src/jit-test/tests/debug/onExceptionUnwind-resumption-04.js
js/src/jit-test/tests/debug/onExceptionUnwind-resumption-async.js
js/src/jit-test/tests/debug/onExceptionUnwind-resumption-generator.js
js/src/jit-test/tests/debug/onNewScript-01.js
js/src/jit-test/tests/debug/onNewScript-02.js
js/src/jit-test/tests/debug/onNewScript-03.js
js/src/jit-test/tests/debug/onNewScript-CloneAndExecuteScript.js
js/src/jit-test/tests/debug/onNewScript-ExecuteInGlobalAndReturnScope.js
js/src/jit-test/tests/debug/onNewScript-off-main-thread-01.js
js/src/jit-test/tests/debug/onNewScript-off-main-thread-02.js
js/src/jit-test/tests/debug/onStep-generator-resumption-01.js
js/src/jit-test/tests/debug/optimized-out-01.js
js/src/jit-test/tests/debug/optimized-out-02.js
js/src/jit-test/tests/debug/optimized-out-03.js
js/src/jit-test/tests/debug/prologueFailure-01.js
js/src/jit-test/tests/debug/prologueFailure-02.js
js/src/jit-test/tests/debug/prologueFailure-03.js
js/src/jit-test/tests/debug/resumption-01.js
js/src/jit-test/tests/debug/resumption-02.js
js/src/jit-test/tests/debug/resumption-03.js
js/src/jit-test/tests/debug/resumption-05.js
js/src/jit-test/tests/debug/resumption-07.js
js/src/jit-test/tests/debug/resumption-08.js
js/src/jit-test/tests/debug/resumption-error-01.js
js/src/jit-test/tests/debug/resumption-error-02.js
js/src/jit-test/tests/debug/setter-argc.js
js/src/jit-test/tests/debug/surfaces-02.js
js/src/jit-test/tests/debug/surfaces-03.js
js/src/jit-test/tests/debug/surfaces-offsets.js
js/src/jit-test/tests/debug/testEarlyReturnOnCall.js
js/src/jit-test/tests/debug/uncaughtExceptionHook-01.js
js/src/jit-test/tests/debug/uncaughtExceptionHook-02.js
js/src/jit-test/tests/debug/uncaughtExceptionHook-03.js
js/src/jit-test/tests/debug/uncaughtExceptionHook-resumption-01.js
js/src/jit-test/tests/debug/uncaughtExceptionHook-resumption-02.js
js/src/jit-test/tests/debug/uncaughtExceptionHook-resumption-03.js
js/src/jit-test/tests/debug/wasm-01.js
js/src/jit-test/tests/debug/wasm-02.js
js/src/jit-test/tests/debug/wasm-03.js
js/src/jit-test/tests/debug/wasm-04.js
js/src/jit-test/tests/debug/wasm-11.js
js/src/jit-test/tests/debug/wasm-12.js
js/src/jit-test/tests/debug/wasm-binary-sources.js
js/src/jit-test/tests/debug/wasm-onExceptionUnwind-gc.js
js/src/jit-test/tests/debug/wasm-responseurls.js
js/src/jit-test/tests/debug/wasm-sourceMappingURL.js
js/src/jit-test/tests/gc/bug-1104162.js
js/src/jit-test/tests/gc/bug-1136597.js
js/src/jit-test/tests/gc/bug-1146696.js
js/src/jit-test/tests/gc/bug-1177778.js
js/src/jit-test/tests/gc/bug-1210607.js
js/src/jit-test/tests/gc/bug-1293127.js
js/src/jit-test/tests/gc/bug-1322420.js
js/src/jit-test/tests/gc/bug-1325551.js
js/src/jit-test/tests/gc/bug-1357022.js
js/src/jit-test/tests/gc/bug-1461319.js
js/src/jit-test/tests/gc/bug-1461448.js
js/src/jit-test/tests/gc/bug-1464872.js
js/src/jit-test/tests/gc/bug-1491326.js
js/src/jit-test/tests/gc/bug-1515993.js
js/src/jit-test/tests/gc/bug-1517158.js
js/src/jit-test/tests/gc/bug-956324.js
js/src/jit-test/tests/gc/bug1116306.js
js/src/jit-test/tests/gc/incremental-abort.js
js/src/jit-test/tests/gc/weak-marking-02.js
js/src/jit-test/tests/generators/bug1491331.js
js/src/jit-test/tests/generators/bug1501722.js
js/src/jit-test/tests/ion/bug1133530.js
js/src/jit-test/tests/ion/bug1233343.js
js/src/jit-test/tests/ion/bug1299007.js
js/src/jit-test/tests/ion/bug1452581.js
js/src/jit-test/tests/ion/bug1479394.js
js/src/jit-test/tests/jaeger/recompile/bug641269.js
js/src/jit-test/tests/modules/bug-1233915.js
js/src/jit-test/tests/modules/bug-1245518.js
js/src/jit-test/tests/modules/bug-1498980.js
js/src/jit-test/tests/modules/bug-1502669.js
js/src/jit-test/tests/modules/bug-1510598.js
js/src/jit-test/tests/modules/debugger-frames.js
js/src/jit-test/tests/modules/debugger-vars-function.js
js/src/jit-test/tests/modules/debugger-vars-toplevel.js
js/src/jit-test/tests/parser/bug-1263355-13.js
js/src/jit-test/tests/parser/bug-1263355-22.js
js/src/jit-test/tests/profiler/bug1161351.js
js/src/jit-test/tests/profiler/bug1233921.js
js/src/jit-test/tests/profiler/bug1261324.js
js/src/jit-test/tests/profiler/bug1427774.js
js/src/jit-test/tests/profiler/debugmode-osr-exception-return-addr.js
js/src/jit-test/tests/profiler/debugmode-osr-resume-addr.js
js/src/jit-test/tests/promise/bug1347984.js
js/src/jit-test/tests/promise/bug1406463.js
js/src/jit-test/tests/proxy/preserve-iscallable-isconstructor.js
js/src/jit-test/tests/realms/basic.js
js/src/jit-test/tests/realms/nuking.js
js/src/jit-test/tests/saved-stacks/1438121-async-function.js
js/src/jit-test/tests/saved-stacks/1438121-generator.js
js/src/jit-test/tests/self-hosting/method-called-on-incompatible.js
js/src/jit-test/tests/self-test/assertDeepEq.js
js/src/jit-test/tests/stream/bug-1387503-1.js
js/src/jit-test/tests/stream/bug-1387503-2.js
js/src/jit-test/tests/stream/bug-1503399-1.js
js/src/jit-test/tests/stream/bug-1503399-2.js
js/src/jit-test/tests/wasm/gc/debugger.js
js/src/jit-test/tests/wasm/ion-debugger.js
js/src/jit-test/tests/wasm/regress/bug1491322.js
js/src/jit-test/tests/wasm/regress/bug1502886.js
js/src/jit-test/tests/wasm/regress/debug-clone-segment.js
js/src/jit-test/tests/wasm/regress/debug-exception-in-fast-import.js
js/src/jit-test/tests/wasm/regress/debug-osr.js
js/src/jit-test/tests/wasm/regress/ion-error-gc-fakeexitframe.js
js/src/jit-test/tests/wasm/regress/jit-updatepcquad.js
js/src/jit-test/tests/wasm/regress/savedframe-lookup-in-wasm.js
js/src/jit-test/tests/wasm/timeout/debug-interrupt-1.js
js/src/jit-test/tests/wasm/timeout/debug-interrupt-2.js
js/src/jit-test/tests/wasm/timeout/debug-noprofiling.js
--- a/js/src/jit-test/tests/arguments/rest-debugger.js
+++ b/js/src/jit-test/tests/arguments/rest-debugger.js
@@ -1,16 +1,16 @@
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval("function f(...x) {}");
 var dbg = new Debugger;
 var gw = dbg.addDebuggee(g);
 var fw = gw.getOwnPropertyDescriptor("f").value;
 assertEq(fw.parameterNames.toString(), "x");
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval("function f(...rest) { debugger; }");
 var dbg = Debugger(g);
 dbg.onDebuggerStatement = function (frame) {
     frame.eval("args = arguments");
 };
 g.f(9, 8, 7);
 
 assertEq(g.args.length, 3);
--- a/js/src/jit-test/tests/asm.js/testBug1236552.js
+++ b/js/src/jit-test/tests/asm.js/testBug1236552.js
@@ -1,3 +1,3 @@
-g = newGlobal();
+g = newGlobal({newCompartment: true});
 Debugger(g).memory.trackingAllocationSites = true;
 evaluate("function h() { 'use asm'; return {}}", { global: g });
--- a/js/src/jit-test/tests/asm.js/testBug893519.js
+++ b/js/src/jit-test/tests/asm.js/testBug893519.js
@@ -1,6 +1,6 @@
 // |jit-test| error:Error; skip-if: !isAsmJSCompilationAvailable()
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 evaluate("function h() { function f() { 'use asm'; function g() { return 42 } return g } return f }", { global:g});
 var h = clone(g.h);
 assertEq(h()()(), 42);
--- a/js/src/jit-test/tests/asm.js/testDebugModeDisables.js
+++ b/js/src/jit-test/tests/asm.js/testDebugModeDisables.js
@@ -1,9 +1,9 @@
 // |jit-test|
 
 load(libdir + "asm.js");
 
 // Turn on debugging for the current global.
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new g.Debugger(this);
 
 assertAsmTypeFail("'use asm'; function f() {} return f");
--- a/js/src/jit-test/tests/auto-regress/bug1147907.js
+++ b/js/src/jit-test/tests/auto-regress/bug1147907.js
@@ -1,10 +1,10 @@
 var evalInFrame = (function (global) {
-  var dbgGlobal = newGlobal();
+  var dbgGlobal = newGlobal({newCompartment: true});
   var dbg = new dbgGlobal.Debugger();
   return function evalInFrame(upCount, code) {
     dbg.addDebuggee(global);
     var frame = dbg.getNewestFrame().older;
     var completion = frame.eval(code);
   };
 })(this);
 var x = 5;
--- a/js/src/jit-test/tests/auto-regress/bug1315943.js
+++ b/js/src/jit-test/tests/auto-regress/bug1315943.js
@@ -1,11 +1,11 @@
 var s = "{}";
 for (var i = 0; i < 21; i++) s += s;
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 dbg.onDebuggerStatement = function(frame) {
     var s = frame.eval("f").return.script;
 };
 g.eval("line0 = Error().lineNumber;\n" + "debugger;\n" + // line0 + 1
     "function f(i) {\n" + // line0 + 2
     s + // line0 + 3 ... line0 + where - 2
     "}\n");
--- a/js/src/jit-test/tests/auto-regress/bug1479076.js
+++ b/js/src/jit-test/tests/auto-regress/bug1479076.js
@@ -1,6 +1,6 @@
 fullcompartmentchecks(true);
 var dbg = new Debugger();
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval("function f(){}");
 dbg.addDebuggee(g);
 dbg.findScripts();
--- a/js/src/jit-test/tests/auto-regress/bug677386.js
+++ b/js/src/jit-test/tests/auto-regress/bug677386.js
@@ -1,15 +1,15 @@
 // |jit-test| error:ReferenceError
 
 // Binary: cache/js-dbg-64-82545b1e4129-linux
 // Flags:
 //
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval("var line0 = Error().lineNumber;\n" +
        "function f() {\n" +     // line0 + 1
        "    return 2;\n" +      // line0 + 2
        "}\n");
 var N = 4;
 for (var i = 0; i < N; i++) {
     var dbg = Debugger(g);
     dbg.onDebuggerStatement = function (frame) {
--- a/js/src/jit-test/tests/auto-regress/bug677587.js
+++ b/js/src/jit-test/tests/auto-regress/bug677587.js
@@ -1,11 +1,11 @@
 // Binary: cache/js-dbg-64-f189dd6316eb-linux
 // Flags:
 //
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval("var a = {};");
 var dbg = new Debugger;
 var gw = dbg.addDebuggee(g);
 var desc = gw.getOwnPropertyDescriptor("a");
 gw.defineProperty("b", desc);
 Debugger(g.a, g.b);
--- a/js/src/jit-test/tests/auto-regress/bug677977.js
+++ b/js/src/jit-test/tests/auto-regress/bug677977.js
@@ -1,13 +1,13 @@
 // Binary: cache/js-dbg-64-48e43edc8834-linux
 // Flags:
 //
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 dbg.onDebuggerStatement = function (frame) {
     var s = frame.eval("f").return.script;
 };
 function test(s) {
     g.eval("line0 = Error().lineNumber;\n" +
            "debugger;\n" +          // line0 + 1
            "function f(i) {\n" +    // line0 + 2
@@ -16,11 +16,11 @@ function test(s) {
 test("i = 128;\n" +  "}\n");
 var hits = 0;
 dbg.onNewScript = function (s) {
     hits++;
 };
 assertEq(g.eval("eval('2 + 3')"), 5);
 this.gczeal(hits, 2);
 var fn = g.evaluate("(function (a) { return 5 + a; })");
-var g2 = newGlobal();
+var g2 = newGlobal({newCompartment: true});
 dbg.addDebuggee(g2, dbg);
 g2.clone(fn);
--- a/js/src/jit-test/tests/auto-regress/bug721497.js
+++ b/js/src/jit-test/tests/auto-regress/bug721497.js
@@ -1,13 +1,13 @@
 // |jit-test| error:ReferenceError
 
 // Binary: cache/js-dbg-64-edf8075b0333-linux
 // Flags:
 //
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 dbg.onDebuggerStatement = function (frame) {
     assertEq(dumpStack(), true);
 };
 g.eval("function f(a, [b, c], {x: [y], z: w}, {q}) { debugger; }");
 g.eval("f(1, [2, 3], {x: [4], z: 5}, {q: 6});");
--- a/js/src/jit-test/tests/auto-regress/bug797493.js
+++ b/js/src/jit-test/tests/auto-regress/bug797493.js
@@ -1,15 +1,15 @@
 // |jit-test| error:ReferenceError
 
 // Binary: cache/js-dbg-64-13fd49ef7786-linux
 // Flags:
 //
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 dbg.onDebuggerStatement = function handleDebugger(frame) {
     frame.onPop = function handlePop(c) {
       poppedFrames.indexOf(this)
     }
 };
 g.eval("function* g() { for (var i = 0; i < 10; i++) { debugger; yield i; } }");
 assertEq(g.eval("var t = 0; for (j of g()) t += j; t;"), 45);
--- a/js/src/jit-test/tests/auto-regress/for-of-iterator-close-debugger.js
+++ b/js/src/jit-test/tests/auto-regress/for-of-iterator-close-debugger.js
@@ -1,14 +1,14 @@
 // |jit-test| error:ReferenceError
 
 // for-of should close iterator even if the exception is once caught by the
 // debugger.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.parent = this;
 g.eval("new Debugger(parent).onExceptionUnwind = function () { };");
 // jsfunfuzz-generated
 for (var x of []) {};
 for (var l of [0]) {
     for (var y = 0; y < 1; y++) {
         g2;
     }
--- a/js/src/jit-test/tests/baseline/bug1416727.js
+++ b/js/src/jit-test/tests/baseline/bug1416727.js
@@ -1,10 +1,10 @@
 // |jit-test| allow-overrecursed
-g = newGlobal()
+g = newGlobal({newCompartment: true})
 g.parent = this
 g.eval("new Debugger(parent).onExceptionUnwind = function(){}");
 var depth = 0;
 function test() {
     if (++depth > 50)
         return;
     function f(n) {
         if (n != 0) {
--- a/js/src/jit-test/tests/baseline/bug836742.js
+++ b/js/src/jit-test/tests/baseline/bug836742.js
@@ -1,10 +1,10 @@
 // Ensure the correct frame is passed to exception unwind hooks.
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.debuggeeGlobal = this;
 g.eval("(" + function () {
     frames = [];
     var dbg = Debugger(debuggeeGlobal);
     dbg.onEnterFrame = function(frame) {
 	frames.push(frame);
     };
     dbg.onExceptionUnwind = function(frame) {
--- a/js/src/jit-test/tests/baseline/bug842431-1.js
+++ b/js/src/jit-test/tests/baseline/bug842431-1.js
@@ -1,10 +1,10 @@
 // |jit-test| error:123
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval('function f() { var y; debugger; }');
 
 var dbg = new Debugger(g);
 
 dbg.onDebuggerStatement = function handleDebugger(frame) {
     frame.onPop = function(c) {
 	this.eval('y = 33');
 	return {throw: 123};
--- a/js/src/jit-test/tests/baseline/bug842431-2.js
+++ b/js/src/jit-test/tests/baseline/bug842431-2.js
@@ -1,13 +1,13 @@
 // |jit-test|
 
 // If a frame's onPop handler throws, we should not call the
 // onExceptionUnwind hook for that frame.
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 
 g.eval('function f() { var y; debugger; }');
 
 dbg.onExceptionUnwind = function() {
     assertEq(0, 1);
 };
 
--- a/js/src/jit-test/tests/baseline/bug842431-3.js
+++ b/js/src/jit-test/tests/baseline/bug842431-3.js
@@ -1,14 +1,14 @@
 // |jit-test|
 
 // If an exception unwind hook performs a forced return, and this calls an
 // onPop handler that throws, the exception should not be handled in the
 // current frame but propagated to the caller.
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 
 g.eval('function f() { try { var y; throw 123; } catch(e) { assertEq(0, 1); } }');
 
 dbg.onExceptionUnwind = function(frame) {
     frame.onPop = function() {
 	return {throw: 321};
     }
--- a/js/src/jit-test/tests/baseline/bug842432.js
+++ b/js/src/jit-test/tests/baseline/bug842432.js
@@ -1,10 +1,10 @@
 // |jit-test| error: fff is not
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 
 g.eval('function f(n) { if (n > 0) f(n-1); }');
 
 dbg.onEnterFrame = function(frame) {
     frame.onPop = function() {
         fff();
     };
--- a/js/src/jit-test/tests/baseline/bug852175.js
+++ b/js/src/jit-test/tests/baseline/bug852175.js
@@ -1,5 +1,5 @@
 // |jit-test| error: InternalError
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 g.eval("function f(n) { if (n == 0) debugger; else f(n - 1); }");
 g.f("function f() { debugger; }");
--- a/js/src/jit-test/tests/baseline/bug857580.js
+++ b/js/src/jit-test/tests/baseline/bug857580.js
@@ -1,10 +1,10 @@
 gczeal(2,10);
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 dbg.onNewScript = function(script) {
     fscript = script.getChildScripts()[0];
 }
 g.eval("function f(x) { arguments[0] = 3; return x }");
 fscript.setBreakpoint(0, {hit:function(frame) {
     assertEq(frame.eval('x').return, 1);
     gc();
--- a/js/src/jit-test/tests/basic/bug1141154.js
+++ b/js/src/jit-test/tests/basic/bug1141154.js
@@ -1,13 +1,13 @@
 function foo() {
   (function() {
     Object.preventExtensions(this);
     setJitCompilerOption("ion.warmup.trigger", 4);
-    var g = newGlobal();
+    var g = newGlobal({newCompartment: true});
     g.debuggeeGlobal = this;
     g.eval("(" + function () {
         dbg = new Debugger(debuggeeGlobal);
         dbg.onExceptionUnwind = function (frame, exc) {
             var s = '!';
             for (var f = frame; f; f = f.older)
             debuggeeGlobal.log += s;
         };
--- a/js/src/jit-test/tests/basic/bug713226.js
+++ b/js/src/jit-test/tests/basic/bug713226.js
@@ -1,20 +1,20 @@
 // |jit-test|
 gczeal(4);
 var optionNames = options().split(',');
   for (var i = 0; i < optionNames.length; i++)
     var optionName = optionNames[i];
 evaluate("\
 function addDebug(g, id) {\
-    var debuggerGlobal = newGlobal();\
+    var debuggerGlobal = newGlobal({newCompartment: true});\
     debuggerGlobal.debuggee = g;\
     debuggerGlobal.id = id;\
     debuggerGlobal.print = function (s) { print(s); };\
     debuggerGlobal.eval('var dbg = new Debugger(debuggee);dbg.onDebuggerStatement = function () { print(id); debugger; };');\
     return debuggerGlobal;\
 }\
-var base = newGlobal();\
+var base = newGlobal({newCompartment: true});\
 var top = base;\
 for (var i = 0; i < 8; i++ )\
     top = addDebug(top, i);\
 base.eval('debugger;');\
 ");
--- a/js/src/jit-test/tests/basic/bug951632.js
+++ b/js/src/jit-test/tests/basic/bug951632.js
@@ -1,9 +1,9 @@
 enableShellAllocationMetadataBuilder();
-var g = newGlobal()
+var g = newGlobal({newCompartment: true})
 g.eval("function f(a) { return h(); }");
 g.h = function () {
     return [1, 2, 3];
 };
 var o = getAllocationMetadata(g.f(5));
 assertEq(o.stack.length, 1);
 assertEq(o.stack[0], g.h);
--- a/js/src/jit-test/tests/basic/properly-remove-timeout-root-before-shutdown.js
+++ b/js/src/jit-test/tests/basic/properly-remove-timeout-root-before-shutdown.js
@@ -1,5 +1,5 @@
 // Bug 857050: Remove the timeout function root before shutting down.
 function timeoutfunc() {}
 timeout(1, timeoutfunc);
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
--- a/js/src/jit-test/tests/basic/testBug895774.js
+++ b/js/src/jit-test/tests/basic/testBug895774.js
@@ -1,10 +1,10 @@
-var g1 = newGlobal();
-var g2 = newGlobal();
+var g1 = newGlobal({newCompartment: true});
+var g2 = newGlobal({newCompartment: true});
 g1.eval("function f1() { debugger; evaluate('debugger') }");
 g2.eval("function f2() { f1(); assertEq(Number(this), 42) }");
 g2.f1 = g1.f1;
 
 var dbg = new Debugger(g1,g2);
 dbg.onDebuggerStatement = function(frame) {
     var target = frame.older;
     dbg.onDebuggerStatement = function(frame) {
--- a/js/src/jit-test/tests/basic/testGeneratorDieButScopeAlive.js
+++ b/js/src/jit-test/tests/basic/testGeneratorDieButScopeAlive.js
@@ -1,9 +1,9 @@
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 
 var hits = 0;
 dbg.onDebuggerStatement = function(frame) {
     ++hits;
     frame.older.eval("escaped = function() { return y }");
 }
 
--- a/js/src/jit-test/tests/cacheir/bug1448136.js
+++ b/js/src/jit-test/tests/cacheir/bug1448136.js
@@ -1,13 +1,13 @@
 print = function(s) { return s.toString(); }
 assertEq = function(a,b) {
   try { print(a); print(b); } catch(exc) {}
 }
-g = newGlobal();
+g = newGlobal({newCompartment: true});
 g.parent = this;
 g.eval("(" + function() {
   Debugger(parent).onExceptionUnwind = function(frame) {
     frame.older
   }
 } + ")()")
 function a() {};
 function b() {};
--- a/js/src/jit-test/tests/collections/bug-743101.js
+++ b/js/src/jit-test/tests/collections/bug-743101.js
@@ -1,7 +1,7 @@
 load(libdir + "asserts.js");
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 for (var cls of [Map, Set]) {
     var getter = Object.getOwnPropertyDescriptor(cls.prototype, "size").get;
     assertThrowsInstanceOf(function () { getter.apply(g, []); }, g.TypeError);
 }
--- a/js/src/jit-test/tests/debug/DebuggeeWouldRun-03.js
+++ b/js/src/jit-test/tests/debug/DebuggeeWouldRun-03.js
@@ -1,9 +1,9 @@
 // Bug 1250190: Shouldn't crash. |jit-test| error: yadda
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 dbg.onNewGlobalObject = function () {
   dbg.onNewGlobalObject = function () { throw "yadda"; };
-  newGlobal();
+  newGlobal({newCompartment: true});
 }
-newGlobal();
+newGlobal({newCompartment: true});
--- a/js/src/jit-test/tests/debug/DebuggeeWouldRun-04.js
+++ b/js/src/jit-test/tests/debug/DebuggeeWouldRun-04.js
@@ -1,9 +1,9 @@
 // Bug 1250190: Shouldn't crash. |jit-test| error: yadda
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 dbg.onNewScript = function () {
   dbg.onNewScript = function () { throw "yadda"; };
   g.Function("noodles;");
 }
 g.Function("poodles;");
--- a/js/src/jit-test/tests/debug/Debugger-adoptDebuggeeValue.js
+++ b/js/src/jit-test/tests/debug/Debugger-adoptDebuggeeValue.js
@@ -1,13 +1,13 @@
 // simplest possible test of Debugger.adoptDebuggeeValue
 
 load(libdir + "asserts.js");
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 
 var dbg1 = new Debugger();
 var gDO1 = dbg1.addDebuggee(g);
 var obj1 = gDO1.executeInGlobal("({})").return;
 
 var dbg2 = Debugger(g);
 var gDO2 = dbg2.addDebuggee(g);
 var obj2 = gDO2.executeInGlobal("({})").return;
--- a/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-01.js
+++ b/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-01.js
@@ -1,11 +1,11 @@
 load(libdir + "asm.js");
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.parent = this;
 g.eval("dbg = new Debugger(parent);");
 
 // Initial state is to inhibit asm.js.
 assertEq(g.dbg.allowUnobservedAsmJS, false);
 
 var asmFunStr = USE_ASM + 'function f() {} return f';
 
--- a/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js
+++ b/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js
@@ -1,16 +1,16 @@
 // |jit-test| skip-if: helperThreadCount() === 0
 
 // Debugger.allowUnobservedAsmJS with off-thread parsing.
 
 load(libdir + "asm.js");
 
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.parent = this;
 g.eval("dbg = new Debugger(parent);");
 
 assertEq(g.dbg.allowUnobservedAsmJS, false);
 
 enableLastWarning();
 
 var asmFunStr = USE_ASM + 'function f() {} return f';
--- a/js/src/jit-test/tests/debug/Debugger-clearAllBreakpoints-01.js
+++ b/js/src/jit-test/tests/debug/Debugger-clearAllBreakpoints-01.js
@@ -1,11 +1,11 @@
 // clearAllBreakpoints clears breakpoints for the current Debugger object only.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 
 var hits = 0;
 function attach(i) {
     var dbg = Debugger(g);
     var handler = {
         hit: function (frame) {
             hits++;
             dbg.clearAllBreakpoints();
--- a/js/src/jit-test/tests/debug/Debugger-ctor-01.js
+++ b/js/src/jit-test/tests/debug/Debugger-ctor-01.js
@@ -10,12 +10,12 @@ assertThrowsInstanceOf(function () { Deb
 assertThrowsInstanceOf(function () { new Debugger(null); }, TypeError);
 assertThrowsInstanceOf(function () { new Debugger(true); }, TypeError);
 assertThrowsInstanceOf(function () { new Debugger(42); }, TypeError);
 assertThrowsInstanceOf(function () { new Debugger("bad"); }, TypeError);
 assertThrowsInstanceOf(function () { new Debugger(function () {}); }, TypeError);
 assertThrowsInstanceOf(function () { new Debugger(this); }, TypeError);
 
 // From the main compartment, creating a Debugger on a sandbox compartment.
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 assertEq(dbg instanceof Debugger, true);
 assertEq(Object.getPrototypeOf(dbg), Debugger.prototype);
--- a/js/src/jit-test/tests/debug/Debugger-ctor-02.js
+++ b/js/src/jit-test/tests/debug/Debugger-ctor-02.js
@@ -1,13 +1,13 @@
 // Test creating a Debugger in a sandbox, debugging the initial global.
 
 load(libdir + 'asserts.js');
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.debuggeeGlobal = this;
 g.eval("var dbg = new Debugger(debuggeeGlobal);");
 assertEq(g.eval("dbg instanceof Debugger"), true);
 
 // The Debugger constructor from this compartment will not accept as its argument
 // an Object from this compartment. Shenanigans won't fool the membrane.
 g.parent = this;
 assertThrowsInstanceOf(function () { g.eval("parent.Debugger(parent.Object())"); }, TypeError);
--- a/js/src/jit-test/tests/debug/Debugger-ctor-04.js
+++ b/js/src/jit-test/tests/debug/Debugger-ctor-04.js
@@ -1,5 +1,5 @@
 // Repeated Debugger() arguments are ignored.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g, g, g);
 assertEq(dbg.getDebuggees().length, 1);
--- a/js/src/jit-test/tests/debug/Debugger-ctor-05.js
+++ b/js/src/jit-test/tests/debug/Debugger-ctor-05.js
@@ -1,8 +1,8 @@
 // Redundant non-global Debugger() arguments are ignored.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval("var a = {}, b = {};");
 var dbg = Debugger(g.a, g.b);
 var arr = dbg.getDebuggees();
 assertEq(arr.length, 1);
 assertEq(arr[0], dbg.addDebuggee(g));
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-02.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-02.js
@@ -1,10 +1,10 @@
 // The array returned by getDebuggees is just a snapshot, not live.
 var dbg = new Debugger;
 var a1 = dbg.getDebuggees();
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var gw = dbg.addDebuggee(g);
 assertEq(gw instanceof Debugger.Object, true);
 var a2 = dbg.getDebuggees();
 assertEq(a2.length, 1);
 assertEq(a2[0], gw);
 assertEq(a1.length, 0);
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-03.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-03.js
@@ -1,11 +1,11 @@
 // Debugger hooks fire based on debuggees.
 
-var g1 = newGlobal();
+var g1 = newGlobal({newCompartment: true});
 g1.eval("var g2 = newGlobal('same-compartment')");
 var g2 = g1.g2;
 g1.eval("function f() { debugger; g2.g(); }");
 g2.eval("function g() { debugger; }");
 
 var log;
 var dbg = new Debugger;
 dbg.onDebuggerStatement = function (frame) { log += frame.callee.name; };
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-04.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-04.js
@@ -1,11 +1,11 @@
 // hasDebuggee tests.
 
-var g1 = newGlobal(), g1w;
+var g1 = newGlobal({newCompartment: true}), g1w;
 g1.eval("var g2 = newGlobal('same-compartment')");
 var g2 = g1.g2;
 var g1w, g2w;
 
 var dbg = new Debugger;
 function checkHas(hasg1, hasg2) {
     assertEq(dbg.hasDebuggee(g1), hasg1);
     if (typeof g1w === 'object')
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-05.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-05.js
@@ -1,8 +1,8 @@
 // addDebuggee returns different Debugger.Object wrappers for different Debugger objects.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg1 = new Debugger;
 var gw1 = dbg1.addDebuggee(g);
 var dbg2 = new Debugger;
 var gw2 = dbg2.addDebuggee(g);
 assertEq(gw1 !== gw2, true);
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-06.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-06.js
@@ -15,13 +15,13 @@ check(undefined);
 check(null);
 check(false);
 check(1);
 check(NaN);
 check("ok");
 check(Symbol("ok"));
 
 // A Debugger.Object that belongs to a different Debugger object is invalid.
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg2 = new Debugger;
 var w = dbg2.addDebuggee(g);
 assertEq(w instanceof Debugger.Object, true);
 check(w);
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-08.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-08.js
@@ -1,12 +1,12 @@
 // Adding a debuggee more than once is redundant.
 
 var dbg = new Debugger;
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var w = dbg.addDebuggee(g);
 assertEq(w instanceof Debugger.Object, true);
 
 function usual() {
     assertEq(dbg.hasDebuggee(g), true);
     assertEq(dbg.hasDebuggee(w), true);
     var arr = dbg.getDebuggees();
     assertEq(arr.length, 1);
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-09.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-09.js
@@ -10,12 +10,12 @@ function check(obj) {
     assertEq(dbg.removeDebuggee(obj), undefined);
 }
 
 // global objects which happen not to be debuggees at the moment
 var g1 = newGlobal('same-compartment');
 check(g1);
 
 // objects in a compartment that is already debugging us
-var g2 = newGlobal();
+var g2 = newGlobal({newCompartment: true});
 g2.parent = this;
 g2.eval("var dbg = new Debugger(parent);");
 check(g2);
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-10.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-10.js
@@ -1,13 +1,13 @@
 // Allow diamonds in the graph of the compartment "debugs" relation.
-var program = newGlobal();
-var d1 = newGlobal();
+var program = newGlobal({newCompartment: true});
+var d1 = newGlobal({newCompartment: true});
 d1.top = this;
-var d2 = newGlobal();
+var d2 = newGlobal({newCompartment: true});
 d2.top = this;
 var dbg = new Debugger(d1, d2);
 d1.eval("var dbg = new Debugger(top.program)");
 d2.eval("var dbg = new Debugger(top.program)");
 
 // mess with the edges a little bit -- all this should be fine, no cycles
 d1.dbg.removeDebuggee(program);
 d1.dbg.addDebuggee(program);
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-11.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-11.js
@@ -3,20 +3,20 @@
 load(libdir + "asserts.js");
 
 // trivial cycles
 var dbg = new Debugger;
 assertThrowsInstanceOf(function () { dbg.addDebuggee(this); }, TypeError);
 assertThrowsInstanceOf(function () { new Debugger(this); }, TypeError);
 
 // cycles of length 2
-var d1 = newGlobal();
+var d1 = newGlobal({newCompartment: true});
 d1.top = this;
 d1.eval("var dbg = new Debugger(top)");
 assertThrowsInstanceOf(function () { dbg.addDebuggee(d1); }, TypeError);
 assertThrowsInstanceOf(function () { new Debugger(d1); }, TypeError);
 
 // cycles of length 3
-var d2 = newGlobal();
+var d2 = newGlobal({newCompartment: true});
 d2.top = this;
 d2.eval("var dbg = new Debugger(top.d1)");
 assertThrowsInstanceOf(function () { dbg.addDebuggee(d2); }, TypeError);
 assertThrowsInstanceOf(function () { new Debugger(d2); }, TypeError);
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-12.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-12.js
@@ -1,10 +1,10 @@
 // Events in a non-debuggee are ignored, even if a debuggee is in the same compartment.
-var g1 = newGlobal();
+var g1 = newGlobal({newCompartment: true});
 var g2 = g1.eval("newGlobal('same-compartment')");
 var dbg = new Debugger(g1);
 var hits = 0;
 dbg.onDebuggerStatement = function () { hits++; };
 g1.eval("debugger;");
 assertEq(hits, 1);
 g2.eval("debugger;");
 assertEq(hits, 1);
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-13.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-13.js
@@ -1,9 +1,9 @@
 // Removing a debuggee does not detach the debugger from a compartment if another debuggee is in it.
-var g1 = newGlobal();
+var g1 = newGlobal({newCompartment: true});
 var g2 = g1.eval("newGlobal('same-compartment')");
 var dbg = new Debugger(g1, g2);
 var hits = 0;
 dbg.onDebuggerStatement = function (frame) { hits++; };
 dbg.removeDebuggee(g1);
 g2.eval("debugger;");
 assertEq(hits, 1);
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-14.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-14.js
@@ -1,8 +1,8 @@
 // Adding a debuggee in a compartment that is already in debug mode works
 // even if a script from that compartment is on the stack.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg1 = Debugger(g);
 var dbg2 = Debugger();
 g.parent = this;
 g.eval("parent.dbg2.addDebuggee(this);");
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-15.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-15.js
@@ -1,7 +1,7 @@
 // Debugger mode can be disabled for a compartment even if it has scripts running.
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 g.parent = this;
 var n = 2;
 g.eval("parent.dbg.removeDebuggee(this); parent.n += 2");
 assertEq(n, 4);
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-16.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-16.js
@@ -1,16 +1,16 @@
 // GC can turn off debug mode in a compartment.
 
 var dbgs = [];
 var nonDebugGlobals = [];
 var f = gc;
 for (var i = 0; i < 4; i++) {
     // Create two globals, one debuggee.
-    var g1 = newGlobal();
+    var g1 = newGlobal({newCompartment: true});
     var g2 = g1.eval("newGlobal('same-compartment')");
     var dbg = Debugger(g1);
     dbg.onDebuggerStatement = function () {};
 
     // Thread a chain of functions through the non-debuggee globals.
     g2.eval("function f() { return g() + 1; }");
     g2.g = f;
     f = g2.f;
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-17.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-17.js
@@ -8,19 +8,19 @@ var dbg = new Debugger;
 function check(bad) {
   print("check(" + uneval(bad) + ")");
   assertThrowsInstanceOf(function () { dbg.addDebuggee(bad); }, TypeError);
   assertEq(dbg.getDebuggees().length, 0);
   assertThrowsInstanceOf(function () { dbg.hasDebuggee(bad); }, TypeError);
   assertThrowsInstanceOf(function () { dbg.removeDebuggee(bad); }, TypeError);
 }
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 check(g.Object());
 check(g.Object);
 check(g.Function(""));
 
 // A Debugger.Object belonging to a different Debugger is not a valid way
 // to designate a global, even if its referent is a global.
-var g2 = newGlobal();
+var g2 = newGlobal({newCompartment: true});
 var dbg2 = new Debugger;
 var d2g2 = dbg2.addDebuggee(g2);
 check(d2g2);
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-18.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-18.js
@@ -9,18 +9,18 @@ var dbg = new Debugger;
 function assertDebuggees(...expected) {
   print("assertDebuggees([" + expected.map((g) => g.toSource()) + "])");
   var debuggees = dbg.getDebuggees();
   assertEq(expected.length, debuggees.length);
   for (let g of expected)
     assertEq(debuggees.indexOf(g) != -1, true);
 }
 
-var g1 = newGlobal(); g1.toSource = function () { return "[global g1]"; };
-var g2 = newGlobal(); g2.toSource = function () { return "[global g2]"; };
+var g1 = newGlobal({newCompartment: true}); g1.toSource = function () { return "[global g1]"; };
+var g2 = newGlobal({newCompartment: true}); g2.toSource = function () { return "[global g2]"; };
 
 assertDebuggees();
 
 // Produce every possible way to designate g1, for us to play with.
 // Globals can be designated by any of the following:
 //
 // - "CCW": a Cross-Compartment Wrapper (CCW) of a global object
 // - "D.O": a Debugger.Object whose referent is a global object
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-19.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-19.js
@@ -5,29 +5,29 @@ var dbg = new Debugger;
 // If we eval in a debuggee, log which debuggee it was.
 var log;
 dbg.onEnterFrame = function (frame) {
   log += 'e';
   // frame.environment in all evals below is the global lexical env.
   log += frame.environment.parent.object.label;
 };
 
-var g1 = newGlobal();
+var g1 = newGlobal({newCompartment: true});
 log = '';
 g1.eval('Math');
 assertEq(log, '');              // not yet a debuggee
 
 var g1w = dbg.addDebuggee(g1);
 assertEq(g1w instanceof Debugger.Object, true);
 g1w.label = 'g1';
 log = '';
 g1.eval('Math');                // now a debuggee
 assertEq(log, 'eg1');
 
-var g2 = newGlobal();
+var g2 = newGlobal({newCompartment: true});
 log = '';
 g1.eval('Math');                // debuggee
 g2.eval('Math');                // not a debuggee
 assertEq(log, 'eg1');
 
 var g2w = dbg.addDebuggee(g2);
 assertEq(g2w instanceof Debugger.Object, true);
 g2w.label = 'g2';
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-20.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-20.js
@@ -1,17 +1,17 @@
 // addAllGlobalsAsDebuggees adds all the globals as debuggees.
 
-var g1 = newGlobal();           // Created before the Debugger; debuggee.
-var g2 = newGlobal();           // Created before the Debugger; not debuggee.
+var g1 = newGlobal({newCompartment: true});           // Created before the Debugger; debuggee.
+var g2 = newGlobal({newCompartment: true});           // Created before the Debugger; not debuggee.
 
 var dbg = new Debugger;
 
-var g3 = newGlobal();           // Created after the Debugger; debuggee.
-var g4 = newGlobal();           // Created after the Debugger; not debuggee.
+var g3 = newGlobal({newCompartment: true});           // Created after the Debugger; debuggee.
+var g4 = newGlobal({newCompartment: true});           // Created after the Debugger; not debuggee.
 
 var g1w = dbg.addDebuggee(g1);
 var g3w = dbg.addDebuggee(g3);
 assertEq(dbg.addAllGlobalsAsDebuggees(), undefined);
 
 // Get Debugger.Objects viewing the globals from their own compartments;
 // this is the sort that findAllGlobals and addDebuggee return.
 assertEq(g1w, g3w.makeDebuggeeValue(g1).unwrap());
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-22.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-22.js
@@ -1,11 +1,11 @@
 // Adding a debuggee allowed with scripts on stack.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.dbg = new Debugger;
 
 g.eval("" + function f(d) {
   g(d);
   if (d)
     assertEq(dbg.hasDebuggee(this), true);
 });
 
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-23.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-23.js
@@ -1,13 +1,13 @@
 // Adding a debuggee allowed with scripts on stack from stranger places.
 
 // Test CCW.
 (function testCCW() {
-  var g = newGlobal();
+  var g = newGlobal({newCompartment: true});
   var dbg = new Debugger;
   g.dbg = dbg;
   g.GLOBAL = g;
 
   g.turnOnDebugger = function () {
     dbg.addDebuggee(g);
   };
 
@@ -21,81 +21,81 @@
     f(false);
     f(true);
     f(true);
   } + ")();");
 })();
 
 // Test getter.
 (function testGetter() {
-  var g = newGlobal();
+  var g = newGlobal({newCompartment: true});
   g.dbg = new Debugger;
   g.GLOBAL = g;
 
   g.eval("" + function f(obj) {
     obj.foo;
     assertEq(dbg.hasDebuggee(GLOBAL), true);
   });
 
   g.eval("(" + function test() {
     f({ get foo() { dbg.addDebuggee(GLOBAL); } });
   } + ")();");
 })();
 
 // Test setter.
 (function testSetter() {
-  var g = newGlobal();
+  var g = newGlobal({newCompartment: true});
   g.dbg = new Debugger;
   g.GLOBAL = g;
 
   g.eval("" + function f(obj) {
     obj.foo = 42;
     assertEq(dbg.hasDebuggee(GLOBAL), true);
   });
 
   g.eval("(" + function test() {
     f({ set foo(v) { dbg.addDebuggee(GLOBAL); } });
   } + ")();");
 })();
 
 // Test toString.
 (function testToString() {
-  var g = newGlobal();
+  var g = newGlobal({newCompartment: true});
   g.dbg = new Debugger;
   g.GLOBAL = g;
 
   g.eval("" + function f(obj) {
     obj + "";
     assertEq(dbg.hasDebuggee(GLOBAL), true);
   });
 
   g.eval("(" + function test() {
     f({ toString: function () { dbg.addDebuggee(GLOBAL); }});
   } + ")();");
 })();
 
 // Test valueOf.
 (function testValueOf() {
-  var g = newGlobal();
+  var g = newGlobal({newCompartment: true});
   g.dbg = new Debugger;
   g.GLOBAL = g;
 
   g.eval("" + function f(obj) {
     obj + "";
     assertEq(dbg.hasDebuggee(GLOBAL), true);
   });
 
   g.eval("(" + function test() {
     f({ valueOf: function () { dbg.addDebuggee(GLOBAL); }});
   } + ")();");
 })();
 
 // Test proxy trap.
 (function testProxyTrap() {
-  var g = newGlobal();
+  var g = newGlobal({newCompartment: true});
   g.dbg = new Debugger;
   g.GLOBAL = g;
 
   g.eval("" + function f(proxy) {
     proxy["foo"];
     assertEq(dbg.hasDebuggee(GLOBAL), true);
   });
 
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-24.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-24.js
@@ -1,14 +1,14 @@
 // Turning debugger on for a particular global with on-stack scripts shouldn't
 // make other globals' scripts observable.
 
-var g1 = newGlobal();
-var g2 = newGlobal();
-var g3 = newGlobal();
+var g1 = newGlobal({newCompartment: true});
+var g2 = newGlobal({newCompartment: true});
+var g3 = newGlobal({newCompartment: true});
 
 g1.eval("" + function f() {
   var name = "f";
   g();
   return name;
 });
 g2.eval("" + function g() {
   var name = "g";
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-25.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-25.js
@@ -1,13 +1,13 @@
 // Turning debugger off global at a time.
 
-var g1 = newGlobal();
-var g2 = newGlobal();
-var g3 = newGlobal();
+var g1 = newGlobal({newCompartment: true});
+var g2 = newGlobal({newCompartment: true});
+var g3 = newGlobal({newCompartment: true});
 
 g1.eval("" + function f() {
   var name = "f";
   g();
   return name;
 });
 g2.eval("" + function g() {
   var name = "g";
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-26.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-26.js
@@ -1,17 +1,17 @@
 // Ion can bail in-place when throwing exceptions with debug mode toggled on.
 
 load(libdir + "jitopts.js");
 
 if (!jitTogglesMatch(Opts_Ion2NoOffthreadCompilation))
   quit();
 
 withJitOptions(Opts_Ion2NoOffthreadCompilation, function () {
-  var g = newGlobal();
+  var g = newGlobal({newCompartment: true});
   var dbg = new Debugger;
 
   g.toggle = function toggle(x, d) {
     if (d) {
       dbg.addDebuggee(g);
       var frame = dbg.getNewestFrame().older;
       assertEq(frame.callee.name, "f");
       assertEq(frame.implementation, "ion");
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-27.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-27.js
@@ -1,11 +1,11 @@
 // Test that we can OSR with the same script on the stack multiple times.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger;
 
 g.toggle = function toggle() {
   dbg.addDebuggee(g);
   var frame = dbg.getNewestFrame();
 }
 
 g.eval("" + function f(x) {
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-28.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-28.js
@@ -12,17 +12,17 @@ function removeAdd(dbg, g) {
   dbg.removeDebuggee(g);
   dbg.addDebuggee(g);
   var f = dbg.getNewestFrame();
   while (f)
     f = f.older;
 }
 
 function newGlobalDebuggerPair(toggleSeq) {
-  var g = newGlobal();
+  var g = newGlobal({newCompartment: true});
   var dbg = new Debugger;
 
   if (toggleSeq == removeAdd)
     dbg.addDebuggee(g);
 
   g.eval("" + function f() { return g(); });
   g.eval("" + function g() { return h(); });
   g.eval("line0 = Error().lineNumber;");
--- a/js/src/jit-test/tests/debug/Debugger-debuggees-30.js
+++ b/js/src/jit-test/tests/debug/Debugger-debuggees-30.js
@@ -14,17 +14,17 @@ function testAddDebuggee() {
     var dbg = new Debugger();
     assertTypeErrorMessage(() => dbg.addDebuggee(this),
                            "debugger and debuggee must be in different compartments");
 }
 testAddDebuggee();
 
 function testAddAllGlobalsAsDebuggees() {
     var g1 = newGlobal({sameCompartmentAs: this});
-    var g2 = newGlobal();
+    var g2 = newGlobal({newCompartment: true});
     var g3 = newGlobal({sameCompartmentAs: g2});
     var g4 = newGlobal({newCompartment: true, sameZoneAs: this});
     var dbg = new Debugger();
     dbg.addAllGlobalsAsDebuggees();
     assertEq(dbg.hasDebuggee(g1), false);
     assertEq(dbg.hasDebuggee(g2), true);
     assertEq(dbg.hasDebuggee(g3), true);
     assertEq(dbg.hasDebuggee(g4), true);
--- a/js/src/jit-test/tests/debug/Debugger-enabled-01.js
+++ b/js/src/jit-test/tests/debug/Debugger-enabled-01.js
@@ -1,13 +1,13 @@
 var desc = Object.getOwnPropertyDescriptor(Debugger.prototype, "enabled");
 assertEq(typeof desc.get, 'function');
 assertEq(typeof desc.set, 'function');
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var hits;
 var dbg = new Debugger(g);
 assertEq(dbg.enabled, true);
 dbg.onDebuggerStatement = function () { hits++; };
 
 var vals = [true, false, null, undefined, NaN, "blah", {}];
 for (var i = 0; i < vals.length; i++) {
     dbg.enabled = vals[i];
--- a/js/src/jit-test/tests/debug/Debugger-enabled-02.js
+++ b/js/src/jit-test/tests/debug/Debugger-enabled-02.js
@@ -1,11 +1,11 @@
 // Tests that hooks work if set while the Debugger is disabled.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 var log = "";
 
 g.eval("" + function f() { return 42; });
 
 dbg.enabled = false;
 dbg.onEnterFrame = function (frame) {
   log += "1";
--- a/js/src/jit-test/tests/debug/Debugger-findAllGlobals-02.js
+++ b/js/src/jit-test/tests/debug/Debugger-findAllGlobals-02.js
@@ -1,17 +1,17 @@
 // Debugger.prototype.findAllGlobals finds ALL the globals!
 
-var g1 = newGlobal();           // Created before the Debugger; debuggee.
-var g2 = newGlobal();           // Created before the Debugger; not debuggee.
+var g1 = newGlobal({newCompartment: true});           // Created before the Debugger; debuggee.
+var g2 = newGlobal({newCompartment: true});           // Created before the Debugger; not debuggee.
 
 var dbg = new Debugger;
 
-var g3 = newGlobal();           // Created after the Debugger; debuggee.
-var g4 = newGlobal();           // Created after the Debugger; not debuggee.
+var g3 = newGlobal({newCompartment: true});           // Created after the Debugger; debuggee.
+var g4 = newGlobal({newCompartment: true});           // Created after the Debugger; not debuggee.
 
 var g1w = dbg.addDebuggee(g1);
 var g3w = dbg.addDebuggee(g3);
 
 var a = dbg.findAllGlobals();
 
 // Get Debugger.Objects viewing the globals from their own compartments;
 // this is the sort that findAllGlobals and addDebuggee return.
--- a/js/src/jit-test/tests/debug/Debugger-findObjects-02.js
+++ b/js/src/jit-test/tests/debug/Debugger-findObjects-02.js
@@ -1,11 +1,11 @@
 // In a debuggee with live objects, findObjects finds those objects.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 
 let defObject = v => g.eval(`this.${v} = { toString: () => "[object ${v}]" }`);
 defObject("a");
 defObject("b");
 defObject("c");
 
 var dbg = new Debugger();
 var gw = dbg.addDebuggee(g);
--- a/js/src/jit-test/tests/debug/Debugger-findObjects-03.js
+++ b/js/src/jit-test/tests/debug/Debugger-findObjects-03.js
@@ -1,11 +1,11 @@
 // findObjects' result includes objects referenced by other objects.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger();
 var gw = dbg.addDebuggee(g);
 
 g.eval('this.a = { b: {} };');
 
 var bw = gw.makeDebuggeeValue(g.a.b);
 
 var objects = dbg.findObjects();
--- a/js/src/jit-test/tests/debug/Debugger-findObjects-04.js
+++ b/js/src/jit-test/tests/debug/Debugger-findObjects-04.js
@@ -1,11 +1,11 @@
 // findObjects' result includes objects captured by closures.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger();
 var gw = dbg.addDebuggee(g);
 
 g.eval(`
   this.f = (function () {
     let a = { foo: () => {} };
     return () => a;
   }());
--- a/js/src/jit-test/tests/debug/Debugger-findObjects-05.js
+++ b/js/src/jit-test/tests/debug/Debugger-findObjects-05.js
@@ -1,10 +1,10 @@
 // findObjects' result doesn't include any duplicates.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger();
 dbg.addDebuggee(g);
 
 let objects = dbg.findObjects();
 let set = new Set(objects);
 
 assertEq(objects.length, set.size);
--- a/js/src/jit-test/tests/debug/Debugger-findObjects-06.js
+++ b/js/src/jit-test/tests/debug/Debugger-findObjects-06.js
@@ -1,12 +1,12 @@
 // In a debugger with multiple debuggees, findObjects finds objects from all debuggees.
 
-var g1 = newGlobal();
-var g2 = newGlobal();
+var g1 = newGlobal({newCompartment: true});
+var g2 = newGlobal({newCompartment: true});
 var dbg = new Debugger();
 var g1w = dbg.addDebuggee(g1);
 var g2w = dbg.addDebuggee(g2);
 
 g1.eval('this.a = {};');
 g2.eval('this.b = {};');
 
 var objects = dbg.findObjects();
--- a/js/src/jit-test/tests/debug/Debugger-findObjects-07.js
+++ b/js/src/jit-test/tests/debug/Debugger-findObjects-07.js
@@ -1,11 +1,11 @@
 // findObjects can filter objects by class name.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 
 var dbg = new Debugger();
 var gw = dbg.addDebuggee(g);
 
 g.eval('this.re = /foo/;');
 g.eval('this.d = new Date();');
 
 var rew = gw.makeDebuggeeValue(g.re);
--- a/js/src/jit-test/tests/debug/Debugger-findObjects-09.js
+++ b/js/src/jit-test/tests/debug/Debugger-findObjects-09.js
@@ -1,9 +1,9 @@
 // We don't return objects where our query's class name is the prefix of the
 // object's class name and vice versa.
 
 var dbg = new Debugger();
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var gw = dbg.addDebuggee(g);
 
 assertEq(dbg.findObjects({ class: "Objec" }).length, 0);
 assertEq(dbg.findObjects({ class: "Objectttttt" }).length, 0);
--- a/js/src/jit-test/tests/debug/Debugger-findObjects-10.js
+++ b/js/src/jit-test/tests/debug/Debugger-findObjects-10.js
@@ -1,5 +1,5 @@
 // Debugger.prototype.findObjects should not expose internal JSFunction objects.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval(`function f() { return function() {}; }`);
 new Debugger(g).findObjects();
--- a/js/src/jit-test/tests/debug/Debugger-findObjects-11.js
+++ b/js/src/jit-test/tests/debug/Debugger-findObjects-11.js
@@ -1,7 +1,7 @@
 // This shouldn't segfault.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval(`function f() { return function() {
   function g() {}
 }; }`);
 new Debugger(g).findObjects();
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-02.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-02.js
@@ -1,11 +1,11 @@
 // In a debuggee with functions, findScripts finds those functions' scripts.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval('function f(){}');
 g.eval('function g(){}');
 g.eval('function h(){}');
 
 var dbg = new Debugger();
 var gw = dbg.addDebuggee(g);
 var fw = gw.makeDebuggeeValue(g.f);
 var gw = gw.makeDebuggeeValue(g.g);
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-03.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-03.js
@@ -1,11 +1,11 @@
 // While eval code is running, findScripts returns its script.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 var log;
 
 g.check = function () {
     log += 'c';
     var frame = dbg.getNewestFrame();
     assertEq(frame.type, "eval");
     assertEq(dbg.findScripts().indexOf(frame.script) != -1, true);
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-04.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-04.js
@@ -1,10 +1,10 @@
 // Within a series of evals and calls, all their frames' scripts appear in findScripts' result.
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 var log;
 
 g.check = function () {
     log += 'c';
     var scripts = dbg.findScripts();
 
     var innerEvalFrame = dbg.getNewestFrame();
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-05.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-05.js
@@ -1,10 +1,10 @@
 // findScripts' result includes scripts for nested functions.
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger();
 var gw = dbg.addDebuggee(g);
 var log;
 
 g.eval('function f() { return function g() { return function h() { return "Squee!"; } } }');
 var fw = gw.makeDebuggeeValue(g.f);
 var gw = gw.makeDebuggeeValue(g.f());
 var hw = gw.makeDebuggeeValue(g.f()());
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-06.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-06.js
@@ -1,11 +1,11 @@
 // In a debugger with multiple debuggees, findScripts finds scripts across all debuggees.
-var g1 = newGlobal();
-var g2 = newGlobal();
+var g1 = newGlobal({newCompartment: true});
+var g2 = newGlobal({newCompartment: true});
 var dbg = new Debugger();
 var g1w = dbg.addDebuggee(g1);
 var g2w = dbg.addDebuggee(g2);
 
 g1.eval('function f() {}');
 g2.eval('function g() {}');
 
 var scripts = dbg.findScripts();
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-07.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-07.js
@@ -1,12 +1,12 @@
 // findScripts can filter scripts by global.
-var g1 = newGlobal();
-var g2 = newGlobal();
-var g3 = newGlobal();
+var g1 = newGlobal({newCompartment: true});
+var g2 = newGlobal({newCompartment: true});
+var g3 = newGlobal({newCompartment: true});
 
 var dbg = new Debugger();
 var g1w = dbg.addDebuggee(g1);
 var g2w = dbg.addDebuggee(g2);
 
 g1.eval('function f() {}');
 g2.eval('function g() {}');
 g2.eval('function h() {}');
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-08.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-08.js
@@ -1,12 +1,12 @@
 // Debugger.prototype.findScripts can filter scripts by URL.
-var g1 = newGlobal();
-var g2 = newGlobal();
-var g3 = newGlobal();
+var g1 = newGlobal({newCompartment: true});
+var g2 = newGlobal({newCompartment: true});
+var g3 = newGlobal({newCompartment: true});
 
 // Define some functions whose url will be this test file.
 g1.eval('function g1f() {}');
 g2.eval('function g2f() {}');
 
 // Define some functions whose url will be a different file.
 url2 = scriptdir + "Debugger-findScripts-08-script2";
 load(url2);
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-10.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-10.js
@@ -1,13 +1,13 @@
 // Specifying a non-debuggee global in a Debugger.prototype.findScripts query should
 // cause the query to return no scripts.
 
-var g1 = newGlobal();
+var g1 = newGlobal({newCompartment: true});
 g1.eval('function f(){}');
 
-var g2 = newGlobal();
+var g2 = newGlobal({newCompartment: true});
 g2.eval('function g(){}');
 
 var dbg = new Debugger(g1);
 assertEq(dbg.findScripts({global:g1}).length > 0, true);
 assertEq(dbg.findScripts({global:g2}).length, 0);
 assertEq(dbg.findScripts({global:this}).length, 0);
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-11.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-11.js
@@ -1,10 +1,10 @@
 // Debugger.prototype.findScripts can filter scripts by line number.
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger();
 var gw = dbg.addDebuggee(g);
 
 var scriptname = scriptdir + 'Debugger-findScripts-11-script2';
 g.load(scriptname);
 
 var gfw = gw.makeDebuggeeValue(g.f);
 var ggw = gw.makeDebuggeeValue(g.f());
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-12.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-12.js
@@ -1,24 +1,24 @@
 // Debugger.prototype.findScripts can filter by global, url, and line number.
 
 // Two scripts, with different functions at the same line numbers.
 var url1 = scriptdir + 'Debugger-findScripts-12-script1';
 var url2 = scriptdir + 'Debugger-findScripts-12-script2';
 
 // Three globals: two with code, one with nothing.
-var g1 = newGlobal();
+var g1 = newGlobal({newCompartment: true});
 g1.toSource = () => "[global g1]";
 g1.load(url1);
 g1.load(url2);
-var g2 = newGlobal();
+var g2 = newGlobal({newCompartment: true});
 g2.toSource = () => "[global g2]";
 g2.load(url1);
 g2.load(url2);
-var g3 = newGlobal();
+var g3 = newGlobal({newCompartment: true});
 
 var dbg = new Debugger(g1, g2, g3);
 
 function script(func) {
     var gw = dbg.addDebuggee(func.global);
     var script = gw.makeDebuggeeValue(func).script;
     script.toString = function () {
         return "[Debugger.Script for " + func.name + " in " + uneval(func.global) + "]";
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-14.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-14.js
@@ -1,11 +1,11 @@
 // Debugger.prototype.findScripts can find the innermost script at a given
 // source location.
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger();
 var gw = dbg.addDebuggee(g);
 
 function script(f) {
     return gw.makeDebuggeeValue(f).script;
 }
 
 function arrayIsOnly(array, element) {
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-15.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-15.js
@@ -1,9 +1,9 @@
 // findScripts finds non-compile-and-go scripts
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.evaluate("function f(x) { return x + 1; }");
 var dbg = new Debugger;
 var gw = dbg.addDebuggee(g);
 var s = dbg.findScripts();
 var fw = gw.getOwnPropertyDescriptor("f").value;
 assertEq(s.indexOf(fw.script) !== -1, true);
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-16.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-16.js
@@ -1,11 +1,11 @@
 // Bug 744731 - findScripts() finds active debugger executeInGlobal scripts.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger;
 var gw = dbg.addDebuggee(g);
 var hits = 0;
 dbg.onDebuggerStatement = function (frame) {
     hits++;
     assertEq(dbg.findScripts().indexOf(dbg.getNewestFrame().script) !== -1, true);
 };
 gw.executeInGlobal("debugger;");
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-17.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-17.js
@@ -1,11 +1,11 @@
 // Bug 744731 - findScripts() finds active debugger frame.eval scripts.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger;
 var gw = dbg.addDebuggee(g);
 var hits = 0;
 dbg.onDebuggerStatement = function (frame) {
     dbg.onDebuggerStatement = function (frame) {
         hits++;
         assertEq(dbg.findScripts().indexOf(dbg.getNewestFrame().script) !== -1, true);
     };
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-18.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-18.js
@@ -1,12 +1,12 @@
 // In a debuggee with multiple scripts with varying displayURLs (aka //#
 // sourceURL), findScripts can filter by displayURL.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 
 g.eval("function f(){} //# sourceURL=f.js");
 g.eval("function g(){} //# sourceURL=g.js");
 g.eval("function h(){}");
 
 var dbg = new Debugger();
 var gw = dbg.addDebuggee(g);
 var fw = gw.makeDebuggeeValue(g.f);
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-19.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-19.js
@@ -1,5 +1,5 @@
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 try { g.eval('function drag(ev) {'); } catch (ex) { }
 for (s of dbg.findScripts())
   s.lineCount;
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-20.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-20.js
@@ -1,9 +1,9 @@
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger();
 var gw = dbg.addDebuggee(g);
 
 g.eval('function f(){}');
 
 var o = gw.makeDebuggeeValue(g.f);
 
 var allScripts = dbg.findScripts();
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-22.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-22.js
@@ -1,8 +1,8 @@
 // Bug 1239813: Don't let compartments get GC'd while findScripts is holding
 // them in its ScriptQuery's hash set.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger();
 dbg.addDebuggee(g);
 g = newGlobal({sameZoneAs: g.Math});
 dbg.findScripts({get source() { gc(); return undefined; }});
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-23.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-23.js
@@ -1,13 +1,13 @@
 // If a script is (re)lazified, findScripts should not delazify it.
 
 var dbg = new Debugger();
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval('function f(){}');
 assertEq(g.eval('isLazyFunction(f)'), true);
 
 dbg.addDebuggee(g);
 dbg.findScripts();
 assertEq(g.eval('isLazyFunction(f)'), true);
 
 dbg.removeAllDebuggees();
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-24.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-24.js
@@ -1,13 +1,13 @@
 // findScripts should reject Debugger.Source objects from other Debuggers.
 
 load(libdir + 'asserts.js');
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.evaluate(`function f() { print("earth/heart/hater"); }`,
            { lineNumber: 1800 });
 
 var dbg1 = new Debugger;
 var gDO1 = dbg1.addDebuggee(g);
 var fDO1 = gDO1.getOwnPropertyDescriptor('f').value;
 assertEq(fDO1.script.source instanceof Debugger.Source, true);
 
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-optimized-out.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-optimized-out.js
@@ -1,15 +1,15 @@
 // Accessing Debugger.Script's properties which triggers delazification can
 // fail if the function for the script is optimized out.
 // It shouldn't crash but just throw an error.
 
 load(libdir + "asserts.js");
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 g.eval(`
 function enclosing() {
     (function g1() {});
     (function* g2() {});
     (async function g3() {});
     (async function* g4() {});
     () => {};
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-uncompleted-01.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-uncompleted-01.js
@@ -1,12 +1,12 @@
 // Uncompleted scripts and their inner scripts shouldn't be found in
 // findScripts.
 
-let g = newGlobal();
+let g = newGlobal({newCompartment: true});
 let dbg = new Debugger(g);
 
 let message = "";
 try {
   g.eval(`
 (function nonLazyOuter() {
   (function nonLazyInner() {
     function lazy1() {
--- a/js/src/jit-test/tests/debug/Debugger-findScripts-uncompleted-02.js
+++ b/js/src/jit-test/tests/debug/Debugger-findScripts-uncompleted-02.js
@@ -1,11 +1,11 @@
 // Uncompleted scripts shouldn't be found in findScripts.
 
-let g = newGlobal();
+let g = newGlobal({newCompartment: true});
 let dbg = new Debugger(g);
 
 let message = "";
 try {
   g.eval(`
 (function nonLazyOuter() {
   (function nonLazyInner() {
     function lazy1() {
--- a/js/src/jit-test/tests/debug/Debugger-findSources-02.js
+++ b/js/src/jit-test/tests/debug/Debugger-findSources-02.js
@@ -1,11 +1,11 @@
 // In a debugger with scripts, findSources finds the script source.
 
-const g = newGlobal();
+const g = newGlobal({newCompartment: true});
 // Declare a function in order to keep the script source alive across GC.
 g.evaluate(`function fa() {}`, { fileName: "a.js" });
 g.evaluate(`function fb() {}`, { fileName: "b.js" });
 g.evaluate(`function fc() {}`, { fileName: "c.js" });
 
 const dbg = new Debugger();
 const gw = dbg.addDebuggee(g);
 
--- a/js/src/jit-test/tests/debug/Debugger-findSources-03.js
+++ b/js/src/jit-test/tests/debug/Debugger-findSources-03.js
@@ -1,12 +1,12 @@
 // In a debugger with multiple debuggees, findSources finds script sources across all debuggees.
 
-const g1 = newGlobal();
-const g2 = newGlobal();
+const g1 = newGlobal({newCompartment: true});
+const g2 = newGlobal({newCompartment: true});
 // Declare a function in order to keep the script source alive across GC.
 g1.evaluate(`function fa() {}`, { fileName: "a.js" });
 g1.evaluate(`function fb() {}`, { fileName: "b.js" });
 g2.evaluate(`function fc() {}`, { fileName: "c.js" });
 g2.evaluate(`function fd() {}`, { fileName: "d.js" });
 
 const dbg = new Debugger();
 const g1w = dbg.addDebuggee(g1);
--- a/js/src/jit-test/tests/debug/Debugger-getNewestFrame-01.js
+++ b/js/src/jit-test/tests/debug/Debugger-getNewestFrame-01.js
@@ -1,13 +1,13 @@
 // getNewestFrame basics.
 
 load(libdir + "asserts.js");
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 assertEq(dbg.getNewestFrame(), null);
 
 var global = this;
 var frame;
 function f() {
     frame = dbg.getNewestFrame();
     assertEq(frame instanceof Debugger.Frame, true);
--- a/js/src/jit-test/tests/debug/Debugger-getNewestFrame-02.js
+++ b/js/src/jit-test/tests/debug/Debugger-getNewestFrame-02.js
@@ -1,11 +1,11 @@
 // Hooks and Debugger.prototype.getNewestFrame produce the same Frame object.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var hits = 0;
 var savedFrame, savedCallee;
 dbg.onDebuggerStatement = function (frame) {
     assertEq(frame, savedFrame);
     assertEq(frame.live, true);
     assertEq(frame.callee, savedCallee);
     hits++;
--- a/js/src/jit-test/tests/debug/Debugger-getNewestFrame-03.js
+++ b/js/src/jit-test/tests/debug/Debugger-getNewestFrame-03.js
@@ -1,9 +1,9 @@
 // Debugger.prototype.getNewestFrame() ignores dummy frames.
 // See bug 678086.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.f = function () { return dbg.getNewestFrame(); };
 var dbg = new Debugger;
 var gw = dbg.addDebuggee(g);
 var fw = gw.getOwnPropertyDescriptor("f").value;
 assertEq(fw.call().return, null);
--- a/js/src/jit-test/tests/debug/Debugger-getNewestFrame-generators-01.js
+++ b/js/src/jit-test/tests/debug/Debugger-getNewestFrame-generators-01.js
@@ -1,13 +1,13 @@
 // Generator/async frames can be created and revived by calling Debugger.getNewestFrame().
 //
 // Modified copy of Frame-older-generators-01.js.
 
-let g = newGlobal();
+let g = newGlobal({newCompartment: true});
 g.eval(`
     function* gen() {
         f();
         yield 1;
         f();
     }
     function* genDefaults(x=f()) {
         f();
--- a/js/src/jit-test/tests/debug/Debugger-multi-01.js
+++ b/js/src/jit-test/tests/debug/Debugger-multi-01.js
@@ -1,11 +1,11 @@
 // When there are multiple debuggers, their hooks are called in order.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var log;
 var arr = [];
 
 function addDebug(msg) {
     var dbg = new Debugger(g);
     dbg.onDebuggerStatement = function (stack) { log += msg; };
     arr.push(dbg);
 }
--- a/js/src/jit-test/tests/debug/Debugger-multi-02.js
+++ b/js/src/jit-test/tests/debug/Debugger-multi-02.js
@@ -1,13 +1,13 @@
 // Test adding hooks during dispatch. The behavior is deterministic and "nice",
 // but mainly what we are checking here is that we do not crash due to
 // modifying a data structure while we're iterating over it.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var n = 0;
 var hits;
 
 function addDebugger() {
     var dbg = new Debugger(g);
     dbg.onDebuggerStatement = function (stack) {
         hits++;
         addDebugger();
--- a/js/src/jit-test/tests/debug/Debugger-multi-03.js
+++ b/js/src/jit-test/tests/debug/Debugger-multi-03.js
@@ -1,21 +1,21 @@
 // Q: But who shall debug the debuggers?  A: jimb
 
 var log = '';
 
 function addDebug(g, id) {
-    var debuggerGlobal = newGlobal();
+    var debuggerGlobal = newGlobal({newCompartment: true});
     debuggerGlobal.debuggee = g;
     debuggerGlobal.id = id;
     debuggerGlobal.print = function (s) { log += s; };
     debuggerGlobal.eval(
         'var dbg = new Debugger(debuggee);\n' +
         'dbg.onDebuggerStatement = function () { print(id); debugger; print(id); };\n');
     return debuggerGlobal;
 }
 
-var base = newGlobal();
+var base = newGlobal({newCompartment: true});
 var top = base;
 for (var i = 0; i < 8; i++)  // why have 2 debuggers when you can have 8
     top = addDebug(top, i);
 base.eval("debugger;");
 assertEq(log, '0123456776543210');
--- a/js/src/jit-test/tests/debug/Debugger-onEnterFrame-resumption-01.js
+++ b/js/src/jit-test/tests/debug/Debugger-onEnterFrame-resumption-01.js
@@ -1,11 +1,11 @@
 // If debugger.onEnterFrame returns {return:val}, the frame returns.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.set = false;
 g.eval("function f() {\n" +
        "    set = true;\n" +
        "    return 'fail';\n" +
        "}\n");
 g.eval("function g() { return 'g ' + f(); }");
 g.eval("function h() { return 'h ' + g(); }");
 
--- a/js/src/jit-test/tests/debug/Debugger-onEnterFrame-resumption-02.js
+++ b/js/src/jit-test/tests/debug/Debugger-onEnterFrame-resumption-02.js
@@ -1,13 +1,13 @@
 // If debugger.onEnterFrame returns {throw:val}, an exception is thrown in the debuggee.
 
 load(libdir + "asserts.js");
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.set = false;
 g.eval("function f() {\n" +
        "    set = true;\n" +
        "    return 'fail';\n" +
        "}\n");
 
 var dbg = Debugger(g);
 var savedFrame;
--- a/js/src/jit-test/tests/debug/Debugger-onEnterFrame-resumption-03.js
+++ b/js/src/jit-test/tests/debug/Debugger-onEnterFrame-resumption-03.js
@@ -1,13 +1,13 @@
 // If debugger.onEnterFrame returns null, the debuggee is terminated immediately.
 
 load(libdir + "asserts.js");
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.set = false;
 
 var dbg = Debugger(g);
 var savedFrame;
 dbg.onDebuggerStatement = function (frame) {
     var innerSavedFrame;
     dbg.onEnterFrame = function (frame) {
         innerSavedFrame = frame;
--- a/js/src/jit-test/tests/debug/Debugger-onEnterFrame-resumption-04.js
+++ b/js/src/jit-test/tests/debug/Debugger-onEnterFrame-resumption-04.js
@@ -1,11 +1,11 @@
 // If debugger.onEnterFrame returns undefined, the frame should continue execution.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var hits = 0;
 var savedFrame;
 dbg.onEnterFrame = function (frame) {
     hits++;
     savedFrame = frame;
     return undefined;
 };
--- a/js/src/jit-test/tests/debug/Debugger-onEnterFrame-resumption-05.js
+++ b/js/src/jit-test/tests/debug/Debugger-onEnterFrame-resumption-05.js
@@ -11,17 +11,17 @@
 // The exception is REJOIN_THIS_PROTOTYPE, which can be reached reliably if you
 // add a JS_GC call to stubs::GetPropNoCache. JIT code calls that stub to
 // retrieve the 'prototype' property of a function called as a constructor, if
 // TI can't establish the exact identity of that prototype's value at compile
 // time. Thus the preoccupation with constructors here.
 
 load(libdir + "asserts.js");
 
-var debuggee = newGlobal();
+var debuggee = newGlobal({newCompartment: true});
 var dbg = Debugger(debuggee);
 var hits, savedFrame;
 
 // Allow the constructor to return normally.
 dbg.onEnterFrame = function (frame) {
     hits++;
     if (frame.constructing) {
         savedFrame = frame;
--- a/js/src/jit-test/tests/debug/Debugger-onNewGlobalObject-13.js
+++ b/js/src/jit-test/tests/debug/Debugger-onNewGlobalObject-13.js
@@ -3,15 +3,15 @@
 var dbg = new Debugger;
 
 var gw = null;
 dbg.onNewGlobalObject = function (global) {
   assertEq(arguments.length, 1);
   assertEq(this, dbg);
   gw = global;
 };
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 assertEq(typeof gw, 'object');
 assertEq(dbg.addDebuggee(g), gw);
 
 // The Debugger.Objects passed to onNewGlobalObject are the global as
 // viewed from its own compartment.
 assertEq(gw.makeDebuggeeValue(g), gw);
--- a/js/src/jit-test/tests/debug/Debugger-onNewGlobalObject-14.js
+++ b/js/src/jit-test/tests/debug/Debugger-onNewGlobalObject-14.js
@@ -7,11 +7,11 @@ dbg.onNewGlobalObject = function (global
   var gw = dbg.addDebuggee(global);
   gw.defineProperty('x', { value: -1 });
   // Check that the global's magic lazy properties are working.
   assertEq(gw.executeInGlobalWithBindings('Math.atan2(y,x)', { y: 0 }).return, Math.PI);
   // Check that the global's prototype is hooked up.
   assertEq(gw.executeInGlobalWithBindings('x.toString()', { x: gw }).return, "[object global]");
 };
 
-newGlobal();
+newGlobal({newCompartment: true});
 
 assertEq(log, 'n');
--- a/js/src/jit-test/tests/debug/Debugger-onNewPromise-01.js
+++ b/js/src/jit-test/tests/debug/Debugger-onNewPromise-01.js
@@ -1,12 +1,12 @@
 // Test that the onNewPromise hook gets called when promises are allocated in
 // the scope of debuggee globals.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger();
 var gw = dbg.addDebuggee(g);
 
 
 let promisesFound = [];
 dbg.onNewPromise = p => { promisesFound.push(p); };
 
 let p1 = new g.Promise(function (){});
--- a/js/src/jit-test/tests/debug/Debugger-onNewPromise-02.js
+++ b/js/src/jit-test/tests/debug/Debugger-onNewPromise-02.js
@@ -1,11 +1,11 @@
 // onNewPromise handlers fire, until they are removed.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 var log;
 
 log = '';
 new g.Promise(function (){});
 assertEq(log, '');
 
 dbg.onNewPromise = function (promise) {
--- a/js/src/jit-test/tests/debug/Debugger-onNewPromise-03.js
+++ b/js/src/jit-test/tests/debug/Debugger-onNewPromise-03.js
@@ -1,11 +1,11 @@
 // onNewPromise handlers on different Debugger instances are independent.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg1 = new Debugger(g);
 var log1;
 function h1(promise) {
   log1 += 'n';
   assertEq(promise.seen, undefined);
   promise.seen = true;
 }
 
--- a/js/src/jit-test/tests/debug/Debugger-onNewPromise-04.js
+++ b/js/src/jit-test/tests/debug/Debugger-onNewPromise-04.js
@@ -1,10 +1,10 @@
 // An onNewPromise handler can disable itself.
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 var log;
 
 dbg.onNewPromise = function (promise) {
   log += 'n';
   dbg.onNewPromise = undefined;
 };
 
--- a/js/src/jit-test/tests/debug/Debugger-onNewPromise-05.js
+++ b/js/src/jit-test/tests/debug/Debugger-onNewPromise-05.js
@@ -1,11 +1,11 @@
 // Creating a promise within an onNewPromise handler causes a recursive handler
 // invocation.
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger();
 var gw = dbg.addDebuggee(g);
 var log;
 var depth;
 
 dbg.onNewPromise = function (promise) {
   log += '('; depth++;
 
--- a/js/src/jit-test/tests/debug/Debugger-onNewPromise-06.js
+++ b/js/src/jit-test/tests/debug/Debugger-onNewPromise-06.js
@@ -1,13 +1,13 @@
 // Resumption values from onNewPromise handlers are disallowed.
 
 load(libdir + 'asserts.js');
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 var log;
 
 dbg.onNewPromise = function (g) { log += 'n'; return undefined; };
 log = '';
 assertEq(typeof new g.Promise(function (){}), "object");
 assertEq(log, 'n');
 
--- a/js/src/jit-test/tests/debug/Debugger-onNewPromise-07.js
+++ b/js/src/jit-test/tests/debug/Debugger-onNewPromise-07.js
@@ -1,12 +1,12 @@
 // Errors in onNewPromise handlers are reported correctly, and don't mess up the
 // promise creation.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 
 let e;
 dbg.uncaughtExceptionHook = ee => { e = ee; };
 dbg.onNewPromise = () => { throw new Error("woops!"); };
 
 assertEq(typeof new g.Promise(function (){}), "object");
 assertEq(!!e, true);
--- a/js/src/jit-test/tests/debug/Debugger-onPromiseSettled-01.js
+++ b/js/src/jit-test/tests/debug/Debugger-onPromiseSettled-01.js
@@ -1,11 +1,11 @@
 // Test that the onPromiseSettled hook gets called when a promise settles.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger();
 var gw = dbg.addDebuggee(g);
 
 let log = "";
 let pw;
 dbg.onPromiseSettled = pw_ => {
   pw = pw_;
   log += "s";
--- a/js/src/jit-test/tests/debug/Debugger-onPromiseSettled-02.js
+++ b/js/src/jit-test/tests/debug/Debugger-onPromiseSettled-02.js
@@ -1,11 +1,11 @@
 // onPromiseSettled handlers fire, until they are removed.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 var log;
 
 log = '';
 g.settlePromiseNow(new g.Promise(function (){}));
 assertEq(log, '');
 
 dbg.onPromiseSettled = function (promise) {
--- a/js/src/jit-test/tests/debug/Debugger-onPromiseSettled-03.js
+++ b/js/src/jit-test/tests/debug/Debugger-onPromiseSettled-03.js
@@ -1,10 +1,10 @@
 // onPromiseSettled handlers on different Debugger instances are independent.
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg1 = new Debugger(g);
 var log1;
 function h1(promise) {
   log1 += 's';
   assertEq(promise.seen, undefined);
   promise.seen = true;
 }
 
--- a/js/src/jit-test/tests/debug/Debugger-onPromiseSettled-04.js
+++ b/js/src/jit-test/tests/debug/Debugger-onPromiseSettled-04.js
@@ -1,10 +1,10 @@
 // An onPromiseSettled handler can disable itself.
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 var log;
 
 dbg.onPromiseSettled = function (promise) {
   log += 's';
   dbg.onPromiseSettled = undefined;
 };
 
--- a/js/src/jit-test/tests/debug/Debugger-onPromiseSettled-05.js
+++ b/js/src/jit-test/tests/debug/Debugger-onPromiseSettled-05.js
@@ -1,12 +1,12 @@
 // Settling a promise within an onPromiseSettled handler causes a recursive
 // handler invocation.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger();
 var gw = dbg.addDebuggee(g);
 var log;
 var depth;
 
 dbg.onPromiseSettled = function (promise) {
   log += '('; depth++;
 
--- a/js/src/jit-test/tests/debug/Debugger-onPromiseSettled-06.js
+++ b/js/src/jit-test/tests/debug/Debugger-onPromiseSettled-06.js
@@ -1,13 +1,13 @@
 // Resumption values from onPromiseSettled handlers are disallowed.
 
 load(libdir + 'asserts.js');
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 var log;
 
 dbg.onPromiseSettled = function (g) { log += 's'; return undefined; };
 log = '';
 g.settlePromiseNow(new g.Promise(function (){}));
 assertEq(log, 's');
 
--- a/js/src/jit-test/tests/debug/Environment-01.js
+++ b/js/src/jit-test/tests/debug/Environment-01.js
@@ -1,11 +1,11 @@
 // A live Environment can observe the new variables introduced by ES5 non-strict direct eval.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval("var x = 'global'; function f(s) { h(); eval(s); h(); }");
 g.eval("function h() { debugger; }");
 var dbg = Debugger(g);
 var env = undefined;
 var hits = 0;
 dbg.onDebuggerStatement = function (hframe) {
     if (env === undefined) {
         // First debugger statement.
--- a/js/src/jit-test/tests/debug/Environment-02.js
+++ b/js/src/jit-test/tests/debug/Environment-02.js
@@ -1,11 +1,11 @@
 // The last Environment on the environment chain always has .type == "object" and .object === the global object.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger;
 var gw = dbg.addDebuggee(g);
 g.eval("function h() { debugger; }");
 var hits = 0;
 dbg.onDebuggerStatement = function (hframe) {
     var env = hframe.older.environment;
     while (env.parent)
         env = env.parent;
--- a/js/src/jit-test/tests/debug/Environment-03.js
+++ b/js/src/jit-test/tests/debug/Environment-03.js
@@ -1,10 +1,10 @@
 // Test that getting a function's environment can unlazify scripts.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval('function f() { }');
 var dbg = new Debugger;
 var gw = dbg.makeGlobalObjectReference(g);
 var fw = gw.getOwnPropertyDescriptor('f').value;
 gc();
 dbg.addDebuggee(g);
 var fenv = fw.environment;
--- a/js/src/jit-test/tests/debug/Environment-Function-prototype.js
+++ b/js/src/jit-test/tests/debug/Environment-Function-prototype.js
@@ -1,7 +1,7 @@
 // Don't crash when getting the Debugger.Environment of a frame inside
 // Function.prototype.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 dbg.onEnterFrame = function (frame) { frame.environment; };
 g.Function.prototype();
--- a/js/src/jit-test/tests/debug/Environment-bug-1431461.js
+++ b/js/src/jit-test/tests/debug/Environment-bug-1431461.js
@@ -1,11 +1,11 @@
 // Check that duplicate bindings are not created for let/const variables.
 
-let g = newGlobal();
+let g = newGlobal({newCompartment: true});
 let dbg = new Debugger(g);
 
 g.eval(`
 function f(x, y=x) {
     let z = "Z";
     debugger;
     return x + y + z;
 }
--- a/js/src/jit-test/tests/debug/Environment-callee-01.js
+++ b/js/src/jit-test/tests/debug/Environment-callee-01.js
@@ -1,12 +1,12 @@
 // Debugger.Environment.prototype.callee reveals the callee of environments
 // that have them.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger;
 var gw = dbg.addDebuggee(g);
 
 function check(code, expectedType, expectedCallee) {
   print("check(" + uneval(code) + ")");
   var hits;
   dbg.onDebuggerStatement = function (frame) {
     hits++;
--- a/js/src/jit-test/tests/debug/Environment-callee-02.js
+++ b/js/src/jit-test/tests/debug/Environment-callee-02.js
@@ -1,11 +1,11 @@
 // Debugger.Environment.prototype.callee gets the right closure.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger;
 var gw = dbg.addDebuggee(g);
 
 g.eval('function f(x) { return function (y) { debugger; return x + y; } }');
 g.eval('var g = f(2);');
 g.eval('var h = f(3);');
 
 function check(fun, label) {
--- a/js/src/jit-test/tests/debug/Environment-callee-03.js
+++ b/js/src/jit-test/tests/debug/Environment-callee-03.js
@@ -1,12 +1,12 @@
 // Environments of different instances of the same generator have the same
 // callee. I love this job.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger;
 var gw = dbg.addDebuggee(g);
 
 function check(gen, label) {
   print("check(" + label + ")");
   var hits;
   dbg.onDebuggerStatement = function (frame) {
     hits++;
--- a/js/src/jit-test/tests/debug/Environment-callee-04.js
+++ b/js/src/jit-test/tests/debug/Environment-callee-04.js
@@ -1,13 +1,13 @@
 // We shouldn't hand out environment callees when we can only provide the
 // internal function object, not the live function object. (We should never
 // create Debugger.Object instances referring to internal function objects.)
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 
 dbg.onDebuggerStatement = function (frame) {
   assertEq(frame.older.environment.parent.callee, null);
 }
 
 g.evaluate(`
 
--- a/js/src/jit-test/tests/debug/Environment-find-01.js
+++ b/js/src/jit-test/tests/debug/Environment-find-01.js
@@ -1,11 +1,11 @@
 // find sees that vars are hoisted out of with statements.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var hits = 0;
 dbg.onDebuggerStatement = function (frame) {
     assertEq(frame.environment.find("x").type, "with");
     hits++;
 };
 
 assertEq(g.eval("(function () {\n" +
--- a/js/src/jit-test/tests/debug/Environment-find-02.js
+++ b/js/src/jit-test/tests/debug/Environment-find-02.js
@@ -1,11 +1,11 @@
 // env.find() finds nonenumerable names in the global environment.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var hits = 0;
 g.h = function () {
     var env = dbg.getNewestFrame().environment;
     var last = env;
     while (last.parent)
         last = last.parent;
 
--- a/js/src/jit-test/tests/debug/Environment-find-03.js
+++ b/js/src/jit-test/tests/debug/Environment-find-03.js
@@ -1,11 +1,11 @@
 // env.find() finds nonenumerable properties in with statements.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var hits = 0;
 g.h = function () {
     var frame = dbg.getNewestFrame();
     var target = frame.eval("obj").return;
     var env = frame.environment.find("PI");
     assertEq(env.object, target);
     hits++;
--- a/js/src/jit-test/tests/debug/Environment-find-04.js
+++ b/js/src/jit-test/tests/debug/Environment-find-04.js
@@ -1,13 +1,13 @@
 // env.find throws a TypeError if the argument is not an identifier.
 
 load(libdir + "asserts.js");
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var hits = 0;
 g.h = function () {
     var env = dbg.getNewestFrame().environment;
     assertThrowsInstanceOf(function () { env.find(); }, TypeError);
     assertThrowsInstanceOf(function () { env.find(""); }, TypeError);
     assertThrowsInstanceOf(function () { env.find(" "); }, TypeError);
     assertThrowsInstanceOf(function () { env.find(0); }, TypeError);
--- a/js/src/jit-test/tests/debug/Environment-find-06.js
+++ b/js/src/jit-test/tests/debug/Environment-find-06.js
@@ -1,12 +1,12 @@
 // Environment.prototype.find finds bindings that are function arguments, 'let'
 // bindings, or FunctionExpression names.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval("function h() { debugger; }");
 
 var dbg = new Debugger(g);
 
 function test1(code) {
     var hits = 0;
     dbg.onDebuggerStatement = function (frame) {
         var env = frame.older.environment.find('X');
--- a/js/src/jit-test/tests/debug/Environment-find-07.js
+++ b/js/src/jit-test/tests/debug/Environment-find-07.js
@@ -1,11 +1,11 @@
 // We can find into and from optimized out scopes.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger;
 dbg.addDebuggee(g);
 
 g.eval("" + function f() {
   var x = 42;
   function g() { }
   g();
 });
--- a/js/src/jit-test/tests/debug/Environment-gc-01.js
+++ b/js/src/jit-test/tests/debug/Environment-gc-01.js
@@ -1,11 +1,11 @@
 // An Environment keeps its referent alive.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval("function f(x) { return 2 * x; }");
 var dbg = Debugger(g);
 var env;
 dbg.onEnterFrame = function (frame) { env = frame.environment; };
 assertEq(g.f(22), 44);
 dbg.onEnterFrame = undefined;
 
 assertEq(env.find("x"), env);
--- a/js/src/jit-test/tests/debug/Environment-gc-02.js
+++ b/js/src/jit-test/tests/debug/Environment-gc-02.js
@@ -1,12 +1,12 @@
 // A closure's .environment keeps the lexical environment alive even if the closure is destroyed.
 
 var N = 4;
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval("function add(a) { return function (b) { return eval('a + b'); }; }");
 var dbg = new Debugger;
 var gw = dbg.addDebuggee(g);
 var aw = gw.getOwnPropertyDescriptor("add").value;
 
 // Create N closures and collect environments.
 var arr = [];
 for (var i = 0; i < N; i++)
--- a/js/src/jit-test/tests/debug/Environment-gc-03.js
+++ b/js/src/jit-test/tests/debug/Environment-gc-03.js
@@ -1,11 +1,11 @@
 // Test that block scopes cannot be resurrected by onStep.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 dbg.onDebuggerStatement = function(frame) {
     frame.onStep = (function() {
         frame.environment;
     });
 };
 
 g.eval("debugger; for (let i = 0; i < 1; i++) (function(){});");
--- a/js/src/jit-test/tests/debug/Environment-getVariable-01.js
+++ b/js/src/jit-test/tests/debug/Environment-getVariable-01.js
@@ -1,11 +1,11 @@
 // Environment.prototype.getVariable does not see variables bound in enclosing scopes.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var hits = 0;
 dbg.onDebuggerStatement = function (frame) {
     assertEq(frame.environment.getVariable("x"), 13);
     assertEq(frame.environment.getVariable("k"), undefined);
     assertEq(frame.environment.find("k").getVariable("k"), 3);
     hits++;
 };
--- a/js/src/jit-test/tests/debug/Environment-getVariable-02.js
+++ b/js/src/jit-test/tests/debug/Environment-getVariable-02.js
@@ -1,11 +1,11 @@
 // getVariable works in function scopes.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var hits = 0;
 dbg.onDebuggerStatement = function (frame) {
     var lexicalEnv = frame.environment;
     var varEnv = lexicalEnv.parent;
     assertEq(varEnv.getVariable("a"), 1);
     assertEq(varEnv.getVariable("b"), 2);
     assertEq(varEnv.getVariable("c"), 3);
--- a/js/src/jit-test/tests/debug/Environment-getVariable-03.js
+++ b/js/src/jit-test/tests/debug/Environment-getVariable-03.js
@@ -1,11 +1,11 @@
 // getVariable sees bindings in let-block scopes.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var log = '';
 dbg.onDebuggerStatement = function (frame) {
     log += frame.environment.getVariable("x");
 };
 g.eval("function f() {\n" +
        "    let x = 'a';\n" +
        "    debugger;\n" +
--- a/js/src/jit-test/tests/debug/Environment-getVariable-04.js
+++ b/js/src/jit-test/tests/debug/Environment-getVariable-04.js
@@ -1,11 +1,11 @@
 // getVariable sees variables in function scopes added by non-strict direct eval.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var v;
 dbg.onDebuggerStatement = function (frame) {
     v = frame.environment.getVariable("x");
 };
 
 g.eval("function f(s) { eval(s); debugger; }");
 g.f("var x = 'Q';");
--- a/js/src/jit-test/tests/debug/Environment-getVariable-05.js
+++ b/js/src/jit-test/tests/debug/Environment-getVariable-05.js
@@ -1,10 +1,10 @@
 // getVariable sees global variables.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var log = '';
 dbg.onDebuggerStatement = function (frame) {
     log += frame.environment.parent.getVariable("x") + frame.environment.parent.getVariable("y");
 };
 g.eval("var x = 'a'; this.y = 'b'; debugger;");
 assertEq(log, 'ab');
--- a/js/src/jit-test/tests/debug/Environment-getVariable-06.js
+++ b/js/src/jit-test/tests/debug/Environment-getVariable-06.js
@@ -1,11 +1,11 @@
 // getVariable sees properties inherited from the global object's prototype chain.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var log = '';
 dbg.onDebuggerStatement = function (frame) {
     log += frame.environment.parent.getVariable("x") + frame.environment.parent.getVariable("y");
 };
 g.eval("Object.getPrototypeOf(this).x = 'a';\n" +
        "Object.prototype.y = 'b';\n" +
        "debugger;\n");
--- a/js/src/jit-test/tests/debug/Environment-getVariable-07.js
+++ b/js/src/jit-test/tests/debug/Environment-getVariable-07.js
@@ -1,10 +1,10 @@
 // getVariable can get properties from with-block scopes.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var v;
 dbg.onDebuggerStatement = function (frame) {
     v = frame.environment.getVariable("x");
 };
 g.eval("var x = 1; { let x = 2; with ({x: 3}) { debugger; } }");
 assertEq(v, 3);
--- a/js/src/jit-test/tests/debug/Environment-getVariable-08.js
+++ b/js/src/jit-test/tests/debug/Environment-getVariable-08.js
@@ -1,10 +1,10 @@
 // getVariable sees properties inherited from a with-object's prototype chain.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var v;
 dbg.onDebuggerStatement = function (frame) {
     v = frame.environment.getVariable("x");
 };
 g.eval("var x = 1; { let x = 2; with (Object.create({x: 3})) { debugger; } }");
 assertEq(v, 3);
--- a/js/src/jit-test/tests/debug/Environment-getVariable-09.js
+++ b/js/src/jit-test/tests/debug/Environment-getVariable-09.js
@@ -1,11 +1,11 @@
 // getVariable works on ancestors of frame.environment.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var log = '';
 dbg.onDebuggerStatement = function (frame) {
     for (var env = frame.environment; env; env = env.parent) {
         if (env.find("x") === env)
             log += env.getVariable("x");
     }
 };
--- a/js/src/jit-test/tests/debug/Environment-getVariable-10.js
+++ b/js/src/jit-test/tests/debug/Environment-getVariable-10.js
@@ -1,11 +1,11 @@
 // getVariable works on a heavyweight environment after control leaves its scope.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var envs = [];
 dbg.onDebuggerStatement = function (frame) {
     envs.push(frame.environment);
 };
 g.eval("var f;\n" +
        "for (var x = 0; x < 3; x++) {\n" +
        "    (function (x) {\n" +
--- a/js/src/jit-test/tests/debug/Environment-getVariable-11.js
+++ b/js/src/jit-test/tests/debug/Environment-getVariable-11.js
@@ -1,11 +1,11 @@
 // The value returned by getVariable can be a Debugger.Object.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger;
 var gw = dbg.addDebuggee(g);
 var hits = 0;
 dbg.onDebuggerStatement = function (frame) {
     var a = frame.environment.parent.getVariable('Math');
     assertEq(a instanceof Debugger.Object, true);
     var b = gw.getOwnPropertyDescriptor('Math').value;
     assertEq(a, b);
--- a/js/src/jit-test/tests/debug/Environment-getVariable-12.js
+++ b/js/src/jit-test/tests/debug/Environment-getVariable-12.js
@@ -1,9 +1,9 @@
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger;
 var gw = dbg.addDebuggee(g);
 
 var hits = 0;
 dbg.onDebuggerStatement = function (frame) {
     hits++;
     assertEq(frame.environment.parent.getVariable('y'), true);
 };
--- a/js/src/jit-test/tests/debug/Environment-getVariable-13.js
+++ b/js/src/jit-test/tests/debug/Environment-getVariable-13.js
@@ -4,17 +4,17 @@
 // kicking in.
 
 load(libdir + "jitopts.js");
 
 if (!jitTogglesMatch(Opts_Ion2NoOffthreadCompilation))
   quit(0);
 
 withJitOptions(Opts_Ion2NoOffthreadCompilation, function () {
-  var g = newGlobal();
+  var g = newGlobal({newCompartment: true});
   var dbg = new Debugger;
 
   // Note that this *depends* on CCW scripted functions being opaque to Ion
   // optimization and not deoptimizing the frames below the call to toggle.
   g.toggle = function toggle(d) {
     if (d) {
       dbg.addDebuggee(g);
       var frame = dbg.getNewestFrame();
--- a/js/src/jit-test/tests/debug/Environment-getVariable-14.js
+++ b/js/src/jit-test/tests/debug/Environment-getVariable-14.js
@@ -1,11 +1,11 @@
 // Debugger.Environment can reflect optimized out function scopes
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger;
 dbg.addDebuggee(g);
 
 g.eval("" + function f() {
   var x = 42;
   function g() { }
   g();
 });
--- a/js/src/jit-test/tests/debug/Environment-getVariable-15.js
+++ b/js/src/jit-test/tests/debug/Environment-getVariable-15.js
@@ -2,17 +2,17 @@
 
 // When the real scope chain object holding the binding for 'f' in 'function f()
 // { ... }' is optimized out because it's never used, we whip up fake scope
 // chain objects for Debugger to use, if it looks. However, the value of the
 // variable f will be an internal function object, not a live function object,
 // since the latter was not recorded. Internal function objects should not be
 // exposed via Debugger.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 
 dbg.onDebuggerStatement = function (frame) {
   var g_call_env = frame.older.environment;     // g's locals
   var g_decl_env = g_call_env.parent;           // 'function g' binding
   var f_call_env = g_decl_env.parent;           // f's locals
   var f_decl_env = f_call_env.parent;           // 'function f' binding
   assertEq(f_decl_env.getVariable('f').optimizedOut, true);
--- a/js/src/jit-test/tests/debug/Environment-getVariable-WouldRun.js
+++ b/js/src/jit-test/tests/debug/Environment-getVariable-WouldRun.js
@@ -1,14 +1,14 @@
 // getVariable that would trigger a getter does not crash or explode.
 // It should throw WouldRunDebuggee, but that isn't implemented yet.
 
 load(libdir + "asserts.js");
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var hits = 0;
 dbg.onDebuggerStatement = function (frame) {
     assertThrowsInstanceOf(function () {
         frame.environment.parent.parent.getVariable("x");
     }, Error);
     hits++;
 };
--- a/js/src/jit-test/tests/debug/Environment-identity-01.js
+++ b/js/src/jit-test/tests/debug/Environment-identity-01.js
@@ -1,12 +1,12 @@
 // The value of frame.environment is the same Environment object at different
 // times within a single visit to a scope.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 g.eval("function h() { debugger; }");
 var hits, env;
 dbg.onDebuggerStatement = function (hframe) {
     var frame = hframe.older;
     var e = frame.environment;
 
     // frame.environment is at least cached from one moment to the next.
--- a/js/src/jit-test/tests/debug/Environment-identity-02.js
+++ b/js/src/jit-test/tests/debug/Environment-identity-02.js
@@ -1,11 +1,11 @@
 // frame.environment is different for different activations of a scope.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 g.eval("function h() { debugger; }");
 var arr;
 dbg.onDebuggerStatement = function (hframe) {
     var e = hframe.older.environment;
     assertEq(arr.indexOf(e), -1);
     arr.push(e);
 };
--- a/js/src/jit-test/tests/debug/Environment-identity-03.js
+++ b/js/src/jit-test/tests/debug/Environment-identity-03.js
@@ -1,16 +1,16 @@
 // Two Environments nested in the same runtime scope share the correct tail of their parent chains.
 
 // The compiler must be allowed to elide empty scopes and so forth, so this
 // test does not check the number of unshared Environments. Instead, each test
 // case identifies the expected innermost shared scope by the name of a
 // variable in it.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval("function h() { debugger; }");
 var dbg = Debugger(g);
 var hits, name, shared, unshared;
 dbg.onDebuggerStatement = function (hframe) {
     var frame = hframe.older;
 
     // Find name in frame.environment.
     var env, child = null;
--- a/js/src/jit-test/tests/debug/Environment-identity-04.js
+++ b/js/src/jit-test/tests/debug/Environment-identity-04.js
@@ -1,11 +1,11 @@
 // Observably different visits to the same with-statement produce distinct Environments.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval("function f(a, obj) { with (obj) return function () { return a; }; }");
 var dbg = Debugger(g);
 var hits = 0;
 dbg.onDebuggerStatement = function (frame) {
     // Even though the two visits to the with-statement have the same target
     // object, Math, the environments are observably different.
     var f1 = frame.eval("f(1, Math);").return;
     var f2 = frame.eval("f(2, Math);").return;
--- a/js/src/jit-test/tests/debug/Environment-identity-05.js
+++ b/js/src/jit-test/tests/debug/Environment-identity-05.js
@@ -1,11 +1,11 @@
 // Tests that freshened blocks behave correctly in Debugger.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var log = '';
 var oldEnv = null;
 dbg.onDebuggerStatement = function (frame) {
   if (!oldEnv) {
     oldEnv = frame.environment;
   } else {
     // Block has been freshened by |for (let ...)|, should be different
--- a/js/src/jit-test/tests/debug/Environment-inspectable-01.js
+++ b/js/src/jit-test/tests/debug/Environment-inspectable-01.js
@@ -1,14 +1,14 @@
 // Environments are only inspectable while their globals are debuggees.
 
 load(libdir + 'asserts.js');
 
-var g1 = newGlobal();
-var g2 = newGlobal();
+var g1 = newGlobal({newCompartment: true});
+var g2 = newGlobal({newCompartment: true});
 g2.g1 = g1;
 g1.g2 = g2;
 
 g1.eval('function f(xf) { return function h(xh) { debugger; } }');
 g1.eval('var h = f("value of xf");');
 
 // To ensure that xk gets located on the heap, and thus outlives its stack frame, we
 // store a function that captures it here. Kind of a kludge.
--- a/js/src/jit-test/tests/debug/Environment-names-01.js
+++ b/js/src/jit-test/tests/debug/Environment-names-01.js
@@ -1,11 +1,11 @@
 // env.names() lists nonenumerable names in with-statement environments.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var hits = 0;
 g.h = function () {
     var env = dbg.getNewestFrame().environment;
     var names = env.names();
     assertEq(names.indexOf("a") !== -1, true);
 
     // FIXME: Bug 748592 - proxies don't correctly propagate JSITER_HIDDEN
--- a/js/src/jit-test/tests/debug/Environment-names-02.js
+++ b/js/src/jit-test/tests/debug/Environment-names-02.js
@@ -1,11 +1,11 @@
 // env.names() on object environments ignores property names that are not identifiers.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var withNames, globalNames;
 g.h = function () {
     var env = dbg.getNewestFrame().environment;
     withNames = env.names();
     while (env.parent !== null)
         env = env.parent;
     globalNames = env.names();
--- a/js/src/jit-test/tests/debug/Environment-names-03.js
+++ b/js/src/jit-test/tests/debug/Environment-names-03.js
@@ -1,11 +1,11 @@
 // Optimized out scopes should have working names().
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger;
 dbg.addDebuggee(g);
 
 g.eval("" + function f() {
   var x = 42;
   function g() { }
   g();
 });
--- a/js/src/jit-test/tests/debug/Environment-nondebuggee.js
+++ b/js/src/jit-test/tests/debug/Environment-nondebuggee.js
@@ -1,13 +1,13 @@
 // Using an environment that is not a debuggee should throw.
 
 load(libdir + 'asserts.js');
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger;
 let gw = dbg.addDebuggee(g);
 var log;
 
 function check(env) {
   assertEq(env.inspectable, false);
   assertThrowsInstanceOf(() => env.type, Error);
   assertThrowsInstanceOf(() => env.object, Error);
--- a/js/src/jit-test/tests/debug/Environment-object-01.js
+++ b/js/src/jit-test/tests/debug/Environment-object-01.js
@@ -1,9 +1,9 @@
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 
 dbg.onDebuggerStatement = (frame) => {
   assertEq(frame.environment.parent.type, "with");
   assertEq(frame.environment.parent.parent.type, "object");
   assertEq(frame.environment.parent.parent.object.getOwnPropertyDescriptor("x").value, 42);
 }
 g.evalReturningScope("x = 42; debugger;");
--- a/js/src/jit-test/tests/debug/Environment-optimizedOut-01.js
+++ b/js/src/jit-test/tests/debug/Environment-optimizedOut-01.js
@@ -1,11 +1,11 @@
 // Optimized out scopes should be considered optimizedOut.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger;
 dbg.addDebuggee(g);
 
 g.eval("" + function f() {
   var x = 42;
   {
     let y = 43;
     (function () { })();
--- a/js/src/jit-test/tests/debug/Environment-parent-01.js
+++ b/js/src/jit-test/tests/debug/Environment-parent-01.js
@@ -1,12 +1,12 @@
 // The objects on the environment chain are all Debugger.Environment objects.
 // The environment chain ends in null.
 
-var g = newGlobal()
+var g = newGlobal({newCompartment: true})
 g.eval("function f(a) { return function (b) { return function (c) { h(); return a + b + c; }; }; }");
 var dbg = Debugger(g);
 var hits = 0;
 g.h = function () {
     var n = 0;
     for (var env = dbg.getNewestFrame().environment; env !== null; env = env.parent) {
         n++;
         assertEq(env instanceof Debugger.Environment, true);
--- a/js/src/jit-test/tests/debug/Environment-setVariable-01.js
+++ b/js/src/jit-test/tests/debug/Environment-setVariable-01.js
@@ -1,9 +1,9 @@
 // Environment.prototype.setVariable can set global variables.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 dbg.onDebuggerStatement = function (frame) {
     frame.environment.parent.setVariable("x", 2);
 };
 g.eval("var x = 1; debugger;");
 assertEq(g.x, 2);
--- a/js/src/jit-test/tests/debug/Environment-setVariable-02.js
+++ b/js/src/jit-test/tests/debug/Environment-setVariable-02.js
@@ -1,10 +1,10 @@
 // The argument to setVariable can be a Debugger.Object.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger;
 var gw = dbg.addDebuggee(g);
 dbg.onDebuggerStatement = function (frame) {
     frame.environment.parent.setVariable("x", gw);
 };
 g.eval("var x = 1; debugger;");
 assertEq(g.x, g);
--- a/js/src/jit-test/tests/debug/Environment-setVariable-03.js
+++ b/js/src/jit-test/tests/debug/Environment-setVariable-03.js
@@ -1,14 +1,14 @@
 // setVariable cannot create new global variables.
 // (Other kinds of environment are tested in Environment-variables.js.)
 
 load(libdir + "asserts.js");
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 var hits = 0;
 dbg.onDebuggerStatement = function (frame) {
     assertThrowsInstanceOf(function () { frame.environment.setVariable("x", 7); }, TypeError);
     hits++;
 };
 g.eval("debugger");
 assertEq("x" in g, false);
--- a/js/src/jit-test/tests/debug/Environment-setVariable-04.js
+++ b/js/src/jit-test/tests/debug/Environment-setVariable-04.js
@@ -1,10 +1,10 @@
 // setVariable can set variables and arguments in functions.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 dbg.onDebuggerStatement = function (frame) {
     frame.environment.setVariable("a", 100);
     frame.environment.setVariable("b", 200);
 };
 g.eval("function f(a) { var b = a + 1; debugger; return a + b; }");
 assertEq(g.f(1), 300);
--- a/js/src/jit-test/tests/debug/Environment-setVariable-05.js
+++ b/js/src/jit-test/tests/debug/Environment-setVariable-05.js
@@ -1,11 +1,11 @@
 // setVariable can change the types of variables and arguments in functions.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval("function f(a) { var b = a + 1; debugger; return a + b; }");
 for (var i = 0; i < 20; i++)
     assertEq(g.f(i), 2 * i + 1);
 
 var dbg = new Debugger(g);
 dbg.onDebuggerStatement = function (frame) {
     frame.environment.setVariable("a", "xyz");
     frame.environment.setVariable("b", "zy");
--- a/js/src/jit-test/tests/debug/Environment-setVariable-06.js
+++ b/js/src/jit-test/tests/debug/Environment-setVariable-06.js
@@ -1,9 +1,9 @@
 // setVariable on an argument works as expected with non-strict 'arguments'.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval("function f(a) { debugger; return arguments[0]; }");
 var dbg = new Debugger(g);
 dbg.onDebuggerStatement = function (frame) {
     frame.environment.setVariable("a", 2);
 };
 assertEq(g.f(1), 2);
--- a/js/src/jit-test/tests/debug/Environment-setVariable-07.js
+++ b/js/src/jit-test/tests/debug/Environment-setVariable-07.js
@@ -1,11 +1,11 @@
 // setVariable works on let-bindings.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 function test(code, val) {
     g.eval("function f() { " + code + " }");
     var dbg = new Debugger(g);
     dbg.onDebuggerStatement = function (frame) {
         frame.environment.setVariable("a", val);
     };
     assertEq(g.f(), val);
 }
--- a/js/src/jit-test/tests/debug/Environment-setVariable-08.js
+++ b/js/src/jit-test/tests/debug/Environment-setVariable-08.js
@@ -1,14 +1,14 @@
 // setVariable throws if no binding exists.
 
 load(libdir + "asserts.js");
 
 function test(code) {
-    var g = newGlobal();
+    var g = newGlobal({newCompartment: true});
     var dbg = new Debugger(g);
     var hits = 0;
     dbg.onDebuggerStatement = function (frame) {
         var env = frame.older.environment;
         assertThrowsInstanceOf(function () { env.setVariable("y", 2); }, Error);
         hits++;
     };
     g.eval("var y = 0; function d() { debugger; }");
--- a/js/src/jit-test/tests/debug/Environment-setVariable-10.js
+++ b/js/src/jit-test/tests/debug/Environment-setVariable-10.js
@@ -1,17 +1,17 @@
 // setVariable works on non-innermost environments.
 
 // (The debuggee code here is a bit convoluted to defeat optimizations that
 // could make obj.b a null closure or obj.i a flat closure--that is, a function
 // that gets a frozen copy of i instead of a reference to the runtime
 // environment that contains it. setVariable does not currently detect this
 // flat closure case.)
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval("function d() { debugger; }\n" +
        "var i = 'FAIL';\n" +
        "function a() {\n" +
        "    var obj = {b: function (i) { d(obj); return i; },\n" +
        "               i: function () { return i; }};\n" +
        "    var i = 'FAIL2';\n" +
        "    return obj;\n" +
        "}\n");
--- a/js/src/jit-test/tests/debug/Environment-setVariable-11.js
+++ b/js/src/jit-test/tests/debug/Environment-setVariable-11.js
@@ -1,13 +1,13 @@
 // setVariable cannot modify the binding for a FunctionExpression's name.
 
 load(libdir + "asserts.js");
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var hits = 0;
 dbg.onDebuggerStatement = function (frame) {
     var env = frame.environment.find("f");
     assertEq(env.getVariable("f"), frame.callee);
     assertThrowsInstanceOf(function () { env.setVariable("f", 0) }, TypeError);
     assertThrowsInstanceOf(function () { env.setVariable("f", frame.callee) }, TypeError);
     hits++;
--- a/js/src/jit-test/tests/debug/Environment-setVariable-12.js
+++ b/js/src/jit-test/tests/debug/Environment-setVariable-12.js
@@ -1,12 +1,12 @@
 // setVariable can create a new property on a with block's bindings object, if
 // it is shadowing an existing property on the prototype chain.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 dbg.onDebuggerStatement = function (frame) {
     var env = frame.environment.find("x");
     env.setVariable("x", 2);
 };
 g.eval("var obj1 = {x: 1}, obj2 = Object.create(obj1), z; with (obj2) { debugger; z = x; }");
 assertEq(g.obj1.x, 1);
 assertEq(g.obj2.x, 2);
--- a/js/src/jit-test/tests/debug/Environment-setVariable-13.js
+++ b/js/src/jit-test/tests/debug/Environment-setVariable-13.js
@@ -1,13 +1,13 @@
 // Debugger.Environment should throw trying to setVariable on optimized out scope.
 
 load(libdir + "asserts.js");
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger;
 dbg.addDebuggee(g);
 
 g.eval("" + function f() {
   var x = 42;
   function g() { }
   g();
 });
--- a/js/src/jit-test/tests/debug/Environment-setVariable-WouldRun.js
+++ b/js/src/jit-test/tests/debug/Environment-setVariable-WouldRun.js
@@ -1,14 +1,14 @@
 // setVariable triggering a setter throws WouldRunDebuggee.
 
 load(libdir + "asserts.js");
 
 function test(code) {
-    var g = newGlobal();
+    var g = newGlobal({newCompartment: true});
     g.eval("function d() { debugger; }");
     var dbg = Debugger(g);
     var hits = 0;
     dbg.onDebuggerStatement = function (frame) {
         var env = frame.older.environment.find("x");
         assertThrowsInstanceOf(
             () => env.setVariable("x", 0),
             Debugger.DebuggeeWouldRun);
--- a/js/src/jit-test/tests/debug/Environment-type-01.js
+++ b/js/src/jit-test/tests/debug/Environment-type-01.js
@@ -1,11 +1,11 @@
 // env.type is 'object' in global environments and with-blocks, and 'declarative' otherwise.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 function test(code, expected) {
     var actual = '';
     g.h = function () { actual += dbg.getNewestFrame().environment.type; }
     g.eval(code);
     assertEq(actual, expected);
 }
 
--- a/js/src/jit-test/tests/debug/Environment-unscopables.js
+++ b/js/src/jit-test/tests/debug/Environment-unscopables.js
@@ -1,13 +1,13 @@
 // An Environment for a `with` statement does not observe bindings ruled out by @@unscopables.
 
 load(libdir + "asserts.js");
 
-let g = newGlobal();
+let g = newGlobal({newCompartment: true});
 g.eval(`
     let x = 'global';
     function f() {
         let obj = {
             x: 'obj',
             y: 'obj',
             [Symbol.unscopables]: {x: 1},
         };
--- a/js/src/jit-test/tests/debug/Environment-variables.js
+++ b/js/src/jit-test/tests/debug/Environment-variables.js
@@ -37,17 +37,17 @@ var cases = [
 ];
 
 var nextval = 1000;
 
 function test(code, debugStmts, followupStmts) {
     var val = nextval++;
     var hits = 0;
 
-    var g = newGlobal();
+    var g = newGlobal({newCompartment: true});
     g.eval("function debugMe() { var x = 'wrong-x'; debugger; }");
     g.capture = null;
 
     var dbg = Debugger(g);
     dbg.onDebuggerStatement = function (frame) {
         if (frame.callee !== null && frame.callee.name == 'debugMe')
             frame = frame.older;
         var env = frame.environment.find("x");
--- a/js/src/jit-test/tests/debug/Frame-01.js
+++ b/js/src/jit-test/tests/debug/Frame-01.js
@@ -1,11 +1,11 @@
 // Test .type and .generator fields of topmost stack frame passed to onDebuggerStatement.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var expected, hits;
 dbg.onDebuggerStatement = function (f) {
     assertEq(Object.getPrototypeOf(f), Debugger.Frame.prototype);
     assertEq(f.type, expected.type);
     assertEq(f.generator, expected.generator);
     assertEq(f.constructing, expected.constructing);
     hits++;
--- a/js/src/jit-test/tests/debug/Frame-02.js
+++ b/js/src/jit-test/tests/debug/Frame-02.js
@@ -1,12 +1,12 @@
 // When the debugger is triggered twice from the same stack frame, the same
 // Debugger.Frame object is passed to the hook both times.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var hits, frame;
 var dbg = Debugger(g);
 dbg.onDebuggerStatement = function (f) {
     if (hits++ == 0)
         frame = f;
     else
         assertEq(f, frame);
 };
--- a/js/src/jit-test/tests/debug/Frame-03.js
+++ b/js/src/jit-test/tests/debug/Frame-03.js
@@ -1,12 +1,12 @@
 // When the debugger is triggered from different stack frames that happen to
 // occupy the same memory, it delivers different Debugger.Frame objects.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var hits;
 var a = [];
 dbg.onDebuggerStatement = function (frame) {
     for (var i = 0; i < a.length; i++) 
         assertEq(a[i] === frame, false);
     a.push(frame);
     hits++;
--- a/js/src/jit-test/tests/debug/Frame-arguments-01.js
+++ b/js/src/jit-test/tests/debug/Frame-arguments-01.js
@@ -1,11 +1,11 @@
 // Frame.prototype.arguments with primitive values
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.args = null;
 var dbg = new Debugger(g);
 var hits;
 var v;
 dbg.onDebuggerStatement = function (frame) {
     hits++;
     var args = frame.arguments;
     assertEq(args instanceof Array, true);
--- a/js/src/jit-test/tests/debug/Frame-arguments-02.js
+++ b/js/src/jit-test/tests/debug/Frame-arguments-02.js
@@ -1,11 +1,11 @@
 // Object arguments.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 var hits = 0;
 dbg.onDebuggerStatement = function (frame) {
     var args = frame.arguments;
     assertEq(args, frame.arguments);
     assertEq(args instanceof Array, true);
     assertEq(args.length, 2);
     assertEq(args[0] instanceof Debugger.Object, true);
--- a/js/src/jit-test/tests/debug/Frame-arguments-03.js
+++ b/js/src/jit-test/tests/debug/Frame-arguments-03.js
@@ -1,11 +1,11 @@
 // Destructuring arguments.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 var hits = 0;
 dbg.onDebuggerStatement = function (frame) {
     var args = frame.arguments;
     assertEq(args[0], 1);
     assertEq(args.length, 4);
 
     assertEq(args[1] instanceof Debugger.Object, true);
--- a/js/src/jit-test/tests/debug/Frame-arguments-04.js
+++ b/js/src/jit-test/tests/debug/Frame-arguments-04.js
@@ -1,11 +1,11 @@
 // frame.arguments works for all live frames
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 var hits = 0;
 dbg.onDebuggerStatement = function (frame) {
     for (var i = 0; i <= 4; i++) {
         assertEq(frame.arguments.length, 1);
         assertEq(frame.arguments[0], i);
         frame = frame.older;
     }
--- a/js/src/jit-test/tests/debug/Frame-arguments-05.js
+++ b/js/src/jit-test/tests/debug/Frame-arguments-05.js
@@ -1,11 +1,11 @@
 // frame.arguments is "live" (it reflects assignments to arguments).
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 var log = '';
 var args;
 dbg.onDebuggerStatement = function (frame) {
     if (args === undefined)
         args = frame.arguments;
     else
         assertEq(frame.arguments, args);
--- a/js/src/jit-test/tests/debug/Frame-arguments-06.js
+++ b/js/src/jit-test/tests/debug/Frame-arguments-06.js
@@ -1,14 +1,14 @@
 // Test extracting frame.arguments element getters and calling them in
 // various awkward ways.
 
 load(libdir + "asserts.js");
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var hits = 0;
 var fframe, farguments, fgetter;
 dbg.onDebuggerStatement = function (frame) {
     if (hits === 0) {
         fframe = frame;
         farguments = frame.arguments;
         fgetter = Object.getOwnPropertyDescriptor(farguments, "0").get;
--- a/js/src/jit-test/tests/debug/Frame-arguments-07.js
+++ b/js/src/jit-test/tests/debug/Frame-arguments-07.js
@@ -1,11 +1,11 @@
 // When argument[x] is assigned, where x > callee.length, frame.arguments reflects the change.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval("function f(a, b) {\n" +
        "    for (var i = 0; i < arguments.length; i++)\n" +
        "        arguments[i] = i;\n" +
        "    debugger;\n" +
        "}\n");
 
 var dbg = Debugger(g);
 var hits = 0;
--- a/js/src/jit-test/tests/debug/Frame-environment-01.js
+++ b/js/src/jit-test/tests/debug/Frame-environment-01.js
@@ -1,11 +1,11 @@
 // frame.environment is a Debugger.Environment object
 
-var g = newGlobal()
+var g = newGlobal({newCompartment: true})
 var dbg = Debugger(g);
 g.h = function () {
     assertEq(dbg.getNewestFrame().environment instanceof Debugger.Environment, true);
 };
 
 g.eval("h()");
 g.evaluate("h()");
 g.eval("eval('h()')");
--- a/js/src/jit-test/tests/debug/Frame-environment-02.js
+++ b/js/src/jit-test/tests/debug/Frame-environment-02.js
@@ -1,11 +1,11 @@
 // dbg.getNewestFrame().environment works.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger;
 var gw = dbg.addDebuggee(g);
 g.h = function () {
     var env = dbg.getNewestFrame().environment.parent;
     assertEq(env instanceof Debugger.Environment, true);
     assertEq(env.object, gw);
     assertEq(env.parent, null);
 };
--- a/js/src/jit-test/tests/debug/Frame-environment-03.js
+++ b/js/src/jit-test/tests/debug/Frame-environment-03.js
@@ -1,11 +1,11 @@
 // If !frame.live, frame.environment throws.
 
 load(libdir + "asserts.js");
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var frame;
 g.h = function () { frame = dbg.getNewestFrame(); };
 g.eval("h();");
 assertEq(frame.live, false);
 assertThrowsInstanceOf(function () { frame.environment; }, Error);
--- a/js/src/jit-test/tests/debug/Frame-environment-04.js
+++ b/js/src/jit-test/tests/debug/Frame-environment-04.js
@@ -1,11 +1,11 @@
 // frame.environment can be called from the onEnterFrame hook.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval("function f(x) { return 2 * x; }");
 var dbg = Debugger(g);
 var hits = 0;
 dbg.onEnterFrame = function (frame) {
     assertEq(frame.environment.names().join(","), "arguments,x");
     hits++;
 };
 assertEq(g.f(22), 44);
--- a/js/src/jit-test/tests/debug/Frame-environment-05.js
+++ b/js/src/jit-test/tests/debug/Frame-environment-05.js
@@ -1,9 +1,9 @@
 // Test that Debugger.Frame.prototype.environment works at all pcs of a script
 // with an aliased block scope.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 dbg.onDebuggerStatement = function (frame) {
   frame.onStep = (function ()  { frame.environment; });
 };
 g.eval("debugger; for (let i of [1,2,3]) print(i);");
--- a/js/src/jit-test/tests/debug/Frame-eval-01.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-01.js
@@ -1,8 +1,8 @@
 // simplest possible test of Debugger.Frame.prototype.eval
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 var c;
 dbg.onDebuggerStatement = function (frame) { c = frame.eval("2 + 2"); };
 g.eval("debugger;");
 assertEq(c.return, 4);
--- a/js/src/jit-test/tests/debug/Frame-eval-02.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-02.js
@@ -1,10 +1,10 @@
 // frame.eval() throws if frame is not live
 
 load(libdir + "asserts.js");
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 var f;
 dbg.onDebuggerStatement = function (frame) { f = frame; };
 g.eval("debugger;");
 assertThrowsInstanceOf(function () { f.eval("2 + 2"); }, Error);
--- a/js/src/jit-test/tests/debug/Frame-eval-03.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-03.js
@@ -1,13 +1,13 @@
 // Test eval-ing names in a topmost script frame
 
 load(libdir + "asserts.js");
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 var hits = 0;
 dbg.onDebuggerStatement = function (frame) {
     assertEq(frame.eval("a").return, 2);
     assertEq(frame.eval("c").return, 4);
     var exc = frame.eval("d").throw;
     assertEq(exc instanceof Debugger.Object, true);
     assertEq(exc.proto, frame.eval("ReferenceError.prototype").return);
--- a/js/src/jit-test/tests/debug/Frame-eval-04.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-04.js
@@ -1,11 +1,11 @@
 // frame.eval SyntaxErrors are reflected, not thrown
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 var exc, SEp;
 dbg.onDebuggerStatement = function (frame) {
     exc = frame.eval("#$@!").throw;
     SEp = frame.eval("SyntaxError.prototype").return;
 };
 g.eval("debugger;");
 assertEq(exc.proto, SEp);
--- a/js/src/jit-test/tests/debug/Frame-eval-05.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-05.js
@@ -1,11 +1,11 @@
 // var declarations in strict frame.eval do not modify the frame
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 var cv;
 dbg.onDebuggerStatement = function (frame) {
     cv = frame.eval("'use strict'; var a = 2; h();");
 };
 g.a = 1;
 g.eval("function f(s) { function h() { return a; } eval(s); debugger; } ");
 g.eval("f('0');");
--- a/js/src/jit-test/tests/debug/Frame-eval-06.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-06.js
@@ -1,13 +1,13 @@
 // frame.eval throws if frame is a generator frame that isn't currently on the stack
 
 load(libdir + "asserts.js");
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval("function* gen(a) { debugger; yield a; }");
 g.eval("function test() { debugger; }");
 var dbg = new Debugger(g);
 var genframe;
 var hits = 0;
 dbg.onDebuggerStatement = function (frame) {
     if (frame.callee.name == 'gen')
         genframe = frame;
--- a/js/src/jit-test/tests/debug/Frame-eval-07.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-07.js
@@ -1,11 +1,11 @@
 // test frame.eval in non-top frames
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var N = g.N = 12; // must be even
 assertEq(N % 2, 0);
 var dbg = new Debugger(g);
 var hits = 0;
 dbg.onDebuggerStatement = function (frame) {
     var n = frame.eval("n").return;
     if (n === 0) {
         for (var i = 0; i <= N; i++) {
--- a/js/src/jit-test/tests/debug/Frame-eval-08.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-08.js
@@ -1,11 +1,11 @@
 // The arguments can escape from a function via a debugging hook.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 
 // capture arguments object and test function
 var args, testfn;
 dbg.onDebuggerStatement = function (frame) {
     args = frame.eval("arguments").return;
     testfn = frame.eval("test").return;
 };
--- a/js/src/jit-test/tests/debug/Frame-eval-09.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-09.js
@@ -1,11 +1,11 @@
 // assigning to local variables in frame.eval code
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 dbg.onDebuggerStatement = function (frame) {
     frame.eval("outerarg = 1; outervar = 2; innerarg = 3; innervar = 4;");
 };
 
 var result = g.eval("(" + function outer(outerarg) {
         var outervar = 200;
         function inner(innerarg) {
--- a/js/src/jit-test/tests/debug/Frame-eval-10.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-10.js
@@ -1,11 +1,11 @@
 // frame.eval returns null if the eval code fails with an uncatchable error.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = Debugger(g);
 var hits = 0;
 dbg.onDebuggerStatement = function (frame) {
     if (hits++ === 0)
         assertEq(frame.eval("debugger;"), null);
     else
         return null;
 };
--- a/js/src/jit-test/tests/debug/Frame-eval-11.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-11.js
@@ -1,11 +1,11 @@
 // The arguments can escape from a function via a debugging hook.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 
 // capture arguments object and test function
 var hits = 0;
 dbg.onDebuggerStatement = function (frame) {
     assertEq(frame.older.eval('arguments[0]').return, 'ponies');
     hits++;
 };
--- a/js/src/jit-test/tests/debug/Frame-eval-12.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-12.js
@@ -1,11 +1,11 @@
 // The arguments can escape from a function via a debugging hook.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 
 // capture arguments object and test function
 dbg.onDebuggerStatement = function (frame) {
   var args = frame.older.environment.parent.getVariable('arguments');
   assertEq(args.missingArguments, true);
 };
 g.eval("function h() { debugger; }");
--- a/js/src/jit-test/tests/debug/Frame-eval-13.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-13.js
@@ -1,11 +1,11 @@
 // The debugger may add new bindings into existing scopes
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 dbg.onDebuggerStatement = function(frame) {
     assertEq(frame.eval("var x = 3; x").return, 3);
     hits++;
 }
 var hits = 0;
 g.eval("(function() { debugger; })()");
 assertEq(hits, 1);
--- a/js/src/jit-test/tests/debug/Frame-eval-14.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-14.js
@@ -1,12 +1,12 @@
 // Test the corner case of accessing an unaliased variable of a block
 // while the block is not live.
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 g.eval("function h() { debugger }");
 g.eval("function f() { { let x = 1, y; (function() { y = 0 })(); h() } }");
 g.eval("var surprise = null");
 
 var dbg = new Debugger;
 var gw = dbg.addDebuggee(g);
 dbg.onDebuggerStatement = function(hFrame) {
     var fFrame = hFrame.older;
--- a/js/src/jit-test/tests/debug/Frame-eval-15.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-15.js
@@ -1,9 +1,9 @@
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 
 g.eval("function h() { debugger }");
 g.eval("function f() { h() }");
 g.blah = 42;
 dbg.onDebuggerStatement = function(frame) {
     frame.older.eval("var blah = 43");
     frame.older.eval("blah = 44");
--- a/js/src/jit-test/tests/debug/Frame-eval-16.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-16.js
@@ -1,10 +1,10 @@
 // eval correctly handles optional custom url option
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 var count = 0;
 
 function testUrl (options, expected) {
     count++;
     dbg.onDebuggerStatement = function (frame) {
         dbg.onNewScript = function (script) {
             dbg.onNewScript = undefined;
--- a/js/src/jit-test/tests/debug/Frame-eval-17.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-17.js
@@ -1,10 +1,10 @@
 // eval correctly handles optional lineNumber option
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 var count = 0;
 
 function testLineNumber (options, expected) {
     count++;
     dbg.onDebuggerStatement = function (frame) {
         dbg.onNewScript = function (script) {
             dbg.onNewScript = undefined;
--- a/js/src/jit-test/tests/debug/Frame-eval-18.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-18.js
@@ -1,12 +1,12 @@
 // yield is not allowed in eval in a star generator.
 
 load(libdir + 'asserts.js');
 
-var g = newGlobal();
+var g = newGlobal({newCompartment: true});
 var dbg = new Debugger(g);
 
 dbg.onDebuggerStatement = function (frame) {
     assertThrowsInstanceOf(function() { frame.eval('yield 10;') }, SyntaxError);
 };
 
 g.eval("(function*g(){ debugger; })()");
--- a/js/src/jit-test/tests/debug/Frame-eval-19.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-19.js
@@ -1,17 +1,17 @@
 // Eval-in-frame of optimized frames to break out of an infinite loop.
 
 load(libdir + "jitopts.js");
 
 if (!jitTogglesMatch(Opts_IonEagerNoOffthreadCompilation))
   quit(0);
 
 withJitOptions(Opts_IonEagerNoOffthreadCompilation, function () {
-  var g = newGlobal();
+  var g = newGlobal({newCompartment: true});
   var dbg = new Debugger;
 
   g.eval("" + function f(d) { g(d); });
   g.eval("" + function g(d) { h(d); });
   g.eval("" + function h(d) {
     var i = 0;
     while (d)
       interruptIf(d && i++ == 4000);
--- a/js/src/jit-test/tests/debug/Frame-eval-20.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-20.js
@@ -2,17 +2,17 @@
 
 load(libdir + "jitopts.js");
 
 if (!jitTogglesMatch(Opts_Ion2NoOffthreadCompilation))
   quit(0);
 
 withJitOptions(Opts_Ion2NoOffthreadCompilation, function () {
   function test(shadow) {
-    var g = newGlobal();
+    var g = newGlobal({newCompartment: true});
     var dbg = new Debugger;
 
     // Note that we depend on CCW scripted functions being opaque to Ion
     // optimization for this test.
     g.h = function h(d) {
       if (d) {
         dbg.addDebuggee(g);
         var f = dbg.getNewestFrame().older;
--- a/js/src/jit-test/tests/debug/Frame-eval-21.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-21.js
@@ -1,17 +1,17 @@
 // Eval-in-frame with different type on baseline frame with let-scoping
 
 load(libdir + "jitopts.js");
 
 if (!jitTogglesMatch(Opts_BaselineEager))
   quit(0);
 
 withJitOptions(Opts_BaselineEager, function () {
-  var g = newGlobal();
+  var g = newGlobal({newCompartment: true});
   var dbg = new Debugger;
 
   g.h = function h(d) {
     if (d) {
       dbg.addDebuggee(g);
       var f = dbg.getNewestFrame().older;
       assertEq(f.implementation, "baseline");
       assertEq(f.environment.getVariable("foo"), 42);
--- a/js/src/jit-test/tests/debug/Frame-eval-22.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-22.js
@@ -1,17 +1,17 @@
 // Debugger.Frame preserves Ion frame identity
 
 load(libdir + "jitopts.js");
 
 if (!jitTogglesMatch(Opts_Ion2NoOffthreadCompilation))
   quit();
 
 withJitOptions(Opts_Ion2NoOffthreadCompilation, function () {
-  var g = newGlobal();
+  var g = newGlobal({newCompartment: true});
   var dbg1 = new Debugger;
   var dbg2 = new Debugger;
 
   g.toggle = function toggle(x, d) {
     if (d) {
       dbg1.addDebuggee(g);
       dbg2.addDebuggee(g);
       var frame1 = dbg1.getNewestFrame();
--- a/js/src/jit-test/tests/debug/Frame-eval-23.js
+++ b/js/src/jit-test/tests/debug/Frame-eval-23.js
@@ -1,17 +1,17 @@
 // Debugger.Frame preserves Ion frame mutations after removing debuggee.
 
 load(libdir + "jitopts.js");
 
 if (!jitTogglesMatch(Opts_Ion2NoOffthreadCompilation))
   quit();
 
 withJitOptions(Opts_Ion2NoOffthreadCompilation, function () {
-  var g = newGlobal();
+  var g = newGlobal({newCompartment: true});
   var dbg = new Debugger;