public void Call(IAsm a) { Var func = a.getVar(); LibFunc lfunc; String funcsig = genDataTypeSig(a.getVar()); VarList x = func.getParams(); String paramsig = ""; if (x.Length() > 0) { int max = x.Length(); StringBuilder t = new StringBuilder(Io.MAXSTR); for (int i = 0; i < max; i++) { Var e = x.FindByIndex(i); t.Append(genDataTypeSig(e)); if (i < max - 1) { t.Append(","); } } paramsig = t.ToString(); } StringBuilder sb = new StringBuilder(Io.MAXSTR); sb.Append("\tcall "); sb.Append(funcsig); sb.Append(" "); lfunc = lib.lookup_func(a.getVar().getName()); if (lfunc != null) { sb.Append(lfunc.nameFull); } else { sb.Append(io.GetClassname()); sb.Append("::"); sb.Append(func.getName()); sb.Append("("); sb.Append(paramsig); sb.Append(")"); } sb.Append("\t\t\t\t\t//"); sb.Append(a.getICount()); sb.Append("\r\n"); io.Out(sb.ToString()); }
public void Call(IAsm a) { Var func = a.getVar(); Object o = func.getMethodBuilder(); LibFunc lfunc = lib.lookup_func(a.getVar().getName()); if (lfunc != null) { il.Emit(OpCodes.Call, lfunc.methodInfo); } else { if (o == null) { io.ICE("no previous extern for (" + func.getName() + ")"); } MethodBuilder mb = (MethodBuilder)o; il.Emit(OpCodes.Call, mb); } }