public final int getArgumentType() { return BlockBody.asArgumentType(BlockBody.getArgumentTypeWackyHack(this)); }
public final int getArgumentType() { return BlockBody.asArgumentType(BlockBody.getArgumentTypeWackyHack(this)); }
public static String buildBlockDescriptor( String closureMethod, int arity, String file, int line, boolean hasMultipleArgsHead, NodeType argsNodeId, ASTInspector inspector) { // We use : to delimit since mangleMethodName mangles it (i.e. it will // never appear in the resulting mangled string) String descriptor = JavaNameMangler.mangleMethodName(closureMethod) + ':' + arity + ':' + hasMultipleArgsHead + ':' + BlockBody.asArgumentType(argsNodeId) + ':' + JavaNameMangler.mangleMethodName(file) + ':' + line + ':' + !(inspector.hasClosure() || inspector.hasScopeAwareMethods()); return descriptor; }
public static String buildBlockDescriptor( String closureMethod, int arity, String file, int line, boolean hasMultipleArgsHead, NodeType argsNodeId, ASTInspector inspector) { // We use : to delimit since mangleMethodName mangles it (i.e. it will // never appear in the resulting mangled string) String descriptor = JavaNameMangler.mangleMethodName(closureMethod) + ':' + arity + ':' + hasMultipleArgsHead + ':' + BlockBody.asArgumentType(argsNodeId) + ':' + JavaNameMangler.mangleMethodName(file) + ':' + line + ':' + !(inspector.hasClosure() || inspector.hasScopeAwareMethods()); return descriptor; }
public BlockBody newCompiledBlockBody19(ThreadContext context, IterNode iterNode) { final ArgsNode argsNode = (ArgsNode)iterNode.getVarNode(); boolean hasMultipleArgsHead = false; if (iterNode.getVarNode() instanceof MultipleAsgnNode) { hasMultipleArgsHead = ((MultipleAsgnNode) iterNode.getVarNode()).getHeadNode() != null; } NodeType argsNodeId = BlockBody.getArgumentTypeWackyHack(iterNode); return new CompiledBlock19(((ArgsNode)iterNode.getVarNode()).getArity(), iterNode.getScope(), compileBlock19(context, new StandardASMCompiler("blahfooblah" + System.currentTimeMillis(), "blahfooblah"), iterNode), hasMultipleArgsHead, BlockBody.asArgumentType(argsNodeId), Helpers.encodeParameterList(argsNode).split(";")); }
public BlockBody newCompiledBlockBody19(ThreadContext context, IterNode iterNode) { final ArgsNode argsNode = (ArgsNode)iterNode.getVarNode(); boolean hasMultipleArgsHead = false; if (iterNode.getVarNode() instanceof MultipleAsgnNode) { hasMultipleArgsHead = ((MultipleAsgnNode) iterNode.getVarNode()).getHeadNode() != null; } NodeType argsNodeId = BlockBody.getArgumentTypeWackyHack(iterNode); return new CompiledBlock19(((ArgsNode)iterNode.getVarNode()).getArity(), iterNode.getScope(), compileBlock19(context, new StandardASMCompiler("blahfooblah" + System.currentTimeMillis(), "blahfooblah"), iterNode), hasMultipleArgsHead, BlockBody.asArgumentType(argsNodeId), Helpers.encodeParameterList(argsNode).split(";")); }
public BlockBody newCompiledBlockBody(ThreadContext context, IterNode iterNode, Arity arity, int argumentType) { NodeType argsNodeId = getArgumentTypeWackyHack(iterNode); boolean hasMultipleArgsHead = false; if (iterNode.getVarNode() instanceof MultipleAsgnNode) { hasMultipleArgsHead = ((MultipleAsgnNode) iterNode.getVarNode()).getHeadNode() != null; } return new CompiledBlock(Arity.procArityOf(iterNode.getVarNode()), iterNode.getScope(), compileBlock(context, new StandardASMCompiler("blahfooblah" + System.currentTimeMillis(), "blahfooblah"), iterNode), hasMultipleArgsHead, BlockBody.asArgumentType(argsNodeId)); }
public BlockBody newCompiledBlockBody(ThreadContext context, IterNode iterNode, Arity arity, int argumentType) { NodeType argsNodeId = getArgumentTypeWackyHack(iterNode); boolean hasMultipleArgsHead = false; if (iterNode.getVarNode() instanceof MultipleAsgnNode) { hasMultipleArgsHead = ((MultipleAsgnNode) iterNode.getVarNode()).getHeadNode() != null; } return new CompiledBlock(Arity.procArityOf(iterNode.getVarNode()), iterNode.getScope(), compileBlock(context, new StandardASMCompiler("blahfooblah" + System.currentTimeMillis(), "blahfooblah"), iterNode), hasMultipleArgsHead, BlockBody.asArgumentType(argsNodeId)); }
public Block newCompiledClosure(ThreadContext context, IterNode iterNode, IRubyObject self) { Binding binding = context.currentBinding(self); NodeType argsNodeId = getArgumentTypeWackyHack(iterNode); boolean hasMultipleArgsHead = false; if (iterNode.getVarNode() instanceof MultipleAsgnNode) { hasMultipleArgsHead = ((MultipleAsgnNode) iterNode.getVarNode()).getHeadNode() != null; } BlockBody body = new CompiledBlock(Arity.procArityOf(iterNode.getVarNode()), iterNode.getScope(), compileBlock(context, new StandardASMCompiler("blahfooblah" + System.currentTimeMillis(), "blahfooblah"), iterNode), hasMultipleArgsHead, BlockBody.asArgumentType(argsNodeId)); return new Block(body, binding); }
public Block newCompiledClosure(ThreadContext context, IterNode iterNode, IRubyObject self) { Binding binding = context.currentBinding(self); NodeType argsNodeId = getArgumentTypeWackyHack(iterNode); boolean hasMultipleArgsHead = false; if (iterNode.getVarNode() instanceof MultipleAsgnNode) { hasMultipleArgsHead = ((MultipleAsgnNode) iterNode.getVarNode()).getHeadNode() != null; } BlockBody body = new CompiledBlock(Arity.procArityOf(iterNode.getVarNode()), iterNode.getScope(), compileBlock(context, new StandardASMCompiler("blahfooblah" + System.currentTimeMillis(), "blahfooblah"), iterNode), hasMultipleArgsHead, BlockBody.asArgumentType(argsNodeId)); return new Block(body, binding); }
public void createNewForLoop(int arity, CompilerCallback body, CompilerCallback args, boolean hasMultipleArgsHead, NodeType argsNodeId, ASTInspector inspector) { String closureMethodName = "block_" + script.getAndIncrementInnerIndex() + "$RUBY$__for__"; ChildScopedBodyCompiler closureCompiler = new ChildScopedBodyCompiler(script, closureMethodName, rubyName, inspector, scope, scopeIndex); closureCompiler.beginMethod(args, null); body.call(closureCompiler); closureCompiler.endBody(); // Done with closure compilation loadThreadContext(); loadSelf(); method.pushInt(arity); script.getCacheCompiler().cacheSpecialClosure(this, closureMethodName); method.ldc(Boolean.valueOf(hasMultipleArgsHead)); method.ldc(BlockBody.asArgumentType(argsNodeId)); invokeUtilityMethod("createSharedScopeBlock", sig(Block.class, params(ThreadContext.class, IRubyObject.class, Integer.TYPE, CompiledBlockCallback.class, Boolean.TYPE, Integer.TYPE))); }
public void createNewForLoop(int arity, CompilerCallback body, CompilerCallback args, boolean hasMultipleArgsHead, NodeType argsNodeId, ASTInspector inspector) { String closureMethodName = "block_" + script.getAndIncrementInnerIndex() + "$RUBY$__for__"; ChildScopedBodyCompiler closureCompiler = new ChildScopedBodyCompiler(script, closureMethodName, rubyName, inspector, scope, scopeIndex); closureCompiler.beginMethod(args, null); body.call(closureCompiler); closureCompiler.endBody(); // Done with closure compilation loadThreadContext(); loadSelf(); method.pushInt(arity); script.getCacheCompiler().cacheSpecialClosure(this, closureMethodName); method.ldc(Boolean.valueOf(hasMultipleArgsHead)); method.ldc(BlockBody.asArgumentType(argsNodeId)); invokeUtilityMethod("createSharedScopeBlock", sig(Block.class, params(ThreadContext.class, IRubyObject.class, Integer.TYPE, CompiledBlockCallback.class, Boolean.TYPE, Integer.TYPE))); }