//ASTIdent fun = f.getName();
ASTIdent[] args = f.getArgs();
String class_name = method.getClassName();
if(fname.equals("READ")) {
il.append(new INVOKESTATIC(cp.addMethodref(class_name,
"_readInt",
"()I")));
} else if(fname.equals("WRITE")) {
exprs[0].byte_code(il, method, cp);
ASTFunDecl.pop();
il.append(new INVOKESTATIC(cp.addMethodref(class_name,
"_writeInt",
"(I)I")));
}
else { // Normal function
int size = exprs.length;
Type[] argv = null;
if(exprs != null) {
argv = new Type[size];
for(int i=0; i < size; i++) {
argv[i] = Type.INT;
exprs[i].byte_code(il, method, cp);
}
//ASTFunDecl.push(size);
}
ASTFunDecl.pop(size);
// Function call
il.append(new INVOKESTATIC(cp.addMethodref(class_name,
fname,
Type.getMethodSignature(Type.INT,
argv))));
}