diff --git a/js/src/frontend/BytecodeEmitter.cpp b/js/src/frontend/BytecodeEmitter.cpp index df1b44a63eb6..643fa72b4482 100644 --- a/js/src/frontend/BytecodeEmitter.cpp +++ b/js/src/frontend/BytecodeEmitter.cpp @@ -2141,7 +2141,7 @@ class ForOfLoopControl : public LoopControl }; BytecodeEmitter::BytecodeEmitter(BytecodeEmitter* parent, - const EitherParser& parser, SharedContext* sc, + const EitherParser& parser, SharedContext* sc, HandleScript script, Handle lazyScript, uint32_t lineNum, EmitterMode emitterMode) : sc(sc), @@ -2181,7 +2181,7 @@ BytecodeEmitter::BytecodeEmitter(BytecodeEmitter* parent, } BytecodeEmitter::BytecodeEmitter(BytecodeEmitter* parent, - const EitherParser& parser, SharedContext* sc, + const EitherParser& parser, SharedContext* sc, HandleScript script, Handle lazyScript, TokenPos bodyPosition, EmitterMode emitterMode) : BytecodeEmitter(parent, parser, sc, script, lazyScript, diff --git a/js/src/frontend/BytecodeEmitter.h b/js/src/frontend/BytecodeEmitter.h index 4fcc751fd86e..883779dfba3c 100644 --- a/js/src/frontend/BytecodeEmitter.h +++ b/js/src/frontend/BytecodeEmitter.h @@ -220,7 +220,7 @@ struct MOZ_STACK_CLASS BytecodeEmitter }; EmitSection prologue, main, *current; - EitherParser parser; + EitherParser parser; PooledMapPtr atomIndices; /* literals indexed for mapping */ unsigned firstLine; /* first line, for JSScript::initFromEmitter */ @@ -295,7 +295,7 @@ struct MOZ_STACK_CLASS BytecodeEmitter * tempLifoAlloc and save the pointer beyond the next BytecodeEmitter * destruction. */ - BytecodeEmitter(BytecodeEmitter* parent, const EitherParser& parser, + BytecodeEmitter(BytecodeEmitter* parent, const EitherParser& parser, SharedContext* sc, HandleScript script, Handle lazyScript, uint32_t lineNum, EmitterMode emitterMode = Normal); @@ -303,13 +303,13 @@ struct MOZ_STACK_CLASS BytecodeEmitter BytecodeEmitter(BytecodeEmitter* parent, Parser* parser, SharedContext* sc, HandleScript script, Handle lazyScript, uint32_t lineNum, EmitterMode emitterMode = Normal) - : BytecodeEmitter(parent, EitherParser(parser), sc, script, lazyScript, + : BytecodeEmitter(parent, EitherParser(parser), sc, script, lazyScript, lineNum, emitterMode) {} // An alternate constructor that uses a TokenPos for the starting // line and that sets functionBodyEndPos as well. - BytecodeEmitter(BytecodeEmitter* parent, const EitherParser& parser, + BytecodeEmitter(BytecodeEmitter* parent, const EitherParser& parser, SharedContext* sc, HandleScript script, Handle lazyScript, TokenPos bodyPosition, EmitterMode emitterMode = Normal); @@ -317,7 +317,7 @@ struct MOZ_STACK_CLASS BytecodeEmitter BytecodeEmitter(BytecodeEmitter* parent, Parser* parser, SharedContext* sc, HandleScript script, Handle lazyScript, TokenPos bodyPosition, EmitterMode emitterMode = Normal) - : BytecodeEmitter(parent, EitherParser(parser), sc, script, lazyScript, + : BytecodeEmitter(parent, EitherParser(parser), sc, script, lazyScript, bodyPosition, emitterMode) {} diff --git a/js/src/frontend/EitherParser.h b/js/src/frontend/EitherParser.h index 2d9a85c11702..913f3795f872 100644 --- a/js/src/frontend/EitherParser.h +++ b/js/src/frontend/EitherParser.h @@ -70,7 +70,7 @@ struct GetParser template struct GetParseHandler { - static auto get(Parser* parser) -> decltype(&parser->handler) { + static frontend::FullParseHandler* get(Parser* parser) { return &parser->handler; } }; @@ -147,12 +147,12 @@ struct ErrorReporterMatcher namespace frontend { -template class EitherParser { - mozilla::Variant* const> parser; + // Leave this as a variant, to promote good form until 8-bit parser integration. + mozilla::Variant* const> parser; - using Node = typename ParseHandler::Node; + using Node = typename FullParseHandler::Node; template