Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.dynjs.runtime.interp;
  
  import java.util.List;
  
 
 
     public InvokeDynamicInterpretingVisitor(BlockManager blockManager) {
         super(blockManager);
     }
 
     @Override
     public Object visit(Object context1AssignmentExpression exprboolean strict) {
         ExecutionContext context = (ExecutionContextcontext1;
         
         Object lhs = expr.getLhs().accept(contextthisstrict);
         if (!(lhs instanceof Reference)) {
             throw new ThrowException(contextcontext.createReferenceError(expr.getLhs() + " is not a reference"));
         }
 
         Reference lhsRef = (Referencelhs;
         Object rhs = getValue(contextexpr.getRhs().accept(contextthisstrict));
 
         if (lhsRef.isUnresolvableReference() && strict) {
             throw new ThrowException(contextcontext.createReferenceError(lhsRef.getReferencedName() + " is not defined"));
         }
 
         try {
             DynJSBootstrapper.getInvokeHandler().set(lhsRefcontextlhsRef.getReferencedName(), rhs);
         } catch (ThrowException e) {
             throw e;
         } catch (Throwable e) {
             throw new ThrowException(contexte);
         }
         return(rhs);
 
         // lhsRef.putValue(context, rhs);
         // invokedynamic("dyn:setProperty", sig(void.class, Reference.class, ExecutionContext.class, String.class, Object.class), DynJSBootstrapper.HANDLE,
         // DynJSBootstrapper.ARGS);
     }
 
     @Override
     public Object visit(Object context1FunctionCallExpression exprboolean strict) {
         ExecutionContext context = (ExecutionContextcontext1;
 
         Object ref = expr.getMemberExpression().accept(contextthisstrict);
         Object function = getValue(contextref);
 
         List<ExpressionargExprs = expr.getArgumentExpressions();
 
         Object[] args = new Object[argExprs.size()];
         int i = 0;
 
         for (Expression each : argExprs) {
 
             Object value = getValue(context,each.accept(contextthisstrict));
             args[i] = value;
             ++i;
         }
 
         Object thisValue = null;
 
         if (ref instanceof Reference) {
             if (((Referenceref).isPropertyReference()) {
                 thisValue = ((Referenceref).getBase();
             } else {
                 thisValue = ((EnvironmentRecord) ((Referenceref).getBase()).implicitThisValue();
             }
         }
 
         if (thisValue == null) {
             thisValue = .;
         }
 
         if (ref instanceof Reference) {
             function = new DereferencedReference((Referencereffunction);
         }
 
         try {
             return(DynJSBootstrapper.getInvokeHandler().call(functioncontextthisValueargs));
         } catch (ThrowException e) {
             throw e;
         } catch (NoSuchMethodError e) {
             throw new ThrowException(contextcontext.createTypeError("not callable: " + function.toString()));
         } catch (Throwable e) {
             throw new ThrowException(contexte);
         }
     }
 
     @Override
     public Object visit(Object context1NewOperatorExpression exprboolean strict) {
        ExecutionContext context = (ExecutionContextcontext1;
        Object ref = expr.getExpr().accept(contextthisstrict);
        Object memberExpr = getValue(contextref);
        Object[] args = new Object[expr.getArgumentExpressions().size()];
        int i = 0;
        for (Expression each : expr.getArgumentExpressions()) {
            args[i] = getValue(contexteach.accept(contextthisstrict));
            ++i;
        }
        Object ctor = memberExpr;
        if ( ref instanceof Reference && ctor instanceof JSFunction) {
            ctor = new DereferencedReference((Referencerefctor);
        }
        try {
            return( DynJSBootstrapper.getInvokeHandler().construct(ctorcontextargs) );
        } catch (NoSuchMethodError e) {
            throw new ThrowException(contextcontext.createTypeError("cannot construct with: " + ref));
        } catch (ThrowException e) {
            throw e;
        } catch (Throwable e) {
            throw new ThrowException(contexte);
        }
    }
    @Override
    protected Object getValue(ExecutionContext contextObject obj) {
        if (obj instanceof Reference) {
            Reference ref = (Referenceobj;
            String name = ref.getReferencedName();
            try {
                Object result = DynJSBootstrapper.getInvokeHandler().get(objcontextname);
                return result;
            } catch (ThrowException e) {
                throw e;
            } catch (NoSuchMethodError e) {
                if (ref.isPropertyReference() && !ref.isUnresolvableReference()) {
                    return .;
                }
                throw new ThrowException(contextcontext.createReferenceError("unable to reference: " + name));
            } catch (Throwable e) {
                throw new ThrowException(contexte);
            }
        } else {
            return obj;
        }
    }
New to GrepCode? Check out our FAQ X