mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-08 00:38:39 +09:00
Merge remote-tracking branch 'origin/master' into custom
This commit is contained in:
commit
b186b7ea74
24 changed files with 230 additions and 248 deletions
|
|
@ -210,6 +210,7 @@ js::Nursery::disable()
|
|||
return;
|
||||
updateNumChunks(0);
|
||||
currentEnd_ = 0;
|
||||
position_ = 0;
|
||||
runtime()->gc.storeBuffer.disable();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -245,6 +245,7 @@ class Nursery
|
|||
|
||||
// Free space remaining, not counting chunk trailers.
|
||||
MOZ_ALWAYS_INLINE size_t freeSpace() const {
|
||||
MOZ_ASSERT(isEnabled());
|
||||
MOZ_ASSERT(currentEnd_ - position_ <= NurseryChunkUsableSize);
|
||||
return (currentEnd_ - position_) +
|
||||
(numChunks() - currentChunk_ - 1) * NurseryChunkUsableSize;
|
||||
|
|
|
|||
|
|
@ -222,7 +222,7 @@ DefaultJitOptions::DefaultJitOptions()
|
|||
}
|
||||
|
||||
// Toggles whether unboxed plain objects can be created by the VM.
|
||||
SET_DEFAULT(disableUnboxedObjects, false);
|
||||
SET_DEFAULT(disableUnboxedObjects, true);
|
||||
|
||||
// Test whether Atomics are allowed in asm.js code.
|
||||
SET_DEFAULT(asmJSAtomicsEnable, false);
|
||||
|
|
|
|||
|
|
@ -6410,6 +6410,9 @@ JS_SetGlobalJitCompilerOption(JSContext* cx, JSJitCompilerOption opt, uint32_t v
|
|||
}
|
||||
jit::JitOptions.jumpThreshold = value;
|
||||
break;
|
||||
case JSJITCOMPILER_UNBOXED_OBJECTS:
|
||||
jit::JitOptions.disableUnboxedObjects = !value;
|
||||
break;
|
||||
case JSJITCOMPILER_ASMJS_ATOMICS_ENABLE:
|
||||
jit::JitOptions.asmJSAtomicsEnable = !!value;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -5783,19 +5783,20 @@ JS_SetParallelParsingEnabled(JSContext* cx, bool enabled);
|
|||
extern JS_PUBLIC_API(void)
|
||||
JS_SetOffthreadIonCompilationEnabled(JSContext* cx, bool enabled);
|
||||
|
||||
#define JIT_COMPILER_OPTIONS(Register) \
|
||||
Register(BASELINE_WARMUP_TRIGGER, "baseline.warmup.trigger") \
|
||||
Register(ION_WARMUP_TRIGGER, "ion.warmup.trigger") \
|
||||
Register(ION_GVN_ENABLE, "ion.gvn.enable") \
|
||||
Register(ION_FORCE_IC, "ion.forceinlineCaches") \
|
||||
Register(ION_ENABLE, "ion.enable") \
|
||||
#define JIT_COMPILER_OPTIONS(Register) \
|
||||
Register(BASELINE_WARMUP_TRIGGER, "baseline.warmup.trigger") \
|
||||
Register(ION_WARMUP_TRIGGER, "ion.warmup.trigger") \
|
||||
Register(ION_GVN_ENABLE, "ion.gvn.enable") \
|
||||
Register(ION_FORCE_IC, "ion.forceinlineCaches") \
|
||||
Register(ION_ENABLE, "ion.enable") \
|
||||
Register(ION_INTERRUPT_WITHOUT_SIGNAL, "ion.interrupt-without-signals") \
|
||||
Register(ION_CHECK_RANGE_ANALYSIS, "ion.check-range-analysis") \
|
||||
Register(BASELINE_ENABLE, "baseline.enable") \
|
||||
Register(OFFTHREAD_COMPILATION_ENABLE, "offthread-compilation.enable") \
|
||||
Register(JUMP_THRESHOLD, "jump-threshold") \
|
||||
Register(ASMJS_ATOMICS_ENABLE, "asmjs.atomics.enable") \
|
||||
Register(WASM_TEST_MODE, "wasm.test-mode") \
|
||||
Register(ION_CHECK_RANGE_ANALYSIS, "ion.check-range-analysis") \
|
||||
Register(BASELINE_ENABLE, "baseline.enable") \
|
||||
Register(OFFTHREAD_COMPILATION_ENABLE, "offthread-compilation.enable") \
|
||||
Register(JUMP_THRESHOLD, "jump-threshold") \
|
||||
Register(UNBOXED_OBJECTS, "unboxed_objects") \
|
||||
Register(ASMJS_ATOMICS_ENABLE, "asmjs.atomics.enable") \
|
||||
Register(WASM_TEST_MODE, "wasm.test-mode") \
|
||||
Register(WASM_FOLD_OFFSETS, "wasm.fold-offsets")
|
||||
|
||||
typedef enum JSJitCompilerOption {
|
||||
|
|
|
|||
|
|
@ -288,6 +288,12 @@ CallerGetterImpl(JSContext* cx, const CallArgs& args)
|
|||
return true;
|
||||
}
|
||||
|
||||
if (JS_IsDeadWrapper(callerObj)) {
|
||||
JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr,
|
||||
JSMSG_DEAD_OBJECT);
|
||||
return false;
|
||||
}
|
||||
|
||||
JSFunction* callerFun = &callerObj->as<JSFunction>();
|
||||
MOZ_ASSERT(!callerFun->isBuiltin(), "non-builtin iterator returned a builtin?");
|
||||
|
||||
|
|
@ -314,54 +320,14 @@ CallerSetterImpl(JSContext* cx, const CallArgs& args)
|
|||
{
|
||||
MOZ_ASSERT(IsFunction(args.thisv()));
|
||||
|
||||
// Beware! This function can be invoked on *any* function! It can't
|
||||
// assume it'll never be invoked on natives, strict mode functions, bound
|
||||
// functions, or anything else that ordinarily has immutable .caller
|
||||
// defined with [[ThrowTypeError]].
|
||||
RootedFunction fun(cx, &args.thisv().toObject().as<JSFunction>());
|
||||
if (!CallerRestrictions(cx, fun))
|
||||
return false;
|
||||
// We just have to return |undefined|, but first we call CallerGetterImpl
|
||||
// because we need the same strict-mode and security checks.
|
||||
|
||||
if (!CallerGetterImpl(cx, args)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Return |undefined| unless an error must be thrown.
|
||||
args.rval().setUndefined();
|
||||
|
||||
// We can almost just return |undefined| here -- but if the caller function
|
||||
// was strict mode code, we still have to throw a TypeError. This requires
|
||||
// computing the caller, checking that no security boundaries are crossed,
|
||||
// and throwing a TypeError if the resulting caller is strict.
|
||||
|
||||
NonBuiltinScriptFrameIter iter(cx);
|
||||
if (!AdvanceToActiveCallLinear(cx, iter, fun))
|
||||
return true;
|
||||
|
||||
++iter;
|
||||
while (!iter.done() && iter.isEvalFrame())
|
||||
++iter;
|
||||
|
||||
if (iter.done() || !iter.isFunctionFrame())
|
||||
return true;
|
||||
|
||||
RootedObject caller(cx, iter.callee(cx));
|
||||
if (!cx->compartment()->wrap(cx, &caller)) {
|
||||
cx->clearPendingException();
|
||||
return true;
|
||||
}
|
||||
|
||||
// If we don't have full access to the caller, or the caller is not strict,
|
||||
// return undefined. Otherwise throw a TypeError.
|
||||
JSObject* callerObj = CheckedUnwrap(caller);
|
||||
if (!callerObj)
|
||||
return true;
|
||||
|
||||
JSFunction* callerFun = &callerObj->as<JSFunction>();
|
||||
MOZ_ASSERT(!callerFun->isBuiltin(), "non-builtin iterator returned a builtin?");
|
||||
|
||||
if (callerFun->strict()) {
|
||||
JS_ReportErrorFlagsAndNumberASCII(cx, JSREPORT_ERROR, GetErrorMessage, nullptr,
|
||||
JSMSG_CALLER_IS_STRICT);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue