* enable intercepting passes on tinlinenode(in_new_x); these cannot be

generated from Pascal source code, but they will be generated by the
    JVM backend to construct new array instances

git-svn-id: branches/jvmbackend@18374 -
This commit is contained in:
Jonas Maebe 2011-08-20 07:53:51 +00:00
parent e56ad62f09
commit f47689a5fe
2 changed files with 21 additions and 0 deletions

View File

@ -57,6 +57,7 @@ interface
procedure second_rox; virtual;
procedure second_sar; virtual;
procedure second_bsfbsr; virtual;
procedure second_new; virtual;
end;
implementation
@ -173,6 +174,8 @@ implementation
in_bsf_x,
in_bsr_x:
second_BsfBsr;
in_new_x:
second_new;
else internalerror(9);
end;
end;
@ -827,6 +830,12 @@ implementation
end;
procedure tcginlinenode.second_new;
begin
internalerror(2011012202);
end;
begin
cinlinenode:=tcginlinenode;
end.

View File

@ -66,6 +66,10 @@ interface
function first_int_real: tnode; virtual;
function first_abs_long: tnode; virtual;
function first_setlength: tnode; virtual;
{ This one by default generates an internal error, because such
nodes are not generated by the parser. It's however used internally
by the JVM backend to create new dynamic arrays. }
function first_new: tnode; virtual;
private
function handle_str: tnode;
function handle_reset_rewrite_typed: tnode;
@ -3215,6 +3219,8 @@ implementation
in_bsf_x,
in_bsr_x:
expectloc:=LOC_REGISTER;
in_new_x:
result:=first_new;
else
internalerror(89);
end;
@ -3416,6 +3422,12 @@ implementation
result:=newblock;
end;
function tinlinenode.first_new: tnode;
begin
internalerror(2011012201);
result:=nil;
end;
function tinlinenode.first_pack_unpack: tnode;
var
loopstatement : tstatementnode;