summaryrefslogtreecommitdiffstats
path: root/js/src/frontend/BytecodeCompiler.cpp
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@wolfbeast.com>2019-04-06 12:12:20 +0200
committerwolfbeast <mcwerewolf@wolfbeast.com>2019-04-06 12:14:14 +0200
commita9682a32af09f2fb8ae39c66fdc19ecdee24e591 (patch)
tree738033a7ad68a052403875d43ade1bf26ee2edf7 /js/src/frontend/BytecodeCompiler.cpp
parentcc07da9cb4d6e7a53f8d953427ffc2bca2e0c2df (diff)
parenta5d22aa6106fbd3c8cec12333b14d4c65cd98647 (diff)
downloadUXP-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.cpp12
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;