Browse Source

+ code for fail for class

pierre 26 years ago
parent
commit
7e716ff478
1 changed files with 21 additions and 3 deletions
  1. 21 3
      rtl/i386/i386.inc

+ 21 - 3
rtl/i386/i386.inc

@@ -231,6 +231,7 @@ asm
         orl     %eax,%eax
 .LHC_5:
 end;
+{$define FPC_SYSTEM_HAS_FPC_HELP_FAIL}
 
 procedure int_help_fail;assembler;[public,alias:'FPC_HELP_FAIL'];
 { should be called with a object that needs to be
@@ -372,8 +373,22 @@ asm
         popl    %edi
 end;
 
+{$define FPC_SYSTEM_HAS_FPC_HELP_FAIL_CLASS}
+
+procedure int_help_fail_class;assembler;[public,alias:'FPC_HELP_FAIL_CLASS'];
+{ a non zero class must allways be disposed
+  VMT is allways at pos 0 }
+asm
+        orl    %esi,%esi
+        je     .LHFC_1
+        call   FPC_DISPOSE_CLASS
+        { set both object places to zero }
+        xorl    %esi,%esi
+        movl    %esi,8(%ebp)
+.LHFC_1:
+end;
+
 
-{ checks for a correct vmt pointer }
 
 {$define FPC_SYSTEM_HAS_FPC_CHECK_OBJECT}
 
@@ -818,8 +833,8 @@ procedure int_boundcheck;[public,alias: 'FPC_BOUNDCHECK'];
 begin
 {$else not SYSTEMDEBUG}
 procedure int_boundcheck;assembler;[public,alias: 'FPC_BOUNDCHECK'];
-{$endif not SYSTEMDEBUG}
 var dummy_to_force_stackframe_generation_for_trace: Longint;
+{$endif not SYSTEMDEBUG}
 {
   called with:
     %ecx - value
@@ -869,7 +884,10 @@ end;
 
 {
   $Log$
-  Revision 1.55  1999-09-17 17:14:11  peter
+  Revision 1.56  1999-10-05 20:50:06  pierre
+   + code for fail for class
+
+  Revision 1.55  1999/09/17 17:14:11  peter
     + new heap manager supporting delphi freemem(pointer)
 
   Revision 1.54  1999/09/15 13:04:04  jonas