|
@@ -68,9 +68,17 @@ interface
|
|
end;
|
|
end;
|
|
tloadparentfpnodeclass = class of tloadparentfpnode;
|
|
tloadparentfpnodeclass = class of tloadparentfpnode;
|
|
|
|
|
|
|
|
+ taddrnodeflag = (
|
|
|
|
+ anf_dummyflag { todo: remove this, when the first real addrnode flag
|
|
|
|
+ is added (this is just a dummy element, because the
|
|
|
|
+ enum cannot be empty) }
|
|
|
|
+ );
|
|
|
|
+ taddrnodeflags = set of taddrnodeflag;
|
|
|
|
+
|
|
taddrnode = class(tunarynode)
|
|
taddrnode = class(tunarynode)
|
|
getprocvardef : tprocvardef;
|
|
getprocvardef : tprocvardef;
|
|
getprocvardefderef : tderef;
|
|
getprocvardefderef : tderef;
|
|
|
|
+ addrnodeflags : taddrnodeflags;
|
|
constructor create(l : tnode);virtual;
|
|
constructor create(l : tnode);virtual;
|
|
constructor create_internal(l : tnode); virtual;
|
|
constructor create_internal(l : tnode); virtual;
|
|
constructor create_internal_nomark(l : tnode); virtual;
|
|
constructor create_internal_nomark(l : tnode); virtual;
|
|
@@ -412,6 +420,7 @@ implementation
|
|
begin
|
|
begin
|
|
inherited create(addrn,l);
|
|
inherited create(addrn,l);
|
|
getprocvardef:=nil;
|
|
getprocvardef:=nil;
|
|
|
|
+ addrnodeflags:=[];
|
|
mark_read_written := true;
|
|
mark_read_written := true;
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -434,6 +443,7 @@ implementation
|
|
begin
|
|
begin
|
|
inherited ppuload(t,ppufile);
|
|
inherited ppuload(t,ppufile);
|
|
ppufile.getderef(getprocvardefderef);
|
|
ppufile.getderef(getprocvardefderef);
|
|
|
|
+ ppufile.getsmallset(addrnodeflags);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
@@ -441,6 +451,7 @@ implementation
|
|
begin
|
|
begin
|
|
inherited ppuwrite(ppufile);
|
|
inherited ppuwrite(ppufile);
|
|
ppufile.putderef(getprocvardefderef);
|
|
ppufile.putderef(getprocvardefderef);
|
|
|
|
+ ppufile.putsmallset(addrnodeflags);
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure Taddrnode.mark_write;
|
|
procedure Taddrnode.mark_write;
|
|
@@ -468,7 +479,8 @@ implementation
|
|
begin
|
|
begin
|
|
result:=
|
|
result:=
|
|
inherited docompare(p) and
|
|
inherited docompare(p) and
|
|
- (taddrnode(p).getprocvardef=getprocvardef);
|
|
|
|
|
|
+ (taddrnode(p).getprocvardef=getprocvardef) and
|
|
|
|
+ (taddrnode(p).addrnodeflags=addrnodeflags);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
@@ -478,6 +490,7 @@ implementation
|
|
begin
|
|
begin
|
|
p:=taddrnode(inherited dogetcopy);
|
|
p:=taddrnode(inherited dogetcopy);
|
|
p.getprocvardef:=getprocvardef;
|
|
p.getprocvardef:=getprocvardef;
|
|
|
|
+ p.addrnodeflags:=addrnodeflags;
|
|
dogetcopy:=p;
|
|
dogetcopy:=p;
|
|
end;
|
|
end;
|
|
|
|
|