* fixed invokeinterface usage: must also specify the number of stack

slots used by the call

git-svn-id: branches/jvmbackend@18528 -
This commit is contained in:
Jonas Maebe 2011-08-20 08:07:30 +00:00
parent c9537e3347
commit e8ec2c45af

View File

@ -1846,7 +1846,8 @@ implementation
begin
{
invoke types:
* invokeinterface: call method from an interface
* invokeinterface: call method from an interface (must also specify
number of parameters in terms of stack slot count!)
* invokespecial: invoke a constructor, method in a superclass,
or private instance method
* invokestatic: invoke a class method (private or not)
@ -1893,7 +1894,13 @@ implementation
else
internalerror(2010122602);
end;
list.concat(taicpu.op_sym(opc,current_asmdata.RefAsmSymbol(s)));
if (opc<>a_invokeinterface) then
list.concat(taicpu.op_sym(opc,current_asmdata.RefAsmSymbol(s)))
else
begin
pd.init_paraloc_info(calleeside);
list.concat(taicpu.op_sym_const(opc,current_asmdata.RefAsmSymbol(s),pd.calleeargareasize));
end;
end;
procedure thlcgjvm.g_call_system_proc(list: TAsmList; const procname: string);