Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/branches/SMLNJ/src/runtime/kernel/globals.c
ViewVC logotype

Diff of /sml/branches/SMLNJ/src/runtime/kernel/globals.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3, Sat Oct 4 23:33:46 1997 UTC revision 29, Thu Mar 12 01:05:59 1998 UTC
# Line 28  Line 28 
28          PTR_CtoML(CONCAT(ex,_s).s)                      \          PTR_CtoML(CONCAT(ex,_s).s)                      \
29      }      }
30    
 /* A nullary exception is represented by an exn packet, which is a  
  * triple: (ID, unit, nil).  
  */  
 #define ML_EXN(ex,name)                                 \  
     ML_EXNID(ex,name);                                  \  
     ml_val_t CONCAT(ex,_e0) [4] = {                     \  
         DESC_exn,                                       \  
         PTR_CtoML(CONCAT(ex,_id0)+1),                   \  
         ML_unit,                                        \  
         LIST_nil                                        \  
     }  
   
31  #define ASM_CLOSURE(name)                               \  #define ASM_CLOSURE(name)                               \
32      extern ml_val_t CONCAT(name,_a)[];                  \      extern ml_val_t CONCAT(name,_a)[];                  \
33      ml_val_t CONCAT(name,_v)[2] = {                     \      ml_val_t CONCAT(name,_v)[2] = {                     \
# Line 57  Line 45 
45      ML_STRING(CONCAT(ex,_s),name);                      \      ML_STRING(CONCAT(ex,_s),name);                      \
46      ml_val_t CONCAT(ex,_id0) [2] = { DESC_ref, }      ml_val_t CONCAT(ex,_id0) [2] = { DESC_ref, }
47    
 /* A nullary exception is represented by an exn packet */  
 #define ML_EXN(ex,name)                                 \  
     ML_EXNID(ex,name);                                  \  
     ml_val_t CONCAT(ex,_e0) [4] = {                     \  
         DESC_exn,                                       \  
         0,                                              \  
         ML_unit,                                        \  
         LIST_nil                                        \  
     }  
   
48  #define PATCH_ML_EXNID(ex)                              \  #define PATCH_ML_EXNID(ex)                              \
49      CONCAT(ex,_id0)[1] = PTR_CtoML(CONCAT(ex,_s).s)      CONCAT(ex,_id0)[1] = PTR_CtoML(CONCAT(ex,_s).s)
50    
 #define PATCH_ML_EXN(ex)                                \  
     PATCH_ML_EXNID(ex);                                 \  
     CONCAT(ex,_e0)[1] = PTR_CtoML(CONCAT(ex,_id0)+1)  
   
51  #define ASM_CLOSURE(name)                               \  #define ASM_CLOSURE(name)                               \
52      extern ml_val_t CONCAT(name,_a)[];                  \      extern ml_val_t CONCAT(name,_a)[];                  \
53      ml_val_t CONCAT(name,_v)[2] = {                     \      ml_val_t CONCAT(name,_v)[2] = {                     \
# Line 142  Line 116 
116  ml_val_t _ML_realarray0[2]      = {MAKE_DESC(0, DTAG_realdarray), ML_unit};  ml_val_t _ML_realarray0[2]      = {MAKE_DESC(0, DTAG_realdarray), ML_unit};
117  ml_val_t _ML_vector0[2]         = {MAKE_DESC(0, DTAG_vector), ML_unit};  ml_val_t _ML_vector0[2]         = {MAKE_DESC(0, DTAG_vector), ML_unit};
118    
119  ML_EXN(_Div,"Div");  ML_EXNID(_Div,"Div");
120  ML_EXN(_Overflow,"Overflow");  ML_EXNID(_Overflow,"Overflow");
121  ML_EXNID(SysErr, "SysErr");  ML_EXNID(SysErr, "SysErr");
122    
123  extern ml_val_t externlist0[];  extern ml_val_t externlist0[];
124    
125  #ifdef ASM_MATH  #ifdef ASM_MATH
126  ML_EXN(_Ln,"Ln");  ML_EXNID(_Ln,"Ln");
127  ML_EXN(_Sqrt,"Sqrt");  ML_EXNID(_Sqrt,"Sqrt");
128  #endif  #endif
129    
130    
# Line 206  Line 180 
180  #define CSTRUCT_SZ      15  #define CSTRUCT_SZ      15
181      ML_AllocWrite(msp,  0, MAKE_DESC(CSTRUCT_SZ, DTAG_record));      ML_AllocWrite(msp,  0, MAKE_DESC(CSTRUCT_SZ, DTAG_record));
182      ML_AllocWrite(msp,  1, RunVec);      ML_AllocWrite(msp,  1, RunVec);
183      ML_AllocWrite(msp,  2, DivExn);      ML_AllocWrite(msp,  2, DivId);
184      ML_AllocWrite(msp,  3, OverflowExn);      ML_AllocWrite(msp,  3, OverflowId);
185      ML_AllocWrite(msp,  4, SysErrId);      ML_AllocWrite(msp,  4, SysErrId);
186      ML_AllocWrite(msp,  5, ML_array0);      ML_AllocWrite(msp,  5, ML_array0);
187      ML_AllocWrite(msp,  6, ML_bytearray0);      ML_AllocWrite(msp,  6, ML_bytearray0);
# Line 228  Line 202 
202  #ifdef ASM_MATH  #ifdef ASM_MATH
203  #define MATHVEC_SZ      8  #define MATHVEC_SZ      8
204      ML_AllocWrite(msp,  0, MAKE_DESC(MATHVEC_SZ, DTAG_record));      ML_AllocWrite(msp,  0, MAKE_DESC(MATHVEC_SZ, DTAG_record));
205      ML_AllocWrite(msp,  1, LnExn);      ML_AllocWrite(msp,  1, LnId);
206      ML_AllocWrite(msp,  2, SqrtExn);      ML_AllocWrite(msp,  2, SqrtId);
207      ML_AllocWrite(msp,  3, PTR_CtoML(arctan_v+1));      ML_AllocWrite(msp,  3, PTR_CtoML(arctan_v+1));
208      ML_AllocWrite(msp,  4, PTR_CtoML(cos_v+1));      ML_AllocWrite(msp,  4, PTR_CtoML(cos_v+1));
209      ML_AllocWrite(msp,  5, PTR_CtoML(exp_v+1));      ML_AllocWrite(msp,  5, PTR_CtoML(exp_v+1));
# Line 270  Line 244 
244      RecordCSymbol ("RunVec.unlock",     PTR_CtoML(unlock_v+1));      RecordCSymbol ("RunVec.unlock",     PTR_CtoML(unlock_v+1));
245    
246    /* CStruct */    /* CStruct */
247      RecordCSymbol ("CStruct.DivExn",            DivExn);      RecordCSymbol ("CStruct.DivId",             DivId);
248      RecordCSymbol ("CStruct.OverflowExn",       OverflowExn);      RecordCSymbol ("CStruct.OverflowId",        OverflowId);
249      RecordCSymbol ("CStruct.SysErrId",          SysErrId);      RecordCSymbol ("CStruct.SysErrId",          SysErrId);
250      RecordCSymbol ("CStruct.array0",            ML_array0);      RecordCSymbol ("CStruct.array0",            ML_array0);
251      RecordCSymbol ("CStruct.bytearray0",        ML_bytearray0);      RecordCSymbol ("CStruct.bytearray0",        ML_bytearray0);
# Line 291  Line 265 
265    
266  #if defined(ASM_MATH)  #if defined(ASM_MATH)
267    /* MathVec */    /* MathVec */
268      RecordCSymbol ("MathVec.LnExn",     LnExn);      RecordCSymbol ("MathVec.LnId",      LnId);
269      RecordCSymbol ("MathVec.SqrtExn",   SqrtExn);      RecordCSymbol ("MathVec.SqrtId",    SqrtId);
270      RecordCSymbol ("MathVec.arctan",    PTR_CtoML(arctan_v+1));      RecordCSymbol ("MathVec.arctan",    PTR_CtoML(arctan_v+1));
271      RecordCSymbol ("MathVec.cos",       PTR_CtoML(cos_v+1));      RecordCSymbol ("MathVec.cos",       PTR_CtoML(cos_v+1));
272      RecordCSymbol ("MathVec.exp",       PTR_CtoML(exp_v+1));      RecordCSymbol ("MathVec.exp",       PTR_CtoML(exp_v+1));
# Line 312  Line 286 
286   */   */
287  void PatchAddrs ()  void PatchAddrs ()
288  {  {
289      PATCH_ML_EXN(_Div);      PATCH_ML_EXNID(_Div);
290      PATCH_ML_EXN(_Overflow);      PATCH_ML_EXNID(_Overflow);
291      PATCH_ML_EXNID(SysErr);      PATCH_ML_EXNID(SysErr);
292    
293      PATCH_ASM_CLOSURE(array);      PATCH_ASM_CLOSURE(array);

Legend:
Removed from v.3  
changed lines
  Added in v.29

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0