private void construct( SourceObject scriptObject_, boolean isExecutable_, DebugObject debug_, TokenBase rootChunk_, ArrayList<TokenBase> remark_, ArrayList<ScriptInstruction> instructionRegistry_) { isExecutable = isExecutable_; if (rootChunk_ != null) { rootChunk = (TokenBase) rootChunk_.clone(); } if (remark_ != null) { remark = (ArrayList<TokenBase>) remark_.clone(); } retObjClassName = scriptObject_.returnClassName; if (instructionRegistry_ != null) { instructionRegistry = (ArrayList<JRInstruction>) instructionRegistry_.clone(); } methodId = scriptObject_.methodId; if (debug_ != null) { debug = debug_.clone(); } if (scriptObject_ != null) { source = scriptObject_.clone(); } }
public static CompiledObject compileMethodCode( ScriptBase object_, ArrayList<String> code_, TwoTypeArrayList<String, String> arg_, String returnClassPath_) { final ScriptMethodCompiler smp = new ScriptMethodCompiler(object_); final SourceObject soV = new SourceObject(""); soV.returnClassName = returnClassPath_; for (int i = 0; i < code_.size(); i++) { soV.code.add(code_.get(i)); } for (int i = 0; i < arg_.size(); i++) { soV.addArgument(new ArgumentObject(arg_.getFirst(i), arg_.getSecond(i), null)); } CompiledObject methodCompiledObject = smp.parse( soV, new ValueListener_Float() { @Override public void onValueChange(float newValue_) {} }); // destroy references to help gc AsyncTimedEvent.startStatic( 30, new BaseEventListener() { @Override public boolean onEvent(Object info_) { soV.destroy(); smp.destroy(); return false; } }); return methodCompiledObject; }