use of com.github.anba.es6draft.compiler.assembler.MethodName in project es6draft by anba.
the class BlockDeclarationInstantiationGenerator method generate.
/**
* stack: [env] {@literal ->} [env]
*
* @param node
* the switch statement
* @param mv
* the code visitor
*/
void generate(SwitchStatement node, CodeVisitor mv) {
int declarations = LexicallyDeclaredNames(node).size();
if (declarations > INLINE_LIMIT) {
MethodName method = codegen.compile(node, this);
// stack: [env] -> [env]
mv.dup();
mv.loadExecutionContext();
mv.invoke(method);
} else {
generateInline(LexicallyScopedDeclarations(node), mv);
}
}
use of com.github.anba.es6draft.compiler.assembler.MethodName in project es6draft by anba.
the class ClassPropertyGenerator method visit.
@Override
public Void visit(MethodDefinitionsMethod node, CodeVisitor mv) {
MethodName method = codegen.compile(node, decorators != null, mv);
boolean hasResume = node.hasResumePoint();
// stack: [] -> []
// 0 = hint for stacktraces to omit this frame
mv.lineInfo(0);
if (hasResume) {
mv.callWithSuspend(method, constructor, prototype, decoratorsOrNull(mv));
} else {
mv.call(method, constructor, prototype, decoratorsOrNull(mv));
}
return null;
}
use of com.github.anba.es6draft.compiler.assembler.MethodName in project es6draft by anba.
the class ExpressionGenerator method visit.
/**
* 14.2.10 Runtime Semantics: Evaluation
*/
@Override
public ValType visit(ArrowFunction node, CodeVisitor mv) {
MethodName method = codegen.compile(node);
/* steps 1-4 */
mv.invoke(method);
mv.loadExecutionContext();
mv.invoke(Methods.ScriptRuntime_EvaluateArrowFunction);
/* step 5 */
return ValType.Object;
}
use of com.github.anba.es6draft.compiler.assembler.MethodName in project es6draft by anba.
the class ExpressionGenerator method visit.
/**
* Extension: Async Generator Function Definitions
*/
@Override
public ValType visit(AsyncGeneratorExpression node, CodeVisitor mv) {
MethodName method = codegen.compile(node);
/* steps 1-5/10 */
mv.invoke(method);
mv.loadExecutionContext();
mv.invoke(Methods.ScriptRuntime_EvaluateAsyncGeneratorExpression);
/* step 6/11 */
return ValType.Object;
}
use of com.github.anba.es6draft.compiler.assembler.MethodName in project es6draft by anba.
the class ExpressionGenerator method visit.
/**
* Extension: Async Function Definitions
*/
@Override
public ValType visit(AsyncFunctionExpression node, CodeVisitor mv) {
MethodName method = codegen.compile(node);
/* steps 1-5/10 */
mv.invoke(method);
mv.loadExecutionContext();
mv.invoke(Methods.ScriptRuntime_EvaluateAsyncFunctionExpression);
/* step 6/11 */
return ValType.Object;
}
Aggregations