Commit | Line | Data |
a8a597b2 |
1 | Notes on porting the perl runtime PP engine. |
2 | Importance: 1 = who cares?, 10 = vital |
3 | Difficulty: 1 = trivial, 10 = very difficult. Level assumes a |
4 | reasonable implementation of the SV and OP API already ported. |
5 | |
6 | OP Import Diff Comments |
7 | null 10 1 |
8 | stub 10 1 |
9 | scalar 10 1 |
10 | pushmark 10 1 PUSHMARK |
11 | wantarray 7 3 cxstack, dopoptosub |
12 | const 10 1 |
13 | gvsv 10 1 save_scalar |
14 | gv 10 1 |
15 | gelem 3 3 |
16 | padsv 10 2 SAVECLEARSV, provide_ref |
17 | padav 10 2 |
18 | padhv 10 2 |
19 | padany 1 1 |
20 | pushre 7 3 pushes an op. Blech. |
21 | rv2gv 6 5 |
22 | rv2sv 10 4 |
23 | av2arylen 7 3 sv_magic |
24 | rv2cv 8 5 sv_2cv |
25 | anoncode 7 6 cv_clone |
26 | prototype 4 4 sv_2cv |
27 | refgen 8 3 |
28 | srefgen 8 2 |
29 | ref 8 3 |
30 | bless 7 3 |
31 | backtick 5 4 |
32 | glob 5 2 do_readline |
33 | readline 8 2 do_readline |
34 | rcatline 8 2 |
35 | regcmaybe 8 1 |
c00ba3a6 |
36 | regcreset 8 1 |
a8a597b2 |
37 | regcomp 8 9 pregcomp |
38 | match 8 10 |
c00ba3a6 |
39 | qr 8 1 |
a8a597b2 |
40 | subst 8 10 |
41 | substcont 8 7 |
42 | trans 7 4 do_trans |
43 | sassign 10 3 mg_find, SvSETMAGIC |
44 | aassign 10 5 |
45 | chop 8 3 do_chop |
46 | schop 8 3 do_chop |
47 | chomp 8 3 do_chomp |
48 | schomp 8 3 do_chomp |
49 | defined 10 2 |
50 | undef 10 3 |
51 | study 4 5 |
52 | pos 8 3 PVLV, mg_find |
53 | preinc 10 2 sv_inc, SvSETMAGIC |
54 | i_preinc |
55 | predec 10 2 sv_dec, SvSETMAGIC |
56 | i_predec |
57 | postinc 10 2 sv_dec, SvSETMAGIC |
58 | i_postinc |
59 | postdec 10 2 sv_dec, SvSETMAGIC |
60 | i_postdec |
61 | pow 10 1 |
62 | multiply 10 1 |
63 | i_multiply 10 1 |
64 | divide 10 2 |
65 | i_divide 10 1 |
66 | modulo 10 2 |
67 | i_modulo 10 1 |
68 | repeat 6 4 |
69 | add 10 1 |
70 | i_add 10 1 |
71 | subtract 10 1 |
72 | i_subtract 10 1 |
73 | concat 10 2 mg_get |
74 | stringify 10 2 sv_setpvn |
75 | left_shift 10 1 |
76 | right_shift 10 1 |
77 | lt 10 1 |
78 | i_lt 10 1 |
79 | gt 10 1 |
80 | i_gt 10 1 |
81 | le 10 1 |
82 | i_le 10 1 |
83 | ge 10 1 |
84 | i_ge 10 1 |
85 | eq 10 1 |
86 | i_eq 10 1 |
87 | ne 10 1 |
88 | i_ne 10 1 |
89 | ncmp 10 1 |
90 | i_ncmp 10 1 |
91 | slt 10 2 |
92 | sgt 10 2 |
93 | sle 10 2 |
94 | sge 10 2 |
95 | seq 10 2 sv_eq |
96 | sne 10 2 |
97 | scmp 10 2 |
98 | bit_and 10 2 |
99 | bit_xor 10 2 |
100 | bit_or 10 2 |
101 | negate 10 3 |
102 | i_negate 10 1 |
103 | not 10 1 |
104 | complement 10 3 |
105 | atan2 6 1 |
106 | sin 6 1 |
107 | cos 6 1 |
108 | rand 5 2 |
109 | srand 5 2 |
110 | exp 6 1 |
111 | log 6 2 |
112 | sqrt 6 2 |
113 | int 10 2 |
114 | hex 9 2 |
115 | oct 9 2 |
116 | abs 10 1 |
117 | length 10 1 |
118 | substr 10 4 PVLV |
119 | vec 5 4 |
120 | index 9 3 |
121 | rindex 9 3 |
122 | sprintf 9 4 do_sprintf |
123 | formline 6 7 |
124 | ord 6 2 |
125 | chr 6 2 |
126 | crypt 3 2 |
127 | ucfirst 6 2 |
128 | lcfirst 6 2 |
129 | uc 6 2 |
130 | lc 6 2 |
131 | quotemeta 6 3 |
132 | rv2av 10 3 save_svref, mg_get, save_ary |
133 | aelemfast 10 2 av_fetch |
134 | aelem 10 3 |
135 | aslice 9 4 |
136 | each 10 3 hv_iternext |
137 | values 10 3 do_kv |
138 | keys 10 3 do_kv |
139 | delete 10 3 |
140 | exists 10 3 |
141 | rv2hv 10 3 save_svref, mg_get, save_ary, do_kv |
142 | helem 10 3 save_svref, provide_ref |
143 | hslice 9 4 |
144 | unpack 9 6 lengthy |
145 | pack 9 6 lengthy |
146 | split 9 9 |
147 | join 10 4 do_join |
148 | list 10 2 |
149 | lslice 9 4 |
150 | anonlist 10 2 |
151 | anonhash 10 3 |
152 | splice 9 6 |
153 | push 10 2 |
154 | pop 10 2 |
155 | shift 10 2 |
156 | unshift 10 2 |
157 | sort 6 7 |
158 | reverse 9 4 |
159 | grepstart 6 5 modifies flow of control |
160 | grepwhile 6 5 modifies flow of control |
161 | mapstart 1 1 |
162 | mapwhile 6 5 modifies flow of control |
163 | range 7 3 modifies flow of control |
164 | flip 7 4 modifies flow of control |
165 | flop 7 4 modifies flow of control |
166 | and 10 3 modifies flow of control |
167 | or 10 3 modifies flow of control |
168 | xor |
169 | cond_expr 10 3 modifies flow of control |
170 | andassign 7 3 modifies flow of control |
171 | orassign 7 3 modifies flow of control |
172 | method 8 5 |
173 | entersub 10 7 |
174 | leavesub 10 5 |
c00ba3a6 |
175 | leavesublv |
a8a597b2 |
176 | caller 2 8 |
177 | warn 9 3 |
178 | die 9 3 |
179 | reset 2 2 |
180 | lineseq 1 1 |
181 | nextstate 10 1 Update stack_sp from cxstack. FREETMPS. |
182 | dbstate 3 7 |
183 | unstack |
184 | enter 10 3 cxstack, ENTER, SAVETMPS, PUSHBLOCK |
185 | leave 10 3 cxstack, SAVETMPS, LEAVE, POPBLOCK |
186 | scope 1 1 |
187 | enteriter 9 4 cxstack |
188 | iter 9 3 cxstack |
189 | enterloop 10 4 |
190 | leaveloop 10 4 |
191 | return 10 5 |
192 | last 9 6 |
193 | next 9 6 |
194 | redo 9 6 |
195 | dump 1 9 pp_goto |
196 | goto 6 9 |
197 | exit 9 2 my_exit |
198 | open 9 5 do_open |
199 | close 9 3 do_close |
200 | pipe_op 7 4 |
201 | fileno 9 2 |
202 | umask 4 2 |
203 | binmode 4 2 |
204 | tie 5 5 pp_entersub |
205 | untie 5 2 sv_unmagic |
206 | tied 5 2 |
207 | dbmopen 4 5 |
208 | dbmclose 4 2 |
209 | sselect 4 4 |
210 | select 7 3 |
211 | getc 7 2 |
212 | read 8 2 pp_sysread |
213 | enterwrite 4 4 doform |
214 | leavewrite 4 5 |
215 | prtf 4 4 do_sprintf |
216 | print 8 6 |
217 | sysopen 8 2 |
c00ba3a6 |
218 | sysseek 8 2 |
a8a597b2 |
219 | sysread 8 4 |
220 | syswrite 8 4 pp_send |
221 | send 8 4 |
222 | recv 8 4 pp_sysread |
223 | eof 9 2 |
224 | tell 9 3 |
225 | seek 9 2 |
226 | truncate 8 3 |
227 | fcntl 8 4 pp_ioctl |
228 | ioctl 8 4 |
229 | flock 8 2 |
230 | socket 5 3 |
231 | sockpair 5 3 |
232 | bind 5 3 |
233 | connect 5 3 |
234 | listen 5 3 |
235 | accept 5 3 |
236 | shutdown 5 2 |
237 | gsockopt 5 3 pp_ssockopt |
238 | ssockopt 5 3 |
239 | getsockname 5 3 pp_getpeername |
240 | getpeername 5 3 |
241 | lstat 5 4 pp_stat |
242 | stat 5 4 lengthy |
243 | ftrread 5 2 cando |
244 | ftrwrite 5 2 cando |
245 | ftrexec 5 2 cando |
246 | fteread 5 2 cando |
247 | ftewrite 5 2 cando |
248 | fteexec 5 2 cando |
249 | ftis 5 2 cando |
250 | fteowned 5 2 cando |
251 | ftrowned 5 2 cando |
252 | ftzero 5 2 cando |
253 | ftsize 5 2 cando |
254 | ftmtime 5 2 cando |
255 | ftatime 5 2 cando |
256 | ftctime 5 2 cando |
257 | ftsock 5 2 cando |
258 | ftchr 5 2 cando |
259 | ftblk 5 2 cando |
260 | ftfile 5 2 cando |
261 | ftdir 5 2 cando |
262 | ftpipe 5 2 cando |
263 | ftlink 5 2 cando |
264 | ftsuid 5 2 cando |
265 | ftsgid 5 2 cando |
266 | ftsvtx 5 2 cando |
267 | fttty 5 2 cando |
268 | fttext 5 4 |
269 | ftbinary 5 4 fttext |
270 | chdir |
271 | chown |
272 | chroot |
273 | unlink |
274 | chmod |
275 | utime |
276 | rename |
277 | link |
278 | symlink |
279 | readlink |
280 | mkdir |
281 | rmdir |
282 | open_dir |
283 | readdir |
284 | telldir |
285 | seekdir |
286 | rewinddir |
287 | closedir |
288 | fork |
289 | wait |
290 | waitpid |
291 | system |
292 | exec |
293 | kill |
294 | getppid |
295 | getpgrp |
296 | setpgrp |
297 | getpriority |
298 | setpriority |
299 | time |
300 | tms |
301 | localtime |
302 | gmtime |
303 | alarm |
304 | sleep |
305 | shmget |
306 | shmctl |
307 | shmread |
308 | shmwrite |
309 | msgget |
310 | msgctl |
311 | msgsnd |
312 | msgrcv |
313 | semget |
314 | semctl |
315 | semop |
316 | require 6 9 doeval |
317 | dofile 6 9 doeval |
318 | entereval 6 9 doeval |
319 | leaveeval 6 5 |
320 | entertry 7 4 modifies flow of control |
321 | leavetry 7 3 |
322 | ghbyname |
323 | ghbyaddr |
324 | ghostent |
325 | gnbyname |
326 | gnbyaddr |
327 | gnetent |
328 | gpbyname |
329 | gpbynumber |
330 | gprotoent |
331 | gsbyname |
332 | gsbyport |
333 | gservent |
334 | shostent |
335 | snetent |
336 | sprotoent |
337 | sservent |
338 | ehostent |
339 | enetent |
340 | eprotoent |
341 | eservent |
342 | gpwnam |
343 | gpwuid |
344 | gpwent |
345 | spwent |
346 | epwent |
347 | ggrnam |
348 | ggrgid |
349 | ggrent |
350 | sgrent |
351 | egrent |
352 | getlogin |
353 | syscall |
c00ba3a6 |
354 | lock 6 1 |
c00ba3a6 |
355 | setstate 1 1 currently unused anywhere |
356 | method_named 10 2 |