Forráskód Böngészése

* methodpointer fixes

peter 22 éve
szülő
commit
15958fec9f
2 módosított fájl, 19 hozzáadás és 5 törlés
  1. 13 3
      compiler/cgbase.pas
  2. 6 2
      compiler/ncgcnv.pas

+ 13 - 3
compiler/cgbase.pas

@@ -490,9 +490,16 @@ implementation
                 result := tcgsize(ord(result)+(ord(OS_S8)-ord(OS_8)));
             end;
           classrefdef,
-          pointerdef,
-          procvardef:
+          pointerdef:
             result := OS_ADDR;
+          procvardef:
+            begin
+              if tprocvardef(def).is_methodpointer and
+                 (not tprocvardef(def).is_addressonly) then
+                result := OS_64
+              else
+                result := OS_ADDR;
+            end;
           stringdef :
             begin
               if is_ansistring(def) or is_widestring(def) then
@@ -574,7 +581,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.59  2003-08-20 17:48:49  peter
+  Revision 1.60  2003-08-26 12:43:02  peter
+    * methodpointer fixes
+
+  Revision 1.59  2003/08/20 17:48:49  peter
     * fixed stackalloc to not allocate localst.datasize twice
     * order of stackalloc code fixed for implicit init/final
 

+ 6 - 2
compiler/ncgcnv.pas

@@ -302,7 +302,8 @@ interface
 
       begin
         { method pointer ? }
-        if assigned(tunarynode(left).left) then
+        if tabstractprocdef(left.resulttype.def).is_methodpointer and
+           not(tabstractprocdef(left.resulttype.def).is_addressonly) then
           begin
              location_copy(location,left.location);
           end
@@ -510,7 +511,10 @@ end.
 
 {
   $Log$
-  Revision 1.44  2003-06-03 21:11:09  peter
+  Revision 1.45  2003-08-26 12:43:02  peter
+    * methodpointer fixes
+
+  Revision 1.44  2003/06/03 21:11:09  peter
     * cg.a_load_* get a from and to size specifier
     * makeregsize only accepts newregister
     * i386 uses generic tcgnotnode,tcgunaryminus