diff options
author | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-04-06 12:12:20 +0200 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-04-06 12:14:14 +0200 |
commit | a9682a32af09f2fb8ae39c66fdc19ecdee24e591 (patch) | |
tree | 738033a7ad68a052403875d43ade1bf26ee2edf7 /js/src/frontend/BytecodeCompiler.cpp | |
parent | cc07da9cb4d6e7a53f8d953427ffc2bca2e0c2df (diff) | |
parent | a5d22aa6106fbd3c8cec12333b14d4c65cd98647 (diff) | |
download | UXP-a9682a32af09f2fb8ae39c66fdc19ecdee24e591.tar UXP-a9682a32af09f2fb8ae39c66fdc19ecdee24e591.tar.gz UXP-a9682a32af09f2fb8ae39c66fdc19ecdee24e591.tar.lz UXP-a9682a32af09f2fb8ae39c66fdc19ecdee24e591.tar.xz UXP-a9682a32af09f2fb8ae39c66fdc19ecdee24e591.zip |
Merge branch '816'
This merges both the JS Front-end parser changes to better structure
the parser code, and the TC39 `toString()` revision proposal with
the exception of ES6 classes.
Diffstat (limited to 'js/src/frontend/BytecodeCompiler.cpp')
-rw-r--r-- | js/src/frontend/BytecodeCompiler.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/js/src/frontend/BytecodeCompiler.cpp b/js/src/frontend/BytecodeCompiler.cpp index 76afe80b1..b5be5f5ac 100644 --- a/js/src/frontend/BytecodeCompiler.cpp +++ b/js/src/frontend/BytecodeCompiler.cpp @@ -77,7 +77,7 @@ class MOZ_STACK_CLASS BytecodeCompiler bool canLazilyParse(); bool createParser(); bool createSourceAndParser(Maybe<uint32_t> parameterListEnd = Nothing()); - bool createScript(); + bool createScript(uint32_t preludeStart = 0); bool emplaceEmitter(Maybe<BytecodeEmitter>& emitter, SharedContext* sharedContext); bool handleParseFailure(const Directives& newDirectives); bool deoptimizeArgumentsInEnclosingScripts(JSContext* cx, HandleObject environment); @@ -242,10 +242,11 @@ BytecodeCompiler::createSourceAndParser(Maybe<uint32_t> parameterListEnd /* = No } bool -BytecodeCompiler::createScript() +BytecodeCompiler::createScript(uint32_t preludeStart /* = 0 */) { script = JSScript::Create(cx, options, - sourceObject, /* sourceStart = */ 0, sourceBuffer.length()); + sourceObject, /* sourceStart = */ 0, sourceBuffer.length(), + preludeStart); return script != nullptr; } @@ -456,7 +457,7 @@ BytecodeCompiler::compileStandaloneFunction(MutableHandleFunction fun, if (fn->pn_funbox->function()->isInterpreted()) { MOZ_ASSERT(fun == fn->pn_funbox->function()); - if (!createScript()) + if (!createScript(fn->pn_funbox->preludeStart)) return false; Maybe<BytecodeEmitter> emitter; @@ -650,7 +651,8 @@ frontend::CompileLazyFunction(JSContext* cx, Handle<LazyScript*> lazy, const cha MOZ_ASSERT(sourceObject); Rooted<JSScript*> script(cx, JSScript::Create(cx, options, sourceObject, - lazy->begin(), lazy->end())); + lazy->begin(), lazy->end(), + lazy->preludeStart())); if (!script) return false; |