comparison modules/os.tp @ 315:f987bb2a1911

WIP native compiler work
author Michael Pavone <pavone@retrodev.com>
date Sat, 14 Mar 2015 12:10:51 -0700
parents d1dc2d70bdfd
children
comparison
equal deleted inserted replaced
314:d4df33596e7d 315:f987bb2a1911
119 secs <- (mcall: i32 1 osecs) castTo: (obj_int32 ptr) 119 secs <- (mcall: i32 1 osecs) castTo: (obj_int32 ptr)
120 intret <- make_object: (addr_of: obj_int32_meta) NULL 0 120 intret <- make_object: (addr_of: obj_int32_meta) NULL 0
121 intret num!: (sleep: (secs num)) 121 intret num!: (sleep: (secs num))
122 intret 122 intret
123 } 123 }
124
125 llMessage: execv withVars: {
126 opath <- object ptr
127 path <- string ptr
128 eargs <- object ptr
129 oarglen <- object ptr
130 arglen <- obj_int32 ptr
131 i <- int32_t
132 oi <- obj_int32 ptr
133 oarg <- object ptr
134 arg <- string ptr
135 cargs <- (char ptr) ptr
136 } andCode: :opath eargs {
137 path <- (mcall: string 1 opath) castTo: (string ptr)
138 oarglen <- mcall: length 1 eargs
139 arglen <- (mcall: int32 1 oarglen) castTo: (obj_int32 ptr)
140 cargs <- GC_MALLOC_ATOMIC: (sizeof: (char ptr)) * ((arglen num) + 1)
141 i <- 0
142 while: { i < (arglen num) } do: {
143 oi <- make_object: (addr_of: obj_int32_meta) NULL 0
144 oi num!: i
145 oarg <- mcall: get 2 eargs oi
146 arg <- (mcall: string 1 oarg) castTo: (string ptr)
147 cargs set: i (arg data)
148 i <- i + 1
149 }
150 cargs set: i NULL
151 i <- execv: (path data) cargs
152 oi <- make_object: (addr_of: obj_int32_meta) NULL 0
153 oi num!: i
154 oi
155 }
156
157 llMessage: execvp withVars: {
158 opath <- object ptr
159 path <- string ptr
160 eargs <- object ptr
161 oarglen <- object ptr
162 arglen <- obj_int32 ptr
163 i <- int32_t
164 oi <- obj_int32 ptr
165 oarg <- object ptr
166 arg <- string ptr
167 cargs <- (char ptr) ptr
168 } andCode: :opath eargs {
169 path <- (mcall: string 1 opath) castTo: (string ptr)
170 oarglen <- mcall: length 1 eargs
171 arglen <- (mcall: int32 1 oarglen) castTo: (obj_int32 ptr)
172 cargs <- GC_MALLOC_ATOMIC: (sizeof: (char ptr)) * ((arglen num) + 1)
173 i <- 0
174 while: { i < (arglen num) } do: {
175 oi <- make_object: (addr_of: obj_int32_meta) NULL 0
176 oi num!: i
177 oarg <- mcall: get 2 eargs oi
178 arg <- (mcall: string 1 oarg) castTo: (string ptr)
179 cargs set: i (arg data)
180 i <- i + 1
181 }
182 cargs set: i NULL
183 i <- execvp: (path data) cargs
184 oi <- make_object: (addr_of: obj_int32_meta) NULL 0
185 oi num!: i
186 oi
187 }
188
189 llMessage: execve withVars: {
190 opath <- object ptr
191 path <- string ptr
192 eargs <- object ptr
193 env <- object ptr
194 oarglen <- object ptr
195 arglen <- obj_int32 ptr
196 i <- int32_t
197 oi <- obj_int32 ptr
198 oarg <- object ptr
199 arg <- string ptr
200 cargs <- (char ptr) ptr
201 cenv <- (char ptr) ptr
202 } andCode: :opath eargs env {
203 path <- (mcall: string 1 opath) castTo: (string ptr)
204 oarglen <- mcall: length 1 eargs
205 arglen <- (mcall: int32 1 oarglen) castTo: (obj_int32 ptr)
206 cargs <- GC_MALLOC_ATOMIC: (sizeof: (char ptr)) * ((arglen num) + 1)
207 i <- 0
208 while: { i < (arglen num) } do: {
209 oi <- make_object: (addr_of: obj_int32_meta) NULL 0
210 oi num!: i
211 oarg <- mcall: get 2 eargs oi
212 arg <- (mcall: string 1 oarg) castTo: (string ptr)
213 cargs set: i (arg data)
214 i <- i + 1
215 }
216 cargs set: i NULL
217
218 oarglen <- mcall: length 1 eargs
219 arglen <- (mcall: int32 1 oarglen) castTo: (obj_int32 ptr)
220 cenv <- GC_MALLOC_ATOMIC: (sizeof: (char ptr)) * ((arglen num) + 1)
221 i <- 0
222 while: { i < (arglen num) } do: {
223 oi <- make_object: (addr_of: obj_int32_meta) NULL 0
224 oi num!: i
225 oarg <- mcall: get 2 env oi
226 arg <- (mcall: string 1 oarg) castTo: (string ptr)
227 cenv set: i (arg data)
228 i <- i + 1
229 }
230 cenv set: i NULL
231
232 i <- execve: (path data) cargs cenv
233 oi <- make_object: (addr_of: obj_int32_meta) NULL 0
234 oi num!: i
235 oi
236 }
124 } 237 }
125 } 238 }