private MumblerFunction evaluateFunction(VirtualFrame virtualFrame) { try { return this.functionNode.executeMumblerFunction(virtualFrame); } catch (UnexpectedResultException e) { throw new UnsupportedSpecializationException(this, new Node[] {this.functionNode}, e); } }
protected Object unsupported(Frame frame, Object o1, Object o2, Object o3) { throw new UnsupportedSpecializationException(findRoot(), getSuppliedChildren(), o1, o2, o3); }
protected Object unsupported(Frame frame, Object... args) { throw new UnsupportedSpecializationException(findRoot(), getSuppliedChildren(), args); }
protected Object unsupported(Frame frame, Object o1) { throw new UnsupportedSpecializationException(findRoot(), getSuppliedChildren(), o1); }
protected Object unsupported(Frame frame, Object o1, Object o2) { throw new UnsupportedSpecializationException(findRoot(), getSuppliedChildren(), o1, o2); }
protected Object unsupported(Frame frame) { throw new UnsupportedSpecializationException(findRoot(), getSuppliedChildren()); }
protected Object unsupported(Frame frame, Object o1, Object o2, Object o3, Object o4) { throw new UnsupportedSpecializationException(findRoot(), getSuppliedChildren(), o1, o2, o3, o4); }
protected Object unsupported(Frame frame, Object o1, Object o2, Object o3, Object o4, Object o5) { throw new UnsupportedSpecializationException(findRoot(), getSuppliedChildren(), o1, o2, o3, o4, o5); }
@Override @ExplodeLoop public Object execute(VirtualFrame frame) { try { LuaFunction method = functionNode.executeLuaMethod(frame); CompilerAsserts.compilationConstant(argumentNodes.length); Object[] argumentValues = new Object[argumentNodes.length]; for (int i = 0; i < argumentNodes.length; i++) { argumentValues[i] = argumentNodes[i].execute(frame); } return dispatchNode.executeDispatch(frame, method, argumentValues); } catch (UnexpectedResultException ex) { throw new UnsupportedSpecializationException(this, new Node[]{functionNode}, ex.getResult()); } } }