Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.jruby.internal.runtime.methods;
  
  import java.util.List;
  
 
 public class InterpretedIRMethod extends DynamicMethod implements IRMethodArgsPositionAware {
     private static final Logger LOG = LoggerFactory.getLogger("InterpretedIRMethod");
 
     private final IRScope method;
     private Arity arity;
     boolean displayedCFG = false// FIXME: Remove when we find nicer way of logging CFG
     
     public InterpretedIRMethod(IRScope methodVisibility visibilityRubyModule implementationClass) {
         super(implementationClassvisibility.);
         this. = method;
         this..getStaticScope().determineModule();
         this. = calculateArity();
     }
 
     // We can probably use IRMethod callArgs for something (at least arity)
     public InterpretedIRMethod(IRScope methodRubyModule implementationClass) {
         this(method.implementationClass);
     }
     
     public IRScope getIRMethod() {
         return ;
     }
 
     public List<String[]> getParameterList() {
         return ( instanceof IRMethod) ? ((IRMethod)).getArgDesc() : new ArrayList<String[]>();
     }
 
     private Arity calculateArity() {
         StaticScope s = .getStaticScope();
         if (s.getOptionalArgs() > 0 || s.getRestArg() >= 0) return Arity.required(s.getRequiredArgs());
 
         return Arity.createArity(s.getRequiredArgs());
     }
 
     @Override
     public Arity getArity() {
         return this.;
     }
 
     @Override
     public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameIRubyObject[] argsBlock block) {
         // SSS FIXME: Move this out of here to some other place?
         // Prepare method if not yet done so we know if the method has an explicit/implicit call protocol
         if (.getInstrsForInterpretation() == null.prepareForInterpretation(false);
 
         if (IRRuntimeHelpers.isDebug()) {
             // FIXME: name should probably not be "" ever.
             String realName = name == null || "".equals(name) ? .getName() : name;
             .info("Executing '" + realName + "'");
             if ( == false) {
                 // The base IR may not have been processed yet
                 CFG cfg = .getCFG();
                 .info("Graph:\n" + cfg.toStringGraph());
                 .info("CFG:\n" + cfg.toStringInstrs());
                  = true;
             }
         }
 
         if (.hasExplicitCallProtocol()) {
             return Interpreter.INTERPRET_METHOD(contextthisselfnameargsblocknullfalse);
         } else {
             try {
                 // update call stacks (push: frame, class, scope, etc.)
                 context.preMethodFrameAndScope(getImplementationClass(), nameselfblock.getStaticScope());
                 context.setCurrentVisibility(getVisibility());
                 return Interpreter.INTERPRET_METHOD(contextthisselfnameargsblocknullfalse);
             } finally {
                 // update call stacks (pop: ..)
                 context.popFrame();
                 context.popRubyClass();
                 context.popScope();
             }
         }
     }
    @Override
    public DynamicMethod dup() {
        return new InterpretedIRMethod();
    }
    public String getFile() {
        return .getFileName();
    }
    public int getLine() {
        return .getLineNumber();
   }
New to GrepCode? Check out our FAQ X