358 lines
5.3 KiB
Plaintext
358 lines
5.3 KiB
Plaintext
Notes on porting the perl runtime PP engine.
|
|
Importance: 1 = who cares?, 10 = vital
|
|
Difficulty: 1 = trivial, 10 = very difficult. Level assumes a
|
|
reasonable implementation of the SV and OP API already ported.
|
|
|
|
OP Import Diff Comments
|
|
null 10 1
|
|
stub 10 1
|
|
scalar 10 1
|
|
pushmark 10 1 PUSHMARK
|
|
wantarray 7 3 cxstack, dopoptosub
|
|
const 10 1
|
|
gvsv 10 1 save_scalar
|
|
gv 10 1
|
|
gelem 3 3
|
|
padsv 10 2 SAVECLEARSV, provide_ref
|
|
padav 10 2
|
|
padhv 10 2
|
|
padany 1 1
|
|
pushre 7 3 pushes an op. Blech.
|
|
rv2gv 6 5
|
|
rv2sv 10 4
|
|
av2arylen 7 3 sv_magic
|
|
rv2cv 8 5 sv_2cv
|
|
anoncode 7 6 cv_clone
|
|
prototype 4 4 sv_2cv
|
|
refgen 8 3
|
|
srefgen 8 2
|
|
ref 8 3
|
|
bless 7 3
|
|
backtick 5 4
|
|
glob 5 2 do_readline
|
|
readline 8 2 do_readline
|
|
rcatline 8 2
|
|
regcmaybe 8 1
|
|
regcreset 8 1
|
|
regcomp 8 9 pregcomp
|
|
match 8 10
|
|
qr 8 1
|
|
subst 8 10
|
|
substcont 8 7
|
|
trans 7 4 do_trans
|
|
sassign 10 3 mg_find, SvSETMAGIC
|
|
aassign 10 5
|
|
chop 8 3 do_chop
|
|
schop 8 3 do_chop
|
|
chomp 8 3 do_chomp
|
|
schomp 8 3 do_chomp
|
|
defined 10 2
|
|
undef 10 3
|
|
study 4 5
|
|
pos 8 3 PVLV, mg_find
|
|
preinc 10 2 sv_inc, SvSETMAGIC
|
|
i_preinc
|
|
predec 10 2 sv_dec, SvSETMAGIC
|
|
i_predec
|
|
postinc 10 2 sv_dec, SvSETMAGIC
|
|
i_postinc
|
|
postdec 10 2 sv_dec, SvSETMAGIC
|
|
i_postdec
|
|
pow 10 1
|
|
multiply 10 1
|
|
i_multiply 10 1
|
|
divide 10 2
|
|
i_divide 10 1
|
|
modulo 10 2
|
|
i_modulo 10 1
|
|
repeat 6 4
|
|
add 10 1
|
|
i_add 10 1
|
|
subtract 10 1
|
|
i_subtract 10 1
|
|
concat 10 2 mg_get
|
|
stringify 10 2 sv_setpvn
|
|
left_shift 10 1
|
|
right_shift 10 1
|
|
lt 10 1
|
|
i_lt 10 1
|
|
gt 10 1
|
|
i_gt 10 1
|
|
le 10 1
|
|
i_le 10 1
|
|
ge 10 1
|
|
i_ge 10 1
|
|
eq 10 1
|
|
i_eq 10 1
|
|
ne 10 1
|
|
i_ne 10 1
|
|
ncmp 10 1
|
|
i_ncmp 10 1
|
|
slt 10 2
|
|
sgt 10 2
|
|
sle 10 2
|
|
sge 10 2
|
|
seq 10 2 sv_eq
|
|
sne 10 2
|
|
scmp 10 2
|
|
bit_and 10 2
|
|
bit_xor 10 2
|
|
bit_or 10 2
|
|
negate 10 3
|
|
i_negate 10 1
|
|
not 10 1
|
|
complement 10 3
|
|
atan2 6 1
|
|
sin 6 1
|
|
cos 6 1
|
|
rand 5 2
|
|
srand 5 2
|
|
exp 6 1
|
|
log 6 2
|
|
sqrt 6 2
|
|
int 10 2
|
|
hex 9 2
|
|
oct 9 2
|
|
abs 10 1
|
|
length 10 1
|
|
substr 10 4 PVLV
|
|
vec 5 4
|
|
index 9 3
|
|
rindex 9 3
|
|
sprintf 9 4 do_sprintf
|
|
formline 6 7
|
|
ord 6 2
|
|
chr 6 2
|
|
crypt 3 2
|
|
ucfirst 6 2
|
|
lcfirst 6 2
|
|
uc 6 2
|
|
lc 6 2
|
|
quotemeta 6 3
|
|
rv2av 10 3 save_svref, mg_get, save_ary
|
|
aelemfast 10 2 av_fetch
|
|
aelem 10 3
|
|
aslice 9 4
|
|
each 10 3 hv_iternext
|
|
values 10 3 do_kv
|
|
keys 10 3 do_kv
|
|
delete 10 3
|
|
exists 10 3
|
|
rv2hv 10 3 save_svref, mg_get, save_ary, do_kv
|
|
helem 10 3 save_svref, provide_ref
|
|
hslice 9 4
|
|
unpack 9 6 lengthy
|
|
pack 9 6 lengthy
|
|
split 9 9
|
|
join 10 4 do_join
|
|
list 10 2
|
|
lslice 9 4
|
|
anonlist 10 2
|
|
anonhash 10 3
|
|
splice 9 6
|
|
push 10 2
|
|
pop 10 2
|
|
shift 10 2
|
|
unshift 10 2
|
|
sort 6 7
|
|
reverse 9 4
|
|
grepstart 6 5 modifies flow of control
|
|
grepwhile 6 5 modifies flow of control
|
|
mapstart 1 1
|
|
mapwhile 6 5 modifies flow of control
|
|
range 7 3 modifies flow of control
|
|
flip 7 4 modifies flow of control
|
|
flop 7 4 modifies flow of control
|
|
and 10 3 modifies flow of control
|
|
or 10 3 modifies flow of control
|
|
xor
|
|
cond_expr 10 3 modifies flow of control
|
|
andassign 7 3 modifies flow of control
|
|
orassign 7 3 modifies flow of control
|
|
method 8 5
|
|
entersub 10 7
|
|
leavesub 10 5
|
|
leavesublv
|
|
caller 2 8
|
|
warn 9 3
|
|
die 9 3
|
|
reset 2 2
|
|
lineseq 1 1
|
|
nextstate 10 1 Update stack_sp from cxstack. FREETMPS.
|
|
dbstate 3 7
|
|
unstack
|
|
enter 10 3 cxstack, ENTER, SAVETMPS, PUSHBLOCK
|
|
leave 10 3 cxstack, SAVETMPS, LEAVE, POPBLOCK
|
|
scope 1 1
|
|
enteriter 9 4 cxstack
|
|
iter 9 3 cxstack
|
|
enterloop 10 4
|
|
leaveloop 10 4
|
|
return 10 5
|
|
last 9 6
|
|
next 9 6
|
|
redo 9 6
|
|
dump 1 9 pp_goto
|
|
goto 6 9
|
|
exit 9 2 my_exit
|
|
open 9 5 do_open
|
|
close 9 3 do_close
|
|
pipe_op 7 4
|
|
fileno 9 2
|
|
umask 4 2
|
|
binmode 4 2
|
|
tie 5 5 pp_entersub
|
|
untie 5 2 sv_unmagic
|
|
tied 5 2
|
|
dbmopen 4 5
|
|
dbmclose 4 2
|
|
sselect 4 4
|
|
select 7 3
|
|
getc 7 2
|
|
read 8 2 pp_sysread
|
|
enterwrite 4 4 doform
|
|
leavewrite 4 5
|
|
prtf 4 4 do_sprintf
|
|
print 8 6
|
|
sysopen 8 2
|
|
sysseek 8 2
|
|
sysread 8 4
|
|
syswrite 8 4 pp_send
|
|
send 8 4
|
|
recv 8 4 pp_sysread
|
|
eof 9 2
|
|
tell 9 3
|
|
seek 9 2
|
|
truncate 8 3
|
|
fcntl 8 4 pp_ioctl
|
|
ioctl 8 4
|
|
flock 8 2
|
|
socket 5 3
|
|
sockpair 5 3
|
|
bind 5 3
|
|
connect 5 3
|
|
listen 5 3
|
|
accept 5 3
|
|
shutdown 5 2
|
|
gsockopt 5 3 pp_ssockopt
|
|
ssockopt 5 3
|
|
getsockname 5 3 pp_getpeername
|
|
getpeername 5 3
|
|
lstat 5 4 pp_stat
|
|
stat 5 4 lengthy
|
|
ftrread 5 2 cando
|
|
ftrwrite 5 2 cando
|
|
ftrexec 5 2 cando
|
|
fteread 5 2 cando
|
|
ftewrite 5 2 cando
|
|
fteexec 5 2 cando
|
|
ftis 5 2 cando
|
|
fteowned 5 2 cando
|
|
ftrowned 5 2 cando
|
|
ftzero 5 2 cando
|
|
ftsize 5 2 cando
|
|
ftmtime 5 2 cando
|
|
ftatime 5 2 cando
|
|
ftctime 5 2 cando
|
|
ftsock 5 2 cando
|
|
ftchr 5 2 cando
|
|
ftblk 5 2 cando
|
|
ftfile 5 2 cando
|
|
ftdir 5 2 cando
|
|
ftpipe 5 2 cando
|
|
ftlink 5 2 cando
|
|
ftsuid 5 2 cando
|
|
ftsgid 5 2 cando
|
|
ftsvtx 5 2 cando
|
|
fttty 5 2 cando
|
|
fttext 5 4
|
|
ftbinary 5 4 fttext
|
|
chdir
|
|
chown
|
|
chroot
|
|
unlink
|
|
chmod
|
|
utime
|
|
rename
|
|
link
|
|
symlink
|
|
readlink
|
|
mkdir
|
|
rmdir
|
|
open_dir
|
|
readdir
|
|
telldir
|
|
seekdir
|
|
rewinddir
|
|
closedir
|
|
fork
|
|
wait
|
|
waitpid
|
|
system
|
|
exec
|
|
kill
|
|
getppid
|
|
getpgrp
|
|
setpgrp
|
|
getpriority
|
|
setpriority
|
|
time
|
|
tms
|
|
localtime
|
|
gmtime
|
|
alarm
|
|
sleep
|
|
shmget
|
|
shmctl
|
|
shmread
|
|
shmwrite
|
|
msgget
|
|
msgctl
|
|
msgsnd
|
|
msgrcv
|
|
semget
|
|
semctl
|
|
semop
|
|
require 6 9 doeval
|
|
dofile 6 9 doeval
|
|
entereval 6 9 doeval
|
|
leaveeval 6 5
|
|
entertry 7 4 modifies flow of control
|
|
leavetry 7 3
|
|
ghbyname
|
|
ghbyaddr
|
|
ghostent
|
|
gnbyname
|
|
gnbyaddr
|
|
gnetent
|
|
gpbyname
|
|
gpbynumber
|
|
gprotoent
|
|
gsbyname
|
|
gsbyport
|
|
gservent
|
|
shostent
|
|
snetent
|
|
sprotoent
|
|
sservent
|
|
ehostent
|
|
enetent
|
|
eprotoent
|
|
eservent
|
|
gpwnam
|
|
gpwuid
|
|
gpwent
|
|
spwent
|
|
epwent
|
|
ggrnam
|
|
ggrgid
|
|
ggrent
|
|
sgrent
|
|
egrent
|
|
getlogin
|
|
syscall
|
|
lock 6 1
|
|
threadsv 6 2 unused if not USE_THREADS
|
|
setstate 1 1 currently unused anywhere
|
|
method_named 10 2
|