Browse Source

- moved new_exception and free_exception to ncgutils

carl 23 years ago
parent
commit
1b79ac2058
1 changed files with 4 additions and 53 deletions
  1. 4 53
      compiler/cgobj.pas

+ 4 - 53
compiler/cgobj.pas

@@ -249,25 +249,6 @@ unit cgobj;
           procedure g_flags2reg(list: taasmoutput; size: TCgSize; const f: tresflags; reg: TRegister); virtual; abstract;
           procedure g_flags2reg(list: taasmoutput; size: TCgSize; const f: tresflags; reg: TRegister); virtual; abstract;
           procedure g_flags2ref(list: taasmoutput; size: TCgSize; const f: tresflags; const ref:TReference); virtual;
           procedure g_flags2ref(list: taasmoutput; size: TCgSize; const f: tresflags; const ref:TReference); virtual;
 
 
-          {#
-              Allocate the buffers for exception management and setjmp environment.
-              Return a pointer to these buffers, send them to the utility routine
-              so they are registered, and then call setjmp.
-  
-              Then compare the result of setjmp with 0, and if not equal
-              to zero, then jump to exceptlabel.
-       
-              Also store the result of setjmp to a temporary space by calling g_save_exception_reason
-              
-              It is to note that this routine may be called *after* the stackframe of a
-              routine has been called, therefore on machines where the stack cannot
-              be modified, all temps should be allocated on the heap instead of the
-              stack.
-          }
-          procedure g_new_exception(list : taasmoutput;var jmpbuf,envbuf, href : treference;
-              a : aword; exceptlabel : tasmlabel);virtual;
-          procedure g_free_exception(list : taasmoutput;var jmpbuf, envbuf, href : treference;
-           a : aword ; endexceptlabel : tasmlabel; onlyfree : boolean);virtual;
           
           
          {#
          {#
              This routine is used in exception management nodes. It should
              This routine is used in exception management nodes. It should
@@ -1464,39 +1445,6 @@ unit cgobj;
      end;
      end;
      
      
     
     
-    procedure tcg.g_new_exception(list : taasmoutput;var jmpbuf,envbuf, href : treference;
-      a : aword; exceptlabel : tasmlabel);
-     begin
-       tg.gettempofsizereferencepersistant(exprasmlist,24,jmpbuf);
-       tg.gettempofsizereferencepersistant(exprasmlist,12,envbuf);
-       a_paramaddr_ref(exprasmlist,envbuf,paramanager.getintparaloc(3));
-       a_paramaddr_ref(exprasmlist,jmpbuf,paramanager.getintparaloc(2));
-       { push type of exceptionframe }
-       a_param_const(exprasmlist,OS_S32,1,paramanager.getintparaloc(1));
-       a_call_name(exprasmlist,'FPC_PUSHEXCEPTADDR');
-
-       a_param_reg(exprasmlist,OS_ADDR,accumulator,paramanager.getintparaloc(1));
-       a_call_name(exprasmlist,'FPC_SETJMP');
-         
-       tg.gettempofsizereferencepersistant(exprasmlist,sizeof(aword),href);
-       g_exception_reason_save(list, href);
-       a_cmp_const_reg_label(exprasmlist,OS_S32,OC_NE,0,accumulator,exceptlabel);
-     end;
-     
-     
-    procedure tcg.g_free_exception(list : taasmoutput;var jmpbuf, envbuf, href : treference;
-     a : aword ; endexceptlabel : tasmlabel; onlyfree : boolean);
-     begin
-         cg.a_call_name(exprasmlist,'FPC_POPADDRSTACK');
-         tg.ungetpersistanttempreference(exprasmlist,jmpbuf);
-         tg.ungetpersistanttempreference(exprasmlist,envbuf);
-         
-         if not onlyfree then
-          begin
-            g_exception_reason_load(list, href);
-            cg.a_cmp_const_reg_label(exprasmlist,OS_S32,OC_EQ,a,accumulator,endexceptlabel);
-          end;
-     end;
       
       
 
 
 
 
@@ -1522,7 +1470,10 @@ finalization
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.43  2002-08-05 18:27:48  carl
+  Revision 1.44  2002-08-09 19:10:05  carl
+    - moved new_exception and free_exception to ncgutils
+
+  Revision 1.43  2002/08/05 18:27:48  carl
     + more more more documentation
     + more more more documentation
     + first version include/exclude (can't test though, not enough scratch for i386 :()...
     + first version include/exclude (can't test though, not enough scratch for i386 :()...