Browse Source

* conditionnal code for extended check of virtual methods

pierre 26 years ago
parent
commit
b186605bc4
1 changed files with 13 additions and 1 deletions
  1. 13 1
      compiler/cg386cal.pas

+ 13 - 1
compiler/cg386cal.pas

@@ -840,11 +840,20 @@ implementation
                    if p^.procdefinition^.extnumber=-1 then
                         internalerror($Da);
                    r^.offset:=p^.procdefinition^.extnumber*4+12;
+{$ifndef TESTOBJEXT}
                    if (cs_check_range in aktlocalswitches) then
                      begin
                         exprasmlist^.concat(new(pai386,op_reg(A_PUSH,S_L,r^.base)));
                         emitcall('FPC_CHECK_OBJECT',true);
                      end;
+{$else TESTOBJEXT}
+                   if (cs_check_range in aktlocalswitches) then
+                     begin
+                        exprasmlist^.concat(new(pai386,op_csymbol(A_PUSH,S_L,newcsymbol(p^.procdefinition^._class^.vmt_mangledname,0))));
+                        exprasmlist^.concat(new(pai386,op_reg(A_PUSH,S_L,r^.base)));
+                        emitcall('FPC_CHECK_OBJECT_EXT',true);
+                     end;
+{$endif TESTOBJEXT}
                    exprasmlist^.concat(new(pai386,op_ref(A_CALL,S_NO,r)));
                 end
               else if not inlined then
@@ -1282,7 +1291,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.62  1999-02-02 23:52:32  florian
+  Revision 1.63  1999-02-03 10:18:14  pierre
+   * conditionnal code for extended check of virtual methods
+
+  Revision 1.62  1999/02/02 23:52:32  florian
     * problem with calls to method pointers in methods fixed
     - double ansistrings temp management removed