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 regcomp 8 9 pregcomp match 8 10 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 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 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