public VariableResolver createVariable(String name, Object value, Class<?> type) { VariableResolver vr = this.variableResolvers != null ? this.variableResolvers.get(name) : null; if (vr != null && vr.getType() != null) { throw new RuntimeException("variable already defined within scope: " + vr.getType() + " " + name); } else { return createIndexedVariable(variableIndexOf(name), name, value); } }
public VariableResolver createVariable(String name, Object value) { VariableResolver resolver = getVariableResolver(name); if (resolver == null) { int idx = increaseRegisterTableSize(); this.indexedVariableNames[idx] = name; this.indexedVariableResolvers[idx] = new SimpleValueResolver(value); variableResolvers.put(name, null); // variableResolvers.put(name, this.indexedVariableResolvers[idx] = new SimpleValueResolver(value)); return this.indexedVariableResolvers[idx]; } else { resolver.setValue(value); return resolver; } }
public Object call(Object ctx, Object thisValue, VariableResolverFactory factory, Object[] parms) { try { if (parms != null && parms.length != 0) { // detect tail recursion if (factory instanceof FunctionVariableResolverFactory && ((FunctionVariableResolverFactory) factory).getIndexedVariableResolvers().length == parms.length) { FunctionVariableResolverFactory fvrf = (FunctionVariableResolverFactory) factory; if (fvrf.getFunction().equals(this)) { VariableResolver[] swapVR = fvrf.getIndexedVariableResolvers(); fvrf.updateParameters(parms); try { return compiledBlock.getValue(ctx, thisValue, fvrf); } finally { fvrf.setIndexedVariableResolvers(swapVR); } } } return compiledBlock.getValue(ctx, thisValue, new FunctionVariableResolverFactory(this, factory, parameters, parms)); } else { return compiledBlock.getValue(ctx, thisValue, new DefaultLocalVariableResolverFactory(factory)); } } catch (EndWithValue end) { return end.getValue(); } }
public boolean isTarget(String name) { return variableResolvers.containsKey(name) || variableIndexOf(name) != -1; }
public Object call(Object ctx, Object thisValue, VariableResolverFactory factory, Object[] parms) { if (parms != null && parms.length != 0) { // detect tail recursion if (factory instanceof FunctionVariableResolverFactory && ((FunctionVariableResolverFactory) factory).getIndexedVariableResolvers().length == parms.length) { FunctionVariableResolverFactory fvrf = (FunctionVariableResolverFactory) factory; if (fvrf.getFunction().equals(this)) { VariableResolver[] swapVR = fvrf.getIndexedVariableResolvers(); fvrf.updateParameters(parms); try { return compiledBlock.getValue(ctx, thisValue, fvrf); } finally { fvrf.setIndexedVariableResolvers(swapVR); } } } return compiledBlock.getValue(thisValue, new StackDemarcResolverFactory(new FunctionVariableResolverFactory(this, factory, parameters, parms))); } else if (compiledMode) { return compiledBlock.getValue(thisValue, new StackDemarcResolverFactory(new DefaultLocalVariableResolverFactory(factory, parameters))); } else { return compiledBlock.getValue(thisValue, new StackDemarcResolverFactory(new DefaultLocalVariableResolverFactory(factory, parameters))); } }
public boolean isTarget(String name) { return variableResolvers.containsKey(name) || variableIndexOf(name) != -1; }
public Object call(Object ctx, Object thisValue, VariableResolverFactory factory, Object[] parms) { if (parms != null && parms.length != 0) { // detect tail recursion if (factory instanceof FunctionVariableResolverFactory && ((FunctionVariableResolverFactory) factory).getIndexedVariableResolvers().length == parms.length) { FunctionVariableResolverFactory fvrf = (FunctionVariableResolverFactory) factory; if (fvrf.getFunction().equals(this)) { VariableResolver[] swapVR = fvrf.getIndexedVariableResolvers(); fvrf.updateParameters(parms); try { return compiledBlock.getValue(ctx, thisValue, fvrf); } finally { fvrf.setIndexedVariableResolvers(swapVR); } } } return compiledBlock.getValue(thisValue, new StackDemarcResolverFactory(new FunctionVariableResolverFactory(this, factory, parameters, parms))); } else if (compiledMode) { return compiledBlock.getValue(thisValue, new StackDemarcResolverFactory(new DefaultLocalVariableResolverFactory(factory, parameters))); } else { return compiledBlock.getValue(thisValue, new StackDemarcResolverFactory(new DefaultLocalVariableResolverFactory(factory, parameters))); } }
public VariableResolver createVariable(String name, Object value, Class<?> type) { VariableResolver vr = this.variableResolvers != null ? this.variableResolvers.get(name) : null; if (vr != null && vr.getType() != null) { throw new RuntimeException("variable already defined within scope: " + vr.getType() + " " + name); } else { return createIndexedVariable(variableIndexOf(name), name, value); } }
public VariableResolver createVariable(String name, Object value) { VariableResolver resolver = getVariableResolver(name); if (resolver == null) { int idx = increaseRegisterTableSize(); this.indexedVariableNames[idx] = name; this.indexedVariableResolvers[idx] = new SimpleValueResolver(value); variableResolvers.put(name, null); // variableResolvers.put(name, this.indexedVariableResolvers[idx] = new SimpleValueResolver(value)); return this.indexedVariableResolvers[idx]; } else { resolver.setValue(value); return resolver; } }
public boolean isTarget(String name) { return variableResolvers.containsKey(name) || variableIndexOf(name) != -1; }
public VariableResolver createVariable(String name, Object value, Class<?> type) { VariableResolver vr = this.variableResolvers != null ? this.variableResolvers.get(name) : null; if (vr != null && vr.getType() != null) { throw new CompileException("variable already defined within scope: " + vr.getType() + " " + name); } else { return createIndexedVariable(variableIndexOf(name), name, value); } }
public VariableResolver createVariable(String name, Object value) { VariableResolver resolver = getVariableResolver(name); if (resolver == null) { int idx = increaseRegisterTableSize(); this.indexedVariableNames[idx] = name; this.indexedVariableResolvers[idx] = new SimpleValueResolver(value); variableResolvers.put(name, null); // variableResolvers.put(name, this.indexedVariableResolvers[idx] = new SimpleValueResolver(value)); return this.indexedVariableResolvers[idx]; } else { resolver.setValue(value); return resolver; } }
public VariableResolver getVariableResolver(String name) { int idx; // if (variableResolvers.containsKey(name)) return variableResolvers.get(name); if ((idx = variableIndexOf(name)) != -1) { if (indexedVariableResolvers[idx] == null) { indexedVariableResolvers[idx] = new SimpleValueResolver(null); } variableResolvers.put(indexedVariableNames[idx], null); return indexedVariableResolvers[idx]; } return super.getVariableResolver(name); }
public VariableResolver getVariableResolver(String name) { int idx; // if (variableResolvers.containsKey(name)) return variableResolvers.get(name); if ((idx = variableIndexOf(name)) != -1) { if (indexedVariableResolvers[idx] == null) { indexedVariableResolvers[idx] = new SimpleValueResolver(null); } variableResolvers.put(indexedVariableNames[idx], null); return indexedVariableResolvers[idx]; } return super.getVariableResolver(name); }
public VariableResolver getVariableResolver(String name) { int idx; // if (variableResolvers.containsKey(name)) return variableResolvers.get(name); if ((idx = variableIndexOf(name)) != -1) { if (indexedVariableResolvers[idx] == null) { indexedVariableResolvers[idx] = new SimpleValueResolver(null); } variableResolvers.put(indexedVariableNames[idx], null); return indexedVariableResolvers[idx]; } return super.getVariableResolver(name); }