2
0
Эх сурвалжийг харах

* removed JVM-specific creation of methodpointertype and
nestedprocpointertype; this was done initially before the JVM target knew
about the voidpointertype, but is no longer necessary (also fixes
mantis #26251)

git-svn-id: trunk@27838 -

Jonas Maebe 11 жил өмнө
parent
commit
5e1a895e95
2 өөрчлөгдсөн 13 нэмэгдсэн , 27 устгасан
  1. 1 15
      compiler/pdecobj.pas
  2. 12 12
      compiler/psystem.pas

+ 1 - 15
compiler/pdecobj.pas

@@ -1363,21 +1363,7 @@ implementation
                       if (current_structdef.objname^='TOBJECT') then
                         class_tobject:=current_objectdef
                       else if (current_objectdef.objname^='JLOBJECT') then
-                        begin
-                          java_jlobject:=current_objectdef;
-                          { the methodpointer type is normally created in
-                            psystem, but java_jlobject is not yet available
-                            there... }
-                          hrecst:=trecordsymtable.create('',1);
-                          fsym:=cfieldvarsym.create('$proc',vs_value,java_jlobject,[]);
-                          hrecst.insert(fsym);
-                          hrecst.addfield(fsym,vis_hidden);
-                          fsym:=cfieldvarsym.create('$data',vs_value,java_jlobject,[]);
-                          hrecst.insert(fsym);
-                          hrecst.addfield(fsym,vis_hidden);
-                          methodpointertype:=crecorddef.create('',hrecst);
-                          systemunit.insert(ctypesym.create('$methodpointer',methodpointertype));
-                        end
+                        java_jlobject:=current_objectdef;
                       else if (current_objectdef.objname^='JLTHROWABLE') then
                         java_jlthrowable:=current_objectdef
                       else if (current_objectdef.objname^='FPCBASERECORDTYPE') then

+ 12 - 12
compiler/psystem.pas

@@ -490,19 +490,19 @@ implementation
             vmtarraytype:=carraydef.create(0,1,s32inttype);
             tarraydef(vmtarraytype).elementdef:=pvmttype;
             addtype('$vtblarray',vmtarraytype);
-            { Add a type for methodpointers }
-            hrecst:=trecordsymtable.create('',1);
-            addfield(hrecst,cfieldvarsym.create('$proc',vs_value,voidcodepointertype,[]));
-            addfield(hrecst,cfieldvarsym.create('$self',vs_value,voidpointertype,[]));
-            methodpointertype:=crecorddef.create('',hrecst);
-            addtype('$methodpointer',methodpointertype);
-            { Add a type for nested proc pointers }
-            hrecst:=trecordsymtable.create('',1);
-            addfield(hrecst,cfieldvarsym.create('$proc',vs_value,voidcodepointertype,[]));
-            addfield(hrecst,cfieldvarsym.create('$parentfp',vs_value,parentfpvoidpointertype,[]));
-            nestedprocpointertype:=crecorddef.create('',hrecst);
-            addtype('$nestedprocpointer',nestedprocpointertype);
           end;
+        { Add a type for methodpointers }
+        hrecst:=trecordsymtable.create('',1);
+        addfield(hrecst,cfieldvarsym.create('$proc',vs_value,voidcodepointertype,[]));
+        addfield(hrecst,cfieldvarsym.create('$self',vs_value,voidpointertype,[]));
+        methodpointertype:=crecorddef.create('',hrecst);
+        addtype('$methodpointer',methodpointertype);
+        { Add a type for nested proc pointers }
+        hrecst:=trecordsymtable.create('',1);
+        addfield(hrecst,cfieldvarsym.create('$proc',vs_value,voidcodepointertype,[]));
+        addfield(hrecst,cfieldvarsym.create('$parentfp',vs_value,parentfpvoidpointertype,[]));
+        nestedprocpointertype:=crecorddef.create('',hrecst);
+        addtype('$nestedprocpointer',nestedprocpointertype);
         symtablestack.pop(systemunit);
       end;