File: RuntimeCalls.ML

package info (click to toggle)
polyml 5.2.1-1.1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd, wheezy
  • size: 19,692 kB
  • ctags: 17,567
  • sloc: cpp: 37,221; sh: 9,591; asm: 4,120; ansic: 428; makefile: 203; ml: 191; awk: 91; sed: 10
file content (165 lines) | stat: -rw-r--r-- 7,522 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
(*
	Copyright (c) 2000
		Cambridge University Technical Services Limited


	This library is free software; you can redistribute it and/or
	modify it under the terms of the GNU Lesser General Public
	License as published by the Free Software Foundation; either
	version 2.1 of the License, or (at your option) any later version.
	
	This library is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
	Lesser General Public License for more details.
	
	You should have received a copy of the GNU Lesser General Public
	License along with this library; if not, write to the Free Software
	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*)


(* These numbers should correspond with those in the sys.h file *)
(* in the run-time system. SPF 17/11/94.                        *)
structure RuntimeCalls =
struct  
  (* 0 not used (unusable?) *)
  val POLY_SYS_exit                = 1
  val POLY_SYS_chdir               = 9
  val POLY_SYS_alloc_store         = 11
  val POLY_SYS_raisex              = 14
  val POLY_SYS_get_length          = 15
  val POLY_SYS_get_flags           = 17
  val POLY_SYS_str_compare         = 23 (* DCJM 21/3/06 *)
  val POLY_SYS_teststreq           = 24
  val POLY_SYS_teststrneq          = 25
  val POLY_SYS_teststrgtr          = 26
  val POLY_SYS_teststrlss          = 27
  val POLY_SYS_teststrgeq          = 28
  val POLY_SYS_teststrleq          = 29
  val POLY_SYS_exception_trace     = 30
  val POLY_SYS_give_ex_trace       = 31 (* Only used within the RTS*)
  val POLY_SYS_lockseg             = 47
  val POLY_SYS_emptystring         = 48
  val POLY_SYS_nullvector          = 49
  val POLY_SYS_network			   = 51 (* DCJM 22/5/00 *)
  val POLY_SYS_os_specific		   = 52 (* DCJM 22/5/00 *)
  val POLY_SYS_io_dispatch		   = 61 (* DCJM 8/5/00 *)
  val POLY_SYS_signal_handler	   = 62 (* DCJM 18/7/00 *)
  val POLY_SYS_atomic_incr         = 70 (* DCJM 12/3/07 *)
  val POLY_SYS_atomic_decr         = 71 (* DCJM 12/3/07 *)
  val POLY_SYS_thread_self         = 72 (* DCJM 12/3/07 *)
  val POLY_SYS_thread_dispatch     = 73 (* DCJM 12/3/07 *)
  val POLY_SYS_kill_self           = 84
  val POLY_SYS_profiler            = 88
  val POLY_SYS_full_gc             = 92   (* MJC 18/03/91 *)
  val POLY_SYS_stack_trace         = 93   (* MJC 18/03/91 *)
  val POLY_SYS_timing_dispatch	   = 94	  (* DCJM 10/4/00 *)
  val POLY_SYS_objsize             = 99   (* MJC 27/04/88 *)
  val POLY_SYS_showsize            = 100  (* MJC 09/03/89 *)
  val POLY_SYS_interrupt_console_processes = 103  (* MJC 01/08/90 *)
  val POLY_SYS_is_short            = 105
  val POLY_SYS_aplus               = 106
  val POLY_SYS_aminus              = 107
  val POLY_SYS_amul                = 108
  val POLY_SYS_adiv                = 109
  val POLY_SYS_amod                = 110
  val POLY_SYS_aneg                = 111
  val POLY_SYS_xora				   = 112 (* DCJM 21/6/00 *)
  val POLY_SYS_equala              = 113
  val POLY_SYS_ora				   = 114 (* DCJM 21/6/00 *)
  val POLY_SYS_anda				   = 115 (* DCJM 21/6/00 *)
  val POLY_SYS_Real_str			   = 117 (* DCJM 6/4/00 *)
  val POLY_SYS_Real_geq            = 118 (* DCJM 28/3/00 *)
  val POLY_SYS_Real_leq            = 119 (* DCJM 28/3/00 *)
  val POLY_SYS_Real_gtr            = 120 (* DCJM 28/3/00 *)
  val POLY_SYS_Real_lss            = 121 (* DCJM 28/3/00 *)
  val POLY_SYS_Real_eq             = 122 (* DCJM 28/3/00 *)
  val POLY_SYS_Real_neq            = 123 (* DCJM 28/3/00 *)
  val POLY_SYS_Real_Dispatch	   = 124  (* DCJM 25/3/00 *)
  val POLY_SYS_Add_real            = 125
  val POLY_SYS_Sub_real            = 126
  val POLY_SYS_Mul_real            = 127
  val POLY_SYS_Div_real            = 128
  val POLY_SYS_Neg_real            = 130
  val POLY_SYS_Repr_real           = 132
  val POLY_SYS_conv_real           = 133
  val POLY_SYS_real_to_int         = 134
  val POLY_SYS_int_to_real         = 135
  val POLY_SYS_sqrt_real           = 136
  val POLY_SYS_sin_real            = 137
  val POLY_SYS_cos_real            = 138
  val POLY_SYS_arctan_real         = 139
  val POLY_SYS_exp_real            = 140
  val POLY_SYS_ln_real             = 141
  val POLY_SYS_stdin               = 148
  val POLY_SYS_stdout              = 149
  val POLY_SYS_process_env		   = 150  (* DCJM 25/4/00 *)
  val POLY_SYS_set_string_length   = 151  (* DCJM 28/2/01 *)
  val POLY_SYS_get_first_long_word = 152  (* DCJM 28/2/01 *)
  val POLY_SYS_poly_specific       = 153  (* DCJM 17/6/06 *)
  val POLY_SYS_io_operation        = 189
  val POLY_SYS_set_code_constant   = 194  (* DCJM 2/1/01 *)
  val POLY_SYS_move_words		   = 195  (* DCJM 9/10/99 *)
  val POLY_SYS_shift_right_arith_word	= 196  (* DCJM 9/10/99 *)
  val POLY_SYS_move_bytes		   = 198  (* DCJM 9/10/99 *)
  val POLY_SYS_code_flags          = 200  (* SPF 10/11/1998 *)
  val POLY_SYS_shrink_stack        = 201  (* SPF 10/11/1998 *)
  val POLY_SYS_stderr              = 202  (* SPF 10/11/1998 *)
  val POLY_SYS_callcode_tupled     = 204  (* SPF 07/07/94 *)
  val POLY_SYS_foreign_dispatch    = 205  (* NIC 22/04/94 *)
  val POLY_SYS_XWindows            = 209  (* MJC 27/09/90 *)
  val POLY_SYS_is_big_endian       = 213  (* added 30/3/95 (DCJM) *)
  val POLY_SYS_bytes_per_word      = 214  (* added 30/3/95 (DCJM) *)
  val POLY_SYS_offset_address      = 215
  val POLY_SYS_shift_right_word    = 216
  val POLY_SYS_word_neq            = 217
  val POLY_SYS_not_bool            = 218
  val POLY_SYS_string_length       = 223
  val POLY_SYS_int_eq              = 229
  val POLY_SYS_int_neq             = 230
  val POLY_SYS_int_geq             = 231
  val POLY_SYS_int_leq             = 232
  val POLY_SYS_int_gtr             = 233
  val POLY_SYS_int_lss             = 234
  val POLY_SYS_mul_word            = 238  (* Reinstated DCJM 9/10/99 *)
  val POLY_SYS_plus_word           = 239  (* Reinstated DCJM 9/10/99 *)
  val POLY_SYS_minus_word          = 240  (* Reinstated DCJM 9/10/99 *)
  val POLY_SYS_div_word            = 241  (* Reinstated DCJM 9/10/99 *)
  val POLY_SYS_or_word             = 242
  val POLY_SYS_and_word            = 243
  val POLY_SYS_xor_word            = 244
  val POLY_SYS_shift_left_word     = 245
  val POLY_SYS_mod_word            = 246  (* Reinstated DCJM 9/10/99 *)
  val POLY_SYS_word_geq            = 247  (* Reinstated DCJM 9/10/99 *)
  val POLY_SYS_word_leq            = 248  (* Reinstated DCJM 9/10/99 *)
  val POLY_SYS_word_gtr            = 249  (* Reinstated DCJM 9/10/99 *)
  val POLY_SYS_word_lss            = 250  (* Reinstated DCJM 9/10/99 *)
  val POLY_SYS_word_eq             = 251
  val POLY_SYS_load_byte           = 252
  val POLY_SYS_load_word           = 253
  val POLY_SYS_assign_byte         = 254
  val POLY_SYS_assign_word         = 255

  (* val POLY_SYS_vecsize = 256 *)

(* Exception identifiers *)
  val EXC_interrupt   = 1
  val EXC_syserr      = 2
  val EXC_size        = 4
  val EXC_overflow    = 5
  val EXC_underflow   = 6
  val EXC_divide      = 7
  val EXC_conversion  = 8
  val EXC_XWindows    = 10
  val EXC_subscript   = 11
  val EXC_thread      = 12 (* DCJM 13/3/07. *)

  val EXC_foreign     = 23  (* nic 4/5/94 *)
  
  (* The following numbers are hard-coded into the ML compiler
     rather than the run-time system, but they're still hard to change. *)
  val EXC_Bind        = 100; (* SPF 17/11/94 *)
  val EXC_Match       = 101; (* SPF 17/11/94 *)
  val EXC_Fail		  = 103; (* Added DCJM 23/7/00 *) (* Now also in the RTS. *)
end;