1* Fixes 2 3BC_heavy: sanify INC before the compilers pollute them (toddr,atoomic) 4attribute handlers (i.e. run-time attributes) 5compile-time perlio layers (e.g. use open ...) 6compile-time re-eval groups (?{}) 7smartmatch subrefs 8compile-time stash-magic delete renames to ANON 9use bytes AUTOLOAD handling 10CvOUTSIDE for ordinary subs 11 12CC backend: goto (needs test), some recursive calls fail 13 14* Features 15 16modularize (-m) for faster link times, buildcc, rperl integration 17 (branch modul) 18 * add new build tool which takes module names and paths from the 19 compiler, check timestamps and create/update compiled modules. 20 * filter out non-module related code in the compiler by looking at 21 the CopFILE. 22backport improvements from oldmaster: 23 do not define symbols which are arguments of define (destructive 24 check) 25 store static bless packagenames 26run-time label lookup (fixed) 27skip code after BEGIN goto (usually Carp including B in some AUTOLOAD block, issue 61) 28type checking: Devel::TypeCheck 29compile time v. runtime initialisation (done): 30 execute run-time BEGIN blocks for side-effects such as print or chdir, 31 use and require not. 32save PMOPs in compiled form (5.10thr missing) 33selection of what to dump (done) 34options for cutting out line info (COP elimination) etc. (-fcop, sortcv's) 35shared constants: share_hek, constpv (done) 36check module dependencies, vs. link libs static, not via DynaLoader (done) 37check Bytecode op coverage in the tests, should cover all ops 0-142 38ByteLoader compatibility: version, platform. eventually Bytecode version 39 portability (test with 5.6 on cygwin, partially done) 40check CC op coverage, add tests 41 42* Optimizations 43 44-fro-inc read-only INC paths. not the AV, run-time savepvn (done) 45-fno-destruct skip optree and sv destruction at all, leave it to the OS (done) 46collect static strings beforehand, such as GvNAMEs, COP FILENAME (for pre 5.10) 47 and GV method names package::name. (done) 48proper static init of PMOP SV's (only works dynamic >= 5.10) 49proper static init of PVBM/FBM (done) 50compile-time initialisation of AvARRAYs (improved with -fav-init and 51 -fav-init2) 52 53collapse LISTOPs to UNOPs or BASEOPs 54compile-time qw(), constant subs 55variable types: global analysis of variables, type hints etc. 56 understand type decl and attrs 57 my int $i; my $j : int; 58 Devel::TypeCheck instead of magic variable _ir, ... suffices 59 e.g. mark IVonly SV's and magic/flags change functions and 60 optimize all op subtrees for the compiled backends to use direct ints. 61 understand MooseX::Method::Signatures and MooseX::Lexical::Types declarations 62demand-loaded bytecode (leader of each basic block replaced by an op 63 which loads in bytecode for its block) 64fast sub calls for CC backend 65tailcall optimization (entersub -> leavesub => goto) 66inline more small pp ops: enter, reset, stringify, ... (CC -finline-ops) 67