Răsfoiți Sursa

* save/result nestsym to ppufile for inline routines

git-svn-id: branches/jvmbackend@18670 -
Jonas Maebe 14 ani în urmă
părinte
comite
ff37507bca
1 a modificat fișierele cu 33 adăugiri și 0 ștergeri
  1. 33 0
      compiler/ncgnstld.pas

+ 33 - 0
compiler/ncgnstld.pas

@@ -38,12 +38,17 @@ interface
        tcgnestloadnode = class(tcgloadnode)
         protected
          nestsym: tsym;
+         nestsymderef: tderef;
          procedure generate_nested_access(vs: tsym);override;
         public
          function  pass_typecheck: tnode; override;
          function  pass_1:tnode;override;
          function  dogetcopy: tnode; override;
          function  docompare(p: tnode): boolean; override;
+         constructor ppuload(t: tnodetype; ppufile: tcompilerppufile); override;
+         procedure ppuwrite(ppufile: tcompilerppufile); override;
+         procedure buildderefimpl; override;
+         procedure derefimpl; override;
        end;
 
 implementation
@@ -192,6 +197,34 @@ implementation
       end;
 
 
+    constructor tcgnestloadnode.ppuload(t: tnodetype; ppufile: tcompilerppufile);
+      begin
+        inherited ppuload(t, ppufile);
+        ppufile.getderef(nestsymderef);
+      end;
+
+
+    procedure tcgnestloadnode.ppuwrite(ppufile: tcompilerppufile);
+      begin
+        inherited ppuwrite(ppufile);
+        ppufile.putderef(nestsymderef);
+      end;
+
+
+    procedure tcgnestloadnode.buildderefimpl;
+      begin
+        inherited buildderefimpl;
+        nestsymderef.build(nestsym);
+      end;
+
+
+    procedure tcgnestloadnode.derefimpl;
+      begin
+        inherited derefimpl;
+        nestsym:=tsym(nestsymderef.resolve);
+      end;
+
+
 begin
   cloadnode:=tcgnestloadnode;
 end.