Examples of canCaptureCallersBinding()


Examples of org.jruby.compiler.ir.IRMethod.canCaptureCallersBinding()

        //
        // SSS FIXME:
        // This is a "static" check and at some point during the execution, the caller's code could change and capture the binding at that point!
        // We need to set a compilation flag that records this dependency on the caller, so that this method can be recompiled whenever
        // the caller changes.
        return ((rm == null) || rm.canCaptureCallersBinding());
    }

    public boolean isLVADataflowBarrier() {
        // If the call is an eval, OR if it passes a closure and the callee can capture the caller's binding, we are in trouble
        // We would have to pretty much spill everything at the call site!
View Full Code Here

Examples of org.jruby.compiler.ir.instructions.CallInstr.canCaptureCallersBinding()

                    cl_bsp.setup(cl_cfg);
                    cl_bsp.compute_MOP_Solution();
                    cl_cfg.setDataFlowSolution(cl_bsp.getName(), cl_bsp);

                    // If the call is an eval, or if the callee can capture this method's binding, we have to spill all variables.
                    boolean spillAllVars = call.canBeEval() || call.canCaptureCallersBinding();

                    // - If all variables have to be spilled, then those variables will no longer be dirty after the call site
                    // - If a variable is used in the closure (FIXME: Strictly only those vars that are live at the call site --
                    //   but we dont have this info!), it has to be spilt. So, these variables are no longer dirty after the call site.
                    // - If a variable is (re)defined in the closure, it will be saved inside the closure.  So, these variables
View Full Code Here

Examples of org.jruby.compiler.ir.instructions.CallInstr.canCaptureCallersBinding()

                        bindingAllocated = true;
                    }

                    // If the call is an eval, or if the callee can capture this method's binding,
                    // we have to spill all variables.
                    boolean spillAllVars = call.canBeEval() || call.canCaptureCallersBinding();

                    // Unless we have to spill everything, spill only those dirty variables that are:
                    // - used in the closure (FIXME: Strictly only those vars that are live at the call site -- but we dont have this info!)
                    Set<Variable> newDirtyVars = new HashSet<Variable>(dirtyVars);
                    for (Variable v : dirtyVars) {
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.