Selaa lähdekoodia

* removed jvmdef.jvminternalstaticfieldname() and now use newly created
symsym.internal_static_field_name() on all platforms to construct
the internal (hidden) name of class fields

git-svn-id: branches/jvmbackend@18397 -

Jonas Maebe 14 vuotta sitten
vanhempi
commit
6b176351e1
5 muutettua tiedostoa jossa 13 lisäystä ja 13 poistoa
  1. 1 1
      compiler/agjasmin.pas
  2. 0 9
      compiler/jvmdef.pas
  3. 1 1
      compiler/pdecl.pas
  4. 2 2
      compiler/pdecvar.pas
  5. 9 0
      compiler/symsym.pas

+ 1 - 1
compiler/agjasmin.pas

@@ -761,7 +761,7 @@ implementation
           begin
             vissym:=tabstractvarsym(search_struct_member(
               tobjectdef(vissym.owner.defowner),
-              jvminternalstaticfieldname(vissym.name)));
+              internal_static_field_name(vissym.name)));
             if not assigned(vissym) or
                (vissym.typ<>fieldvarsym) then
               internalerror(2011011501);

+ 0 - 9
compiler/jvmdef.pas

@@ -49,9 +49,6 @@ interface
     { add type prefix (package name) to a type }
     procedure jvmaddtypeownerprefix(owner: tsymtable; var name: string);
 
-    { generate internal static field name based on regular field name }
-    function jvminternalstaticfieldname(const fieldname: string): string;
-
     { returns type string for a single-dimensional array (different from normal
       typestring in case of a primitive type) }
     function jvmarrtype(def: tdef; out primitivetype: boolean): string;
@@ -260,12 +257,6 @@ implementation
       end;
 
 
-    function jvminternalstaticfieldname(const fieldname: string): string;
-      begin
-        result:='$_static_'+fieldname;
-      end;
-
-
     function jvmarrtype(def: tdef; out primitivetype: boolean): string;
       var
         errdef: tdef;

+ 1 - 1
compiler/pdecl.pas

@@ -233,7 +233,7 @@ implementation
                      begin
                        { generate the symbol which reserves the space }
                        static_name:=lower(generate_nested_name(symtablestack.top,'_'))+'_'+orgname;
-                       sym:=tstaticvarsym.create('$_static_'+static_name,varspez,hdef,[]);
+                       sym:=tstaticvarsym.create(internal_static_field_name(static_name),varspez,hdef,[]);
                        include(sym.symoptions,sp_internal);
                        tabstractrecordsymtable(symtablestack.top).get_unit_symtable.insert(sym);
                        { generate the symbol for the access }

+ 2 - 2
compiler/pdecvar.pas

@@ -1669,7 +1669,7 @@ implementation
                      { generate the symbol which reserves the space }
                      static_name:=lower(generate_nested_name(recst,'_'))+'_'+fieldvs.name;
 {$ifndef jvm}
-                     hstaticvs:=tstaticvarsym.create('$_static_'+static_name,vs_value,hdef,[]);
+                     hstaticvs:=tstaticvarsym.create(internal_static_field_name(static_name),vs_value,hdef,[]);
                      include(hstaticvs.symoptions,sp_internal);
                      recst.get_unit_symtable.insert(hstaticvs);
                      insertbssdata(hstaticvs);
@@ -1685,7 +1685,7 @@ implementation
                      include(hstaticvs.symoptions,sp_internal);
                      { rename the original field to prevent a name clash when
                        inserting the new one }
-                     fieldvs.Rename(jvminternalstaticfieldname(fieldvs.name));
+                     fieldvs.Rename(internal_static_field_name(fieldvs.name));
                      recst.insert(hstaticvs);
 {$endif not jvm}
                      { generate the symbol for the access }

+ 9 - 0
compiler/symsym.pas

@@ -327,6 +327,10 @@ interface
     var
        generrorsym : tsym;
 
+    { generate internal static field name based on regular field name }
+    function internal_static_field_name(const fieldname: string): string;
+
+
 implementation
 
     uses
@@ -350,6 +354,11 @@ implementation
                                Helpers
 ****************************************************************************}
 
+    function internal_static_field_name(const fieldname: string): string;
+      begin
+        result:='$_static_'+fieldname;
+      end;
+
 {****************************************************************************
                           TSYM (base for all symtypes)
 ****************************************************************************}