瀏覽代碼

* save/result nestsym to ppufile for inline routines

git-svn-id: branches/jvmbackend@18670 -
Jonas Maebe 14 年之前
父節點
當前提交
ff37507bca
共有 1 個文件被更改,包括 33 次插入0 次删除
  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.