Mercurial > hg > Members > anatofuz > MoarVM
changeset 17:f4636c3adb79
modify define ITERP struct and goto segment
author | Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 20 Oct 2018 09:57:43 +0900 |
parents | 5dad2b2a4da3 |
children | be886c9ae3f1 |
files | cbctools/change_OPS_h_to_cbc.pl src/core/cbc-interp.cbc src/core/oplables-cbc-codes.h |
diffstat | 3 files changed, 915 insertions(+), 893 deletions(-) [+] |
line wrap: on
line diff
--- a/cbctools/change_OPS_h_to_cbc.pl Thu Oct 18 14:01:51 2018 +0900 +++ b/cbctools/change_OPS_h_to_cbc.pl Sat Oct 20 09:57:43 2018 +0900 @@ -5,6 +5,30 @@ # Input file is dispatc.cbc # +print << 'EOFEOF'; +typedef struct interp { + MVMuint16 op; + /* Points to the place in the bytecode right after the current opcode. */ + /* See the NEXT_OP macro for making sense of this */ + MVMuint8 *cur_op; + + /* The current frame's bytecode start. */ + MVMuint8 *bytecode_start; + + /* Points to the base of the current register set for the frame we + * are presently in. */ + MVMRegister *reg_base; + + /* Points to the current compilation unit. */ + MVMCompUnit *cu; + + /* The current call site we're constructing. */ + MVMCallsite *cur_callsite; + + MVMThreadContext *tc; + } INTER,*INTERP; +EOFEOF + my %codesegs = (); my $file; @@ -40,7 +64,7 @@ for my $code_gear (@out){ $code_gear =~ s/^\s+(\w+),\n/$1/g; - print "__code $code_gear();\n"; + print "__code $code_gear(INTERP);\n"; } print "\n";
--- a/src/core/cbc-interp.cbc Thu Oct 18 14:01:51 2018 +0900 +++ b/src/core/cbc-interp.cbc Sat Oct 20 09:57:43 2018 +0900 @@ -48,7 +48,7 @@ #if MVM_CGOTO #define DISPATCH(op) #define OP(name) OP_ ## name -#define NEXT(i) CODES[NEXT_OP(i)]() +#define NEXT(i) CODES[NEXT_OP(i)](i) #else #define DISPATCH(op) switch (op) #define OP(name) case MVM_OP_ ## name @@ -56,27 +56,6 @@ #endif static int tracing_enabled = 0; -typedef struct interp { - MVMuint16 op; - /* Points to the place in the bytecode right after the current opcode. */ - /* See the NEXT_OP macro for making sense of this */ - MVMuint8 *cur_op; - - /* The current frame's bytecode start. */ - MVMuint8 *bytecode_start; - - /* Points to the base of the current register set for the frame we - * are presently in. */ - MVMRegister *reg_base; - - /* Points to the current compilation unit. */ - MVMCompUnit *cu; - - /* The current call site we're constructing. */ - MVMCallsite *cur_callsite; - - MVMThreadContext *tc; -} INTER,*INTERP; __code cbc_no_op(INTERP i){ goto NEXT(i); @@ -1053,7 +1032,6 @@ goto NEXT(i); } __code cbc_invoke_o(INTERP i){ - { MVMObject *code = GET_REG(i->cur_op, 2,i).o; MVMRegister *args = i->tc->cur_frame->args; MVMuint16 was_multi = 0; @@ -1069,7 +1047,6 @@ i->cur_op += 4; i->tc->cur_frame->return_address = i->cur_op; STABLE(code)->invoke(i->tc, code, i->cur_callsite, args); - } goto NEXT(i); } __code cbc_checkarity(INTERP i){ @@ -6424,7 +6401,7 @@ #if MVM_CGOTO #endif - INTER inter = {NULL,NULL,NULL,NULL,NULL,NULL,tc}; + INTER inter = {0,NULL,NULL,NULL,NULL,NULL,tc}; INTERP i = &inter; /* Stash addresses of current op, register base and SC deref base
--- a/src/core/oplables-cbc-codes.h Thu Oct 18 14:01:51 2018 +0900 +++ b/src/core/oplables-cbc-codes.h Sat Oct 20 09:57:43 2018 +0900 @@ -1,871 +1,892 @@ -__code cbc_no_op(); -__code cbc_const_i8(); -__code cbc_const_i16(); -__code cbc_const_i32(); -__code cbc_const_i64(); -__code cbc_const_n32(); -__code cbc_const_n64(); -__code cbc_const_s(); -__code cbc_set(); -__code cbc_extend_u8(); -__code cbc_extend_u16(); -__code cbc_extend_u32(); -__code cbc_extend_i8(); -__code cbc_extend_i16(); -__code cbc_extend_i32(); -__code cbc_trunc_u8(); -__code cbc_trunc_u16(); -__code cbc_trunc_u32(); -__code cbc_trunc_i8(); -__code cbc_trunc_i16(); -__code cbc_trunc_i32(); -__code cbc_extend_n32(); -__code cbc_trunc_n32(); -__code cbc_goto(); -__code cbc_if_i(); -__code cbc_unless_i(); -__code cbc_if_n(); -__code cbc_unless_n(); -__code cbc_if_s(); -__code cbc_unless_s(); -__code cbc_if_s0(); -__code cbc_unless_s0(); -__code cbc_if_o(); -__code cbc_unless_o(); -__code cbc_jumplist(); -__code cbc_getlex(); -__code cbc_bindlex(); -__code cbc_getlex_ni(); -__code cbc_getlex_nn(); -__code cbc_getlex_ns(); -__code cbc_getlex_no(); -__code cbc_bindlex_ni(); -__code cbc_bindlex_nn(); -__code cbc_bindlex_ns(); -__code cbc_bindlex_no(); -__code cbc_getlex_ng(); -__code cbc_bindlex_ng(); -__code cbc_getdynlex(); -__code cbc_binddynlex(); -__code cbc_setlexvalue(); -__code cbc_lexprimspec(); -__code cbc_return_i(); -__code cbc_return_n(); -__code cbc_return_s(); -__code cbc_return_o(); -__code cbc_return(); -__code cbc_eq_i(); -__code cbc_ne_i(); -__code cbc_lt_i(); -__code cbc_le_i(); -__code cbc_gt_i(); -__code cbc_ge_i(); -__code cbc_cmp_i(); -__code cbc_add_i(); -__code cbc_sub_i(); -__code cbc_mul_i(); -__code cbc_div_i(); -__code cbc_div_u(); -__code cbc_mod_i(); -__code cbc_mod_u(); -__code cbc_neg_i(); -__code cbc_abs_i(); -__code cbc_inc_i(); -__code cbc_inc_u(); -__code cbc_dec_i(); -__code cbc_dec_u(); -__code cbc_band_i(); -__code cbc_bor_i(); -__code cbc_bxor_i(); -__code cbc_bnot_i(); -__code cbc_blshift_i(); -__code cbc_brshift_i(); -__code cbc_pow_i(); -__code cbc_not_i(); -__code cbc_gcd_i(); -__code cbc_lcm_i(); -__code cbc_eq_n(); -__code cbc_ne_n(); -__code cbc_lt_n(); -__code cbc_le_n(); -__code cbc_gt_n(); -__code cbc_ge_n(); -__code cbc_cmp_n(); -__code cbc_add_n(); -__code cbc_sub_n(); -__code cbc_mul_n(); -__code cbc_div_n(); -__code cbc_mod_n(); -__code cbc_neg_n(); -__code cbc_abs_n(); -__code cbc_pow_n(); -__code cbc_ceil_n(); -__code cbc_floor_n(); -__code cbc_sin_n(); -__code cbc_asin_n(); -__code cbc_cos_n(); -__code cbc_acos_n(); -__code cbc_tan_n(); -__code cbc_atan_n(); -__code cbc_atan2_n(); -__code cbc_sec_n(); -__code cbc_asec_n(); -__code cbc_sinh_n(); -__code cbc_cosh_n(); -__code cbc_tanh_n(); -__code cbc_sech_n(); -__code cbc_sqrt_n(); -__code cbc_log_n(); -__code cbc_exp_n(); -__code cbc_coerce_in(); -__code cbc_coerce_ni(); -__code cbc_coerce_is(); -__code cbc_coerce_ns(); -__code cbc_coerce_si(); -__code cbc_coerce_sn(); -__code cbc_smrt_numify(); -__code cbc_smrt_strify(); -__code cbc_prepargs(); -__code cbc_arg_i(); -__code cbc_arg_n(); -__code cbc_arg_s(); -__code cbc_arg_o(); -__code cbc_argconst_i(); -__code cbc_argconst_n(); -__code cbc_argconst_s(); -__code cbc_invoke_v(); -__code cbc_invoke_i(); -__code cbc_invoke_n(); -__code cbc_invoke_s(); -__code cbc_invoke_o(); -__code cbc_checkarity(); -__code cbc_param_rp_i(); -__code cbc_param_rp_n(); -__code cbc_param_rp_s(); -__code cbc_param_rp_o(); -__code cbc_param_op_i(); -__code cbc_param_op_n(); -__code cbc_param_op_s(); -__code cbc_param_op_o(); -__code cbc_param_rn_i(); -__code cbc_param_rn_n(); -__code cbc_param_rn_s(); -__code cbc_param_rn_o(); -__code cbc_param_on_i(); -__code cbc_param_on_n(); -__code cbc_param_on_s(); -__code cbc_param_on_o(); -__code cbc_param_sp(); -__code cbc_param_sn(); -__code cbc_getcode(); -__code cbc_caller(); -__code cbc_capturelex(); -__code cbc_takeclosure(); -__code cbc_exception(); -__code cbc_bindexmessage(); -__code cbc_bindexpayload(); -__code cbc_bindexcategory(); -__code cbc_getexmessage(); -__code cbc_getexpayload(); -__code cbc_getexcategory(); -__code cbc_throwdyn(); -__code cbc_throwlex(); -__code cbc_throwlexotic(); -__code cbc_throwcatdyn(); -__code cbc_throwcatlex(); -__code cbc_throwcatlexotic(); -__code cbc_die(); -__code cbc_rethrow(); -__code cbc_resume(); -__code cbc_takehandlerresult(); -__code cbc_DEPRECATED_33(); -__code cbc_DEPRECATED_34(); -__code cbc_backtracestrings(); -__code cbc_usecapture(); -__code cbc_savecapture(); -__code cbc_captureposelems(); -__code cbc_captureposarg(); -__code cbc_captureposarg_i(); -__code cbc_captureposarg_n(); -__code cbc_captureposarg_s(); -__code cbc_captureposprimspec(); -__code cbc_captureexistsnamed(); -__code cbc_capturehasnameds(); -__code cbc_invokewithcapture(); -__code cbc_multicacheadd(); -__code cbc_multicachefind(); -__code cbc_null_s(); -__code cbc_isnull_s(); -__code cbc_eq_s(); -__code cbc_ne_s(); -__code cbc_gt_s(); -__code cbc_ge_s(); -__code cbc_lt_s(); -__code cbc_le_s(); -__code cbc_cmp_s(); -__code cbc_eqat_s(); -__code cbc_eqatic_s(); -__code cbc_haveat_s(); -__code cbc_concat_s(); -__code cbc_repeat_s(); -__code cbc_substr_s(); -__code cbc_index_s(); -__code cbc_graphs_s(); -__code cbc_codes_s(); -__code cbc_getcp_s(); -__code cbc_indexcp_s(); -__code cbc_uc(); -__code cbc_lc(); -__code cbc_tc(); -__code cbc_split(); -__code cbc_join(); -__code cbc_getcpbyname(); -__code cbc_indexat(); -__code cbc_indexnat(); -__code cbc_unipropcode(); -__code cbc_unipvalcode(); -__code cbc_hasuniprop(); -__code cbc_hasunipropc(); -__code cbc_chars(); -__code cbc_chr(); -__code cbc_ordfirst(); -__code cbc_ordat(); -__code cbc_rindexfrom(); -__code cbc_escape(); -__code cbc_flip(); -__code cbc_setbuffersize_fh(); -__code cbc_iscclass(); -__code cbc_findcclass(); -__code cbc_findnotcclass(); -__code cbc_nfafromstatelist(); -__code cbc_nfarunproto(); -__code cbc_nfarunalt(); -__code cbc_radix(); -__code cbc_encode(); -__code cbc_decode(); -__code cbc_istrue_s(); -__code cbc_isfalse_s(); -__code cbc_null(); -__code cbc_isnull(); -__code cbc_ifnonnull(); -__code cbc_findmeth(); -__code cbc_findmeth_s(); -__code cbc_can(); -__code cbc_can_s(); -__code cbc_create(); -__code cbc_clone(); -__code cbc_isconcrete(); -__code cbc_rebless(); -__code cbc_istype(); -__code cbc_objprimspec(); -__code cbc_gethow(); -__code cbc_getwhat(); -__code cbc_getwho(); -__code cbc_setwho(); -__code cbc_reprname(); -__code cbc_getwhere(); -__code cbc_eqaddr(); -__code cbc_bindattr_i(); -__code cbc_bindattr_n(); -__code cbc_bindattr_s(); -__code cbc_bindattr_o(); -__code cbc_bindattrs_i(); -__code cbc_bindattrs_n(); -__code cbc_bindattrs_s(); -__code cbc_bindattrs_o(); -__code cbc_getattr_i(); -__code cbc_getattr_n(); -__code cbc_getattr_s(); -__code cbc_getattr_o(); -__code cbc_getattrs_i(); -__code cbc_getattrs_n(); -__code cbc_getattrs_s(); -__code cbc_getattrs_o(); -__code cbc_attrinited(); -__code cbc_box_i(); -__code cbc_box_n(); -__code cbc_box_s(); -__code cbc_unbox_i(); -__code cbc_unbox_n(); -__code cbc_unbox_s(); -__code cbc_atpos_i(); -__code cbc_atpos_n(); -__code cbc_atpos_s(); -__code cbc_atpos_o(); -__code cbc_bindpos_i(); -__code cbc_bindpos_n(); -__code cbc_bindpos_s(); -__code cbc_bindpos_o(); -__code cbc_push_i(); -__code cbc_push_n(); -__code cbc_push_s(); -__code cbc_push_o(); -__code cbc_pop_i(); -__code cbc_pop_n(); -__code cbc_pop_s(); -__code cbc_pop_o(); -__code cbc_shift_i(); -__code cbc_shift_n(); -__code cbc_shift_s(); -__code cbc_shift_o(); -__code cbc_unshift_i(); -__code cbc_unshift_n(); -__code cbc_unshift_s(); -__code cbc_unshift_o(); -__code cbc_splice(); -__code cbc_setelemspos(); -__code cbc_existspos(); -__code cbc_atkey_i(); -__code cbc_atkey_n(); -__code cbc_atkey_s(); -__code cbc_atkey_o(); -__code cbc_bindkey_i(); -__code cbc_bindkey_n(); -__code cbc_bindkey_s(); -__code cbc_bindkey_o(); -__code cbc_existskey(); -__code cbc_deletekey(); -__code cbc_elems(); -__code cbc_knowhow(); -__code cbc_knowhowattr(); -__code cbc_newtype(); -__code cbc_composetype(); -__code cbc_setmethcache(); -__code cbc_setmethcacheauth(); -__code cbc_settypecache(); -__code cbc_settypecheckmode(); -__code cbc_setboolspec(); -__code cbc_istrue(); -__code cbc_isfalse(); -__code cbc_bootint(); -__code cbc_bootnum(); -__code cbc_bootstr(); -__code cbc_bootarray(); -__code cbc_bootintarray(); -__code cbc_bootnumarray(); -__code cbc_bootstrarray(); -__code cbc_boothash(); -__code cbc_isint(); -__code cbc_isnum(); -__code cbc_isstr(); -__code cbc_islist(); -__code cbc_ishash(); -__code cbc_sethllconfig(); -__code cbc_hllboxtype_i(); -__code cbc_hllboxtype_n(); -__code cbc_hllboxtype_s(); -__code cbc_hlllist(); -__code cbc_hllhash(); -__code cbc_getcomp(); -__code cbc_bindcomp(); -__code cbc_getcurhllsym(); -__code cbc_bindcurhllsym(); -__code cbc_gethllsym(); -__code cbc_bindhllsym(); -__code cbc_settypehll(); -__code cbc_settypehllrole(); -__code cbc_hllize(); -__code cbc_hllizefor(); -__code cbc_usecompileehllconfig(); -__code cbc_usecompilerhllconfig(); -__code cbc_iter(); -__code cbc_iterkey_s(); -__code cbc_iterval(); -__code cbc_getcodename(); -__code cbc_iscoderef(); -__code cbc_getcodeobj(); -__code cbc_setcodeobj(); -__code cbc_setcodename(); -__code cbc_forceouterctx(); -__code cbc_setinvokespec(); -__code cbc_isinvokable(); -__code cbc_freshcoderef(); -__code cbc_markcodestatic(); -__code cbc_markcodestub(); -__code cbc_getstaticcode(); -__code cbc_getcodecuid(); -__code cbc_setdispatcher(); -__code cbc_takedispatcher(); -__code cbc_assign(); -__code cbc_assignunchecked(); -__code cbc_iscont(); -__code cbc_decont(); -__code cbc_setcontspec(); -__code cbc_sha1(); -__code cbc_createsc(); -__code cbc_scsetobj(); -__code cbc_scsetcode(); -__code cbc_scgetobj(); -__code cbc_scgethandle(); -__code cbc_scgetobjidx(); -__code cbc_scsetdesc(); -__code cbc_scobjcount(); -__code cbc_setobjsc(); -__code cbc_getobjsc(); -__code cbc_serialize(); -__code cbc_deserialize(); -__code cbc_wval(); -__code cbc_wval_wide(); -__code cbc_scwbdisable(); -__code cbc_scwbenable(); -__code cbc_pushcompsc(); -__code cbc_popcompsc(); -__code cbc_scgetdesc(); -__code cbc_loadbytecode(); -__code cbc_masttofile(); -__code cbc_masttocu(); -__code cbc_iscompunit(); -__code cbc_compunitmainline(); -__code cbc_compunitcodes(); -__code cbc_ctx(); -__code cbc_ctxouter(); -__code cbc_ctxcaller(); -__code cbc_ctxlexpad(); -__code cbc_curcode(); -__code cbc_callercode(); -__code cbc_add_I(); -__code cbc_sub_I(); -__code cbc_mul_I(); -__code cbc_div_I(); -__code cbc_mod_I(); -__code cbc_neg_I(); -__code cbc_abs_I(); -__code cbc_cmp_I(); -__code cbc_eq_I(); -__code cbc_ne_I(); -__code cbc_lt_I(); -__code cbc_le_I(); -__code cbc_gt_I(); -__code cbc_ge_I(); -__code cbc_bor_I(); -__code cbc_bxor_I(); -__code cbc_band_I(); -__code cbc_bnot_I(); -__code cbc_blshift_I(); -__code cbc_brshift_I(); -__code cbc_pow_I(); -__code cbc_gcd_I(); -__code cbc_lcm_I(); -__code cbc_expmod_I(); -__code cbc_isprime_I(); -__code cbc_rand_I(); -__code cbc_coerce_In(); -__code cbc_coerce_Is(); -__code cbc_coerce_nI(); -__code cbc_coerce_sI(); -__code cbc_isbig_I(); -__code cbc_bool_I(); -__code cbc_base_I(); -__code cbc_radix_I(); -__code cbc_div_In(); -__code cbc_copy_f(); -__code cbc_append_f(); -__code cbc_rename_f(); -__code cbc_delete_f(); -__code cbc_chmod_f(); -__code cbc_exists_f(); -__code cbc_mkdir(); -__code cbc_rmdir(); -__code cbc_open_dir(); -__code cbc_read_dir(); -__code cbc_close_dir(); -__code cbc_open_fh(); -__code cbc_close_fh(); -__code cbc_DEPRECATED_23(); -__code cbc_DEPRECATED_27(); -__code cbc_DEPRECATED_28(); -__code cbc_DEPRECATED_18(); -__code cbc_seek_fh(); -__code cbc_lock_fh(); -__code cbc_unlock_fh(); -__code cbc_sync_fh(); -__code cbc_trunc_fh(); -__code cbc_eof_fh(); -__code cbc_getstdin(); -__code cbc_getstdout(); -__code cbc_getstderr(); -__code cbc_connect_sk(); -__code cbc_socket(); -__code cbc_bind_sk(); -__code cbc_DEPRECATED_24(); -__code cbc_accept_sk(); -__code cbc_decodetocodes(); -__code cbc_encodefromcodes(); -__code cbc_DEPRECATED_17(); -__code cbc_print(); -__code cbc_say(); -__code cbc_DEPRECATED_22(); -__code cbc_tell_fh(); -__code cbc_stat(); -__code cbc_tryfindmeth(); -__code cbc_tryfindmeth_s(); -__code cbc_chdir(); -__code cbc_srand(); -__code cbc_rand_i(); -__code cbc_rand_n(); -__code cbc_time_i(); -__code cbc_sleep(); -__code cbc_newthread(); -__code cbc_threadjoin(); -__code cbc_time_n(); -__code cbc_exit(); -__code cbc_DEPRECATED_30(); -__code cbc_cwd(); -__code cbc_clargs(); -__code cbc_getenvhash(); -__code cbc_loadlib(); -__code cbc_freelib(); -__code cbc_findsym(); -__code cbc_dropsym(); -__code cbc_loadext(); -__code cbc_backendconfig(); -__code cbc_getlexouter(); -__code cbc_getlexrel(); -__code cbc_getlexreldyn(); -__code cbc_getlexrelcaller(); -__code cbc_getlexcaller(); -__code cbc_bitand_s(); -__code cbc_bitor_s(); -__code cbc_bitxor_s(); -__code cbc_isnanorinf(); -__code cbc_inf(); -__code cbc_neginf(); -__code cbc_nan(); -__code cbc_getpid(); -__code cbc_DEPRECATED_29(); -__code cbc_filereadable(); -__code cbc_filewritable(); -__code cbc_fileexecutable(); -__code cbc_DEPRECATED_19(); -__code cbc_capturenamedshash(); -__code cbc_read_fhb(); -__code cbc_write_fhb(); -__code cbc_replace(); -__code cbc_newexception(); -__code cbc_permit(); -__code cbc_backtrace(); -__code cbc_symlink(); -__code cbc_link(); -__code cbc_gethostname(); -__code cbc_exreturnafterunwind(); -__code cbc_DEPRECATED_13(); -__code cbc_continuationreset(); -__code cbc_continuationcontrol(); -__code cbc_continuationinvoke(); -__code cbc_randscale_n(); -__code cbc_uniisblock(); -__code cbc_assertparamcheck(); -__code cbc_hintfor(); -__code cbc_paramnamesused(); -__code cbc_getuniname(); -__code cbc_getuniprop_int(); -__code cbc_getuniprop_bool(); -__code cbc_getuniprop_str(); -__code cbc_matchuniprop(); -__code cbc_nativecallbuild(); -__code cbc_nativecallinvoke(); -__code cbc_nativecallrefresh(); -__code cbc_threadrun(); -__code cbc_threadid(); -__code cbc_threadyield(); -__code cbc_currentthread(); -__code cbc_lock(); -__code cbc_unlock(); -__code cbc_semacquire(); -__code cbc_semtryacquire(); -__code cbc_semrelease(); -__code cbc_getlockcondvar(); -__code cbc_condwait(); -__code cbc_condsignalone(); -__code cbc_condsignalall(); -__code cbc_queuepoll(); -__code cbc_setmultispec(); -__code cbc_ctxouterskipthunks(); -__code cbc_ctxcallerskipthunks(); -__code cbc_timer(); -__code cbc_cancel(); -__code cbc_signal(); -__code cbc_watchfile(); -__code cbc_asyncconnect(); -__code cbc_asynclisten(); -__code cbc_DEPRECATED_14(); -__code cbc_asyncwritebytes(); -__code cbc_DEPRECATED_16(); -__code cbc_asyncreadbytes(); -__code cbc_getlexstatic_o(); -__code cbc_getlexperinvtype_o(); -__code cbc_execname(); -__code cbc_const_i64_16(); -__code cbc_const_i64_32(); -__code cbc_isnonnull(); -__code cbc_param_rn2_i(); -__code cbc_param_rn2_n(); -__code cbc_param_rn2_s(); -__code cbc_param_rn2_o(); -__code cbc_param_on2_i(); -__code cbc_param_on2_n(); -__code cbc_param_on2_s(); -__code cbc_param_on2_o(); -__code cbc_osrpoint(); -__code cbc_nativecallcast(); -__code cbc_spawnprocasync(); -__code cbc_killprocasync(); -__code cbc_startprofile(); -__code cbc_endprofile(); -__code cbc_objectid(); -__code cbc_settypefinalize(); -__code cbc_force_gc(); -__code cbc_nativecallglobal(); -__code cbc_DEPRECATED_32(); -__code cbc_setparameterizer(); -__code cbc_parameterizetype(); -__code cbc_typeparameterized(); -__code cbc_typeparameters(); -__code cbc_typeparameterat(); -__code cbc_readlink(); -__code cbc_lstat(); -__code cbc_iscont_i(); -__code cbc_iscont_n(); -__code cbc_iscont_s(); -__code cbc_assign_i(); -__code cbc_assign_n(); -__code cbc_assign_s(); -__code cbc_decont_i(); -__code cbc_decont_n(); -__code cbc_decont_s(); -__code cbc_getrusage(); -__code cbc_threadlockcount(); -__code cbc_DEPRECATED_4(); -__code cbc_getlexref_i(); -__code cbc_getlexref_n(); -__code cbc_getlexref_s(); -__code cbc_getlexref_ni(); -__code cbc_getlexref_nn(); -__code cbc_getlexref_ns(); -__code cbc_atposref_i(); -__code cbc_atposref_n(); -__code cbc_atposref_s(); -__code cbc_getattrref_i(); -__code cbc_getattrref_n(); -__code cbc_getattrref_s(); -__code cbc_getattrsref_i(); -__code cbc_getattrsref_n(); -__code cbc_getattrsref_s(); -__code cbc_nativecallsizeof(); -__code cbc_encodenorm(); -__code cbc_normalizecodes(); -__code cbc_strfromcodes(); -__code cbc_strtocodes(); -__code cbc_getcodelocation(); -__code cbc_eqatim_s(); -__code cbc_ordbaseat(); -__code cbc_neverrepossess(); -__code cbc_scdisclaim(); -__code cbc_DEPRECATED_31(); -__code cbc_atpos2d_i(); -__code cbc_atpos2d_n(); -__code cbc_atpos2d_s(); -__code cbc_atpos2d_o(); -__code cbc_atpos3d_i(); -__code cbc_atpos3d_n(); -__code cbc_atpos3d_s(); -__code cbc_atpos3d_o(); -__code cbc_atposnd_i(); -__code cbc_atposnd_n(); -__code cbc_atposnd_s(); -__code cbc_atposnd_o(); -__code cbc_bindpos2d_i(); -__code cbc_bindpos2d_n(); -__code cbc_bindpos2d_s(); -__code cbc_bindpos2d_o(); -__code cbc_bindpos3d_i(); -__code cbc_bindpos3d_n(); -__code cbc_bindpos3d_s(); -__code cbc_bindpos3d_o(); -__code cbc_bindposnd_i(); -__code cbc_bindposnd_n(); -__code cbc_bindposnd_s(); -__code cbc_bindposnd_o(); -__code cbc_dimensions(); -__code cbc_setdimensions(); -__code cbc_numdimensions(); -__code cbc_ctxcode(); -__code cbc_isrwcont(); -__code cbc_fc(); -__code cbc_DEPRECATED_25(); -__code cbc_DEPRECATED_21(); -__code cbc_encoderep(); -__code cbc_istty_fh(); -__code cbc_multidimref_i(); -__code cbc_multidimref_n(); -__code cbc_multidimref_s(); -__code cbc_fileno_fh(); -__code cbc_asyncudp(); -__code cbc_DEPRECATED_15(); -__code cbc_asyncwritebytesto(); -__code cbc_objprimbits(); -__code cbc_objprimunsigned(); -__code cbc_DEPRECATED_5(); -__code cbc_DEPRECATED_6(); -__code cbc_DEPRECATED_7(); -__code cbc_DEPRECATED_8(); -__code cbc_getlexref_i32(); -__code cbc_getlexref_i16(); -__code cbc_getlexref_i8(); -__code cbc_getlexref_n32(); -__code cbc_box_u(); -__code cbc_unbox_u(); -__code cbc_coerce_iu(); -__code cbc_coerce_ui(); -__code cbc_coerce_nu(); -__code cbc_coerce_un(); -__code cbc_decont_u(); -__code cbc_DEPRECATED_9(); -__code cbc_DEPRECATED_10(); -__code cbc_DEPRECATED_11(); -__code cbc_DEPRECATED_12(); -__code cbc_getlexref_u(); -__code cbc_getlexref_u32(); -__code cbc_getlexref_u16(); -__code cbc_getlexref_u8(); -__code cbc_param_rp_u(); -__code cbc_param_op_u(); -__code cbc_param_rn_u(); -__code cbc_param_on_u(); -__code cbc_param_rn2_u(); -__code cbc_param_on2_u(); -__code cbc_stat_time(); -__code cbc_lstat_time(); -__code cbc_setdebugtypename(); -__code cbc_loadbytecodebuffer(); -__code cbc_loadbytecodefh(); -__code cbc_throwpayloadlex(); -__code cbc_throwpayloadlexcaller(); -__code cbc_lastexpayload(); -__code cbc_cancelnotify(); -__code cbc_decoderconfigure(); -__code cbc_decodersetlineseps(); -__code cbc_decoderaddbytes(); -__code cbc_decodertakechars(); -__code cbc_decodertakeallchars(); -__code cbc_decodertakeavailablechars(); -__code cbc_decodertakeline(); -__code cbc_decoderbytesavailable(); -__code cbc_decodertakebytes(); -__code cbc_decoderempty(); -__code cbc_indexingoptimized(); -__code cbc_captureinnerlex(); -__code cbc_unicmp_s(); -__code cbc_setdispatcherfor(); -__code cbc_getstrfromname(); -__code cbc_indexic_s(); -__code cbc_getport_sk(); -__code cbc_cpucores(); -__code cbc_eqaticim_s(); -__code cbc_indexicim_s(); -__code cbc_decodertakecharseof(); -__code cbc_indexim_s(); -__code cbc_cas_o(); -__code cbc_cas_i(); -__code cbc_atomicinc_i(); -__code cbc_atomicdec_i(); -__code cbc_atomicadd_i(); -__code cbc_atomicload_o(); -__code cbc_atomicload_i(); -__code cbc_atomicstore_o(); -__code cbc_atomicstore_i(); -__code cbc_barrierfull(); -__code cbc_coveragecontrol(); -__code cbc_nativeinvoke_v(); -__code cbc_nativeinvoke_i(); -__code cbc_nativeinvoke_n(); -__code cbc_nativeinvoke_s(); -__code cbc_nativeinvoke_o(); -__code cbc_getarg_i(); -__code cbc_getarg_n(); -__code cbc_getarg_s(); -__code cbc_getarg_o(); -__code cbc_coerce_II(); -__code cbc_encoderepconf(); -__code cbc_encodeconf(); -__code cbc_decodeconf(); -__code cbc_decoderepconf(); -__code cbc_getppid(); -__code cbc_getsignals(); -__code cbc_sp_guard(); -__code cbc_sp_guardconc(); -__code cbc_sp_guardtype(); -__code cbc_sp_guardsf(); -__code cbc_sp_guardsfouter(); -__code cbc_sp_rebless(); -__code cbc_sp_resolvecode(); -__code cbc_sp_decont(); -__code cbc_sp_getlex_o(); -__code cbc_sp_getlex_ins(); -__code cbc_sp_getlex_no(); -__code cbc_sp_getarg_o(); -__code cbc_sp_getarg_i(); -__code cbc_sp_getarg_n(); -__code cbc_sp_getarg_s(); -__code cbc_sp_fastinvoke_v(); -__code cbc_sp_fastinvoke_i(); -__code cbc_sp_fastinvoke_n(); -__code cbc_sp_fastinvoke_s(); -__code cbc_sp_fastinvoke_o(); -__code cbc_sp_paramnamesused(); -__code cbc_sp_getspeshslot(); -__code cbc_sp_findmeth(); -__code cbc_sp_fastcreate(); -__code cbc_sp_get_o(); -__code cbc_sp_get_i64(); -__code cbc_sp_get_i32(); -__code cbc_sp_get_i16(); -__code cbc_sp_get_i8(); -__code cbc_sp_get_n(); -__code cbc_sp_get_s(); -__code cbc_sp_bind_o(); -__code cbc_sp_bind_i64(); -__code cbc_sp_bind_i32(); -__code cbc_sp_bind_i16(); -__code cbc_sp_bind_i8(); -__code cbc_sp_bind_n(); -__code cbc_sp_bind_s(); -__code cbc_sp_p6oget_o(); -__code cbc_sp_p6ogetvt_o(); -__code cbc_sp_p6ogetvc_o(); -__code cbc_sp_p6oget_i(); -__code cbc_sp_p6oget_n(); -__code cbc_sp_p6oget_s(); -__code cbc_sp_p6obind_o(); -__code cbc_sp_p6obind_i(); -__code cbc_sp_p6obind_n(); -__code cbc_sp_p6obind_s(); -__code cbc_sp_deref_get_i64(); -__code cbc_sp_deref_get_n(); -__code cbc_sp_deref_bind_i64(); -__code cbc_sp_deref_bind_n(); -__code cbc_sp_getlexvia_o(); -__code cbc_sp_getlexvia_ins(); -__code cbc_sp_getstringfrom(); -__code cbc_sp_getwvalfrom(); -__code cbc_sp_jit_enter(); -__code cbc_sp_boolify_iter(); -__code cbc_sp_boolify_iter_arr(); -__code cbc_sp_boolify_iter_hash(); -__code cbc_sp_cas_o(); -__code cbc_sp_atomicload_o(); -__code cbc_sp_atomicstore_o(); -__code cbc_prof_enter(); -__code cbc_prof_enterspesh(); -__code cbc_prof_enterinline(); -__code cbc_prof_enternative(); -__code cbc_prof_exit(); -__code cbc_prof_allocated(); -__code cbc_ctw_check(); -__code cbc_coverage_log(); -__code cbc_breakpoint(); +typedef struct interp { + MVMuint16 op; + /* Points to the place in the bytecode right after the current opcode. */ + /* See the NEXT_OP macro for making sense of this */ + MVMuint8 *cur_op; + + /* The current frame's bytecode start. */ + MVMuint8 *bytecode_start; + + /* Points to the base of the current register set for the frame we + * are presently in. */ + MVMRegister *reg_base; + + /* Points to the current compilation unit. */ + MVMCompUnit *cu; + + /* The current call site we're constructing. */ + MVMCallsite *cur_callsite; -__code (* CODES[])() = { + MVMThreadContext *tc; + } INTER,*INTERP; +__code cbc_no_op(INTERP); +__code cbc_const_i8(INTERP); +__code cbc_const_i16(INTERP); +__code cbc_const_i32(INTERP); +__code cbc_const_i64(INTERP); +__code cbc_const_n32(INTERP); +__code cbc_const_n64(INTERP); +__code cbc_const_s(INTERP); +__code cbc_set(INTERP); +__code cbc_extend_u8(INTERP); +__code cbc_extend_u16(INTERP); +__code cbc_extend_u32(INTERP); +__code cbc_extend_i8(INTERP); +__code cbc_extend_i16(INTERP); +__code cbc_extend_i32(INTERP); +__code cbc_trunc_u8(INTERP); +__code cbc_trunc_u16(INTERP); +__code cbc_trunc_u32(INTERP); +__code cbc_trunc_i8(INTERP); +__code cbc_trunc_i16(INTERP); +__code cbc_trunc_i32(INTERP); +__code cbc_extend_n32(INTERP); +__code cbc_trunc_n32(INTERP); +__code cbc_goto(INTERP); +__code cbc_if_i(INTERP); +__code cbc_unless_i(INTERP); +__code cbc_if_n(INTERP); +__code cbc_unless_n(INTERP); +__code cbc_if_s(INTERP); +__code cbc_unless_s(INTERP); +__code cbc_if_s0(INTERP); +__code cbc_unless_s0(INTERP); +__code cbc_if_o(INTERP); +__code cbc_unless_o(INTERP); +__code cbc_jumplist(INTERP); +__code cbc_getlex(INTERP); +__code cbc_bindlex(INTERP); +__code cbc_getlex_ni(INTERP); +__code cbc_getlex_nn(INTERP); +__code cbc_getlex_ns(INTERP); +__code cbc_getlex_no(INTERP); +__code cbc_bindlex_ni(INTERP); +__code cbc_bindlex_nn(INTERP); +__code cbc_bindlex_ns(INTERP); +__code cbc_bindlex_no(INTERP); +__code cbc_getlex_ng(INTERP); +__code cbc_bindlex_ng(INTERP); +__code cbc_getdynlex(INTERP); +__code cbc_binddynlex(INTERP); +__code cbc_setlexvalue(INTERP); +__code cbc_lexprimspec(INTERP); +__code cbc_return_i(INTERP); +__code cbc_return_n(INTERP); +__code cbc_return_s(INTERP); +__code cbc_return_o(INTERP); +__code cbc_return(INTERP); +__code cbc_eq_i(INTERP); +__code cbc_ne_i(INTERP); +__code cbc_lt_i(INTERP); +__code cbc_le_i(INTERP); +__code cbc_gt_i(INTERP); +__code cbc_ge_i(INTERP); +__code cbc_cmp_i(INTERP); +__code cbc_add_i(INTERP); +__code cbc_sub_i(INTERP); +__code cbc_mul_i(INTERP); +__code cbc_div_i(INTERP); +__code cbc_div_u(INTERP); +__code cbc_mod_i(INTERP); +__code cbc_mod_u(INTERP); +__code cbc_neg_i(INTERP); +__code cbc_abs_i(INTERP); +__code cbc_inc_i(INTERP); +__code cbc_inc_u(INTERP); +__code cbc_dec_i(INTERP); +__code cbc_dec_u(INTERP); +__code cbc_band_i(INTERP); +__code cbc_bor_i(INTERP); +__code cbc_bxor_i(INTERP); +__code cbc_bnot_i(INTERP); +__code cbc_blshift_i(INTERP); +__code cbc_brshift_i(INTERP); +__code cbc_pow_i(INTERP); +__code cbc_not_i(INTERP); +__code cbc_gcd_i(INTERP); +__code cbc_lcm_i(INTERP); +__code cbc_eq_n(INTERP); +__code cbc_ne_n(INTERP); +__code cbc_lt_n(INTERP); +__code cbc_le_n(INTERP); +__code cbc_gt_n(INTERP); +__code cbc_ge_n(INTERP); +__code cbc_cmp_n(INTERP); +__code cbc_add_n(INTERP); +__code cbc_sub_n(INTERP); +__code cbc_mul_n(INTERP); +__code cbc_div_n(INTERP); +__code cbc_mod_n(INTERP); +__code cbc_neg_n(INTERP); +__code cbc_abs_n(INTERP); +__code cbc_pow_n(INTERP); +__code cbc_ceil_n(INTERP); +__code cbc_floor_n(INTERP); +__code cbc_sin_n(INTERP); +__code cbc_asin_n(INTERP); +__code cbc_cos_n(INTERP); +__code cbc_acos_n(INTERP); +__code cbc_tan_n(INTERP); +__code cbc_atan_n(INTERP); +__code cbc_atan2_n(INTERP); +__code cbc_sec_n(INTERP); +__code cbc_asec_n(INTERP); +__code cbc_sinh_n(INTERP); +__code cbc_cosh_n(INTERP); +__code cbc_tanh_n(INTERP); +__code cbc_sech_n(INTERP); +__code cbc_sqrt_n(INTERP); +__code cbc_log_n(INTERP); +__code cbc_exp_n(INTERP); +__code cbc_coerce_in(INTERP); +__code cbc_coerce_ni(INTERP); +__code cbc_coerce_is(INTERP); +__code cbc_coerce_ns(INTERP); +__code cbc_coerce_si(INTERP); +__code cbc_coerce_sn(INTERP); +__code cbc_smrt_numify(INTERP); +__code cbc_smrt_strify(INTERP); +__code cbc_prepargs(INTERP); +__code cbc_arg_i(INTERP); +__code cbc_arg_n(INTERP); +__code cbc_arg_s(INTERP); +__code cbc_arg_o(INTERP); +__code cbc_argconst_i(INTERP); +__code cbc_argconst_n(INTERP); +__code cbc_argconst_s(INTERP); +__code cbc_invoke_v(INTERP); +__code cbc_invoke_i(INTERP); +__code cbc_invoke_n(INTERP); +__code cbc_invoke_s(INTERP); +__code cbc_invoke_o(INTERP); +__code cbc_checkarity(INTERP); +__code cbc_param_rp_i(INTERP); +__code cbc_param_rp_n(INTERP); +__code cbc_param_rp_s(INTERP); +__code cbc_param_rp_o(INTERP); +__code cbc_param_op_i(INTERP); +__code cbc_param_op_n(INTERP); +__code cbc_param_op_s(INTERP); +__code cbc_param_op_o(INTERP); +__code cbc_param_rn_i(INTERP); +__code cbc_param_rn_n(INTERP); +__code cbc_param_rn_s(INTERP); +__code cbc_param_rn_o(INTERP); +__code cbc_param_on_i(INTERP); +__code cbc_param_on_n(INTERP); +__code cbc_param_on_s(INTERP); +__code cbc_param_on_o(INTERP); +__code cbc_param_sp(INTERP); +__code cbc_param_sn(INTERP); +__code cbc_getcode(INTERP); +__code cbc_caller(INTERP); +__code cbc_capturelex(INTERP); +__code cbc_takeclosure(INTERP); +__code cbc_exception(INTERP); +__code cbc_bindexmessage(INTERP); +__code cbc_bindexpayload(INTERP); +__code cbc_bindexcategory(INTERP); +__code cbc_getexmessage(INTERP); +__code cbc_getexpayload(INTERP); +__code cbc_getexcategory(INTERP); +__code cbc_throwdyn(INTERP); +__code cbc_throwlex(INTERP); +__code cbc_throwlexotic(INTERP); +__code cbc_throwcatdyn(INTERP); +__code cbc_throwcatlex(INTERP); +__code cbc_throwcatlexotic(INTERP); +__code cbc_die(INTERP); +__code cbc_rethrow(INTERP); +__code cbc_resume(INTERP); +__code cbc_takehandlerresult(INTERP); +__code cbc_DEPRECATED_33(INTERP); +__code cbc_DEPRECATED_34(INTERP); +__code cbc_backtracestrings(INTERP); +__code cbc_usecapture(INTERP); +__code cbc_savecapture(INTERP); +__code cbc_captureposelems(INTERP); +__code cbc_captureposarg(INTERP); +__code cbc_captureposarg_i(INTERP); +__code cbc_captureposarg_n(INTERP); +__code cbc_captureposarg_s(INTERP); +__code cbc_captureposprimspec(INTERP); +__code cbc_captureexistsnamed(INTERP); +__code cbc_capturehasnameds(INTERP); +__code cbc_invokewithcapture(INTERP); +__code cbc_multicacheadd(INTERP); +__code cbc_multicachefind(INTERP); +__code cbc_null_s(INTERP); +__code cbc_isnull_s(INTERP); +__code cbc_eq_s(INTERP); +__code cbc_ne_s(INTERP); +__code cbc_gt_s(INTERP); +__code cbc_ge_s(INTERP); +__code cbc_lt_s(INTERP); +__code cbc_le_s(INTERP); +__code cbc_cmp_s(INTERP); +__code cbc_eqat_s(INTERP); +__code cbc_eqatic_s(INTERP); +__code cbc_haveat_s(INTERP); +__code cbc_concat_s(INTERP); +__code cbc_repeat_s(INTERP); +__code cbc_substr_s(INTERP); +__code cbc_index_s(INTERP); +__code cbc_graphs_s(INTERP); +__code cbc_codes_s(INTERP); +__code cbc_getcp_s(INTERP); +__code cbc_indexcp_s(INTERP); +__code cbc_uc(INTERP); +__code cbc_lc(INTERP); +__code cbc_tc(INTERP); +__code cbc_split(INTERP); +__code cbc_join(INTERP); +__code cbc_getcpbyname(INTERP); +__code cbc_indexat(INTERP); +__code cbc_indexnat(INTERP); +__code cbc_unipropcode(INTERP); +__code cbc_unipvalcode(INTERP); +__code cbc_hasuniprop(INTERP); +__code cbc_hasunipropc(INTERP); +__code cbc_chars(INTERP); +__code cbc_chr(INTERP); +__code cbc_ordfirst(INTERP); +__code cbc_ordat(INTERP); +__code cbc_rindexfrom(INTERP); +__code cbc_escape(INTERP); +__code cbc_flip(INTERP); +__code cbc_setbuffersize_fh(INTERP); +__code cbc_iscclass(INTERP); +__code cbc_findcclass(INTERP); +__code cbc_findnotcclass(INTERP); +__code cbc_nfafromstatelist(INTERP); +__code cbc_nfarunproto(INTERP); +__code cbc_nfarunalt(INTERP); +__code cbc_radix(INTERP); +__code cbc_encode(INTERP); +__code cbc_decode(INTERP); +__code cbc_istrue_s(INTERP); +__code cbc_isfalse_s(INTERP); +__code cbc_null(INTERP); +__code cbc_isnull(INTERP); +__code cbc_ifnonnull(INTERP); +__code cbc_findmeth(INTERP); +__code cbc_findmeth_s(INTERP); +__code cbc_can(INTERP); +__code cbc_can_s(INTERP); +__code cbc_create(INTERP); +__code cbc_clone(INTERP); +__code cbc_isconcrete(INTERP); +__code cbc_rebless(INTERP); +__code cbc_istype(INTERP); +__code cbc_objprimspec(INTERP); +__code cbc_gethow(INTERP); +__code cbc_getwhat(INTERP); +__code cbc_getwho(INTERP); +__code cbc_setwho(INTERP); +__code cbc_reprname(INTERP); +__code cbc_getwhere(INTERP); +__code cbc_eqaddr(INTERP); +__code cbc_bindattr_i(INTERP); +__code cbc_bindattr_n(INTERP); +__code cbc_bindattr_s(INTERP); +__code cbc_bindattr_o(INTERP); +__code cbc_bindattrs_i(INTERP); +__code cbc_bindattrs_n(INTERP); +__code cbc_bindattrs_s(INTERP); +__code cbc_bindattrs_o(INTERP); +__code cbc_getattr_i(INTERP); +__code cbc_getattr_n(INTERP); +__code cbc_getattr_s(INTERP); +__code cbc_getattr_o(INTERP); +__code cbc_getattrs_i(INTERP); +__code cbc_getattrs_n(INTERP); +__code cbc_getattrs_s(INTERP); +__code cbc_getattrs_o(INTERP); +__code cbc_attrinited(INTERP); +__code cbc_box_i(INTERP); +__code cbc_box_n(INTERP); +__code cbc_box_s(INTERP); +__code cbc_unbox_i(INTERP); +__code cbc_unbox_n(INTERP); +__code cbc_unbox_s(INTERP); +__code cbc_atpos_i(INTERP); +__code cbc_atpos_n(INTERP); +__code cbc_atpos_s(INTERP); +__code cbc_atpos_o(INTERP); +__code cbc_bindpos_i(INTERP); +__code cbc_bindpos_n(INTERP); +__code cbc_bindpos_s(INTERP); +__code cbc_bindpos_o(INTERP); +__code cbc_push_i(INTERP); +__code cbc_push_n(INTERP); +__code cbc_push_s(INTERP); +__code cbc_push_o(INTERP); +__code cbc_pop_i(INTERP); +__code cbc_pop_n(INTERP); +__code cbc_pop_s(INTERP); +__code cbc_pop_o(INTERP); +__code cbc_shift_i(INTERP); +__code cbc_shift_n(INTERP); +__code cbc_shift_s(INTERP); +__code cbc_shift_o(INTERP); +__code cbc_unshift_i(INTERP); +__code cbc_unshift_n(INTERP); +__code cbc_unshift_s(INTERP); +__code cbc_unshift_o(INTERP); +__code cbc_splice(INTERP); +__code cbc_setelemspos(INTERP); +__code cbc_existspos(INTERP); +__code cbc_atkey_i(INTERP); +__code cbc_atkey_n(INTERP); +__code cbc_atkey_s(INTERP); +__code cbc_atkey_o(INTERP); +__code cbc_bindkey_i(INTERP); +__code cbc_bindkey_n(INTERP); +__code cbc_bindkey_s(INTERP); +__code cbc_bindkey_o(INTERP); +__code cbc_existskey(INTERP); +__code cbc_deletekey(INTERP); +__code cbc_elems(INTERP); +__code cbc_knowhow(INTERP); +__code cbc_knowhowattr(INTERP); +__code cbc_newtype(INTERP); +__code cbc_composetype(INTERP); +__code cbc_setmethcache(INTERP); +__code cbc_setmethcacheauth(INTERP); +__code cbc_settypecache(INTERP); +__code cbc_settypecheckmode(INTERP); +__code cbc_setboolspec(INTERP); +__code cbc_istrue(INTERP); +__code cbc_isfalse(INTERP); +__code cbc_bootint(INTERP); +__code cbc_bootnum(INTERP); +__code cbc_bootstr(INTERP); +__code cbc_bootarray(INTERP); +__code cbc_bootintarray(INTERP); +__code cbc_bootnumarray(INTERP); +__code cbc_bootstrarray(INTERP); +__code cbc_boothash(INTERP); +__code cbc_isint(INTERP); +__code cbc_isnum(INTERP); +__code cbc_isstr(INTERP); +__code cbc_islist(INTERP); +__code cbc_ishash(INTERP); +__code cbc_sethllconfig(INTERP); +__code cbc_hllboxtype_i(INTERP); +__code cbc_hllboxtype_n(INTERP); +__code cbc_hllboxtype_s(INTERP); +__code cbc_hlllist(INTERP); +__code cbc_hllhash(INTERP); +__code cbc_getcomp(INTERP); +__code cbc_bindcomp(INTERP); +__code cbc_getcurhllsym(INTERP); +__code cbc_bindcurhllsym(INTERP); +__code cbc_gethllsym(INTERP); +__code cbc_bindhllsym(INTERP); +__code cbc_settypehll(INTERP); +__code cbc_settypehllrole(INTERP); +__code cbc_hllize(INTERP); +__code cbc_hllizefor(INTERP); +__code cbc_usecompileehllconfig(INTERP); +__code cbc_usecompilerhllconfig(INTERP); +__code cbc_iter(INTERP); +__code cbc_iterkey_s(INTERP); +__code cbc_iterval(INTERP); +__code cbc_getcodename(INTERP); +__code cbc_iscoderef(INTERP); +__code cbc_getcodeobj(INTERP); +__code cbc_setcodeobj(INTERP); +__code cbc_setcodename(INTERP); +__code cbc_forceouterctx(INTERP); +__code cbc_setinvokespec(INTERP); +__code cbc_isinvokable(INTERP); +__code cbc_freshcoderef(INTERP); +__code cbc_markcodestatic(INTERP); +__code cbc_markcodestub(INTERP); +__code cbc_getstaticcode(INTERP); +__code cbc_getcodecuid(INTERP); +__code cbc_setdispatcher(INTERP); +__code cbc_takedispatcher(INTERP); +__code cbc_assign(INTERP); +__code cbc_assignunchecked(INTERP); +__code cbc_iscont(INTERP); +__code cbc_decont(INTERP); +__code cbc_setcontspec(INTERP); +__code cbc_sha1(INTERP); +__code cbc_createsc(INTERP); +__code cbc_scsetobj(INTERP); +__code cbc_scsetcode(INTERP); +__code cbc_scgetobj(INTERP); +__code cbc_scgethandle(INTERP); +__code cbc_scgetobjidx(INTERP); +__code cbc_scsetdesc(INTERP); +__code cbc_scobjcount(INTERP); +__code cbc_setobjsc(INTERP); +__code cbc_getobjsc(INTERP); +__code cbc_serialize(INTERP); +__code cbc_deserialize(INTERP); +__code cbc_wval(INTERP); +__code cbc_wval_wide(INTERP); +__code cbc_scwbdisable(INTERP); +__code cbc_scwbenable(INTERP); +__code cbc_pushcompsc(INTERP); +__code cbc_popcompsc(INTERP); +__code cbc_scgetdesc(INTERP); +__code cbc_loadbytecode(INTERP); +__code cbc_masttofile(INTERP); +__code cbc_masttocu(INTERP); +__code cbc_iscompunit(INTERP); +__code cbc_compunitmainline(INTERP); +__code cbc_compunitcodes(INTERP); +__code cbc_ctx(INTERP); +__code cbc_ctxouter(INTERP); +__code cbc_ctxcaller(INTERP); +__code cbc_ctxlexpad(INTERP); +__code cbc_curcode(INTERP); +__code cbc_callercode(INTERP); +__code cbc_add_I(INTERP); +__code cbc_sub_I(INTERP); +__code cbc_mul_I(INTERP); +__code cbc_div_I(INTERP); +__code cbc_mod_I(INTERP); +__code cbc_neg_I(INTERP); +__code cbc_abs_I(INTERP); +__code cbc_cmp_I(INTERP); +__code cbc_eq_I(INTERP); +__code cbc_ne_I(INTERP); +__code cbc_lt_I(INTERP); +__code cbc_le_I(INTERP); +__code cbc_gt_I(INTERP); +__code cbc_ge_I(INTERP); +__code cbc_bor_I(INTERP); +__code cbc_bxor_I(INTERP); +__code cbc_band_I(INTERP); +__code cbc_bnot_I(INTERP); +__code cbc_blshift_I(INTERP); +__code cbc_brshift_I(INTERP); +__code cbc_pow_I(INTERP); +__code cbc_gcd_I(INTERP); +__code cbc_lcm_I(INTERP); +__code cbc_expmod_I(INTERP); +__code cbc_isprime_I(INTERP); +__code cbc_rand_I(INTERP); +__code cbc_coerce_In(INTERP); +__code cbc_coerce_Is(INTERP); +__code cbc_coerce_nI(INTERP); +__code cbc_coerce_sI(INTERP); +__code cbc_isbig_I(INTERP); +__code cbc_bool_I(INTERP); +__code cbc_base_I(INTERP); +__code cbc_radix_I(INTERP); +__code cbc_div_In(INTERP); +__code cbc_copy_f(INTERP); +__code cbc_append_f(INTERP); +__code cbc_rename_f(INTERP); +__code cbc_delete_f(INTERP); +__code cbc_chmod_f(INTERP); +__code cbc_exists_f(INTERP); +__code cbc_mkdir(INTERP); +__code cbc_rmdir(INTERP); +__code cbc_open_dir(INTERP); +__code cbc_read_dir(INTERP); +__code cbc_close_dir(INTERP); +__code cbc_open_fh(INTERP); +__code cbc_close_fh(INTERP); +__code cbc_DEPRECATED_23(INTERP); +__code cbc_DEPRECATED_27(INTERP); +__code cbc_DEPRECATED_28(INTERP); +__code cbc_DEPRECATED_18(INTERP); +__code cbc_seek_fh(INTERP); +__code cbc_lock_fh(INTERP); +__code cbc_unlock_fh(INTERP); +__code cbc_sync_fh(INTERP); +__code cbc_trunc_fh(INTERP); +__code cbc_eof_fh(INTERP); +__code cbc_getstdin(INTERP); +__code cbc_getstdout(INTERP); +__code cbc_getstderr(INTERP); +__code cbc_connect_sk(INTERP); +__code cbc_socket(INTERP); +__code cbc_bind_sk(INTERP); +__code cbc_DEPRECATED_24(INTERP); +__code cbc_accept_sk(INTERP); +__code cbc_decodetocodes(INTERP); +__code cbc_encodefromcodes(INTERP); +__code cbc_DEPRECATED_17(INTERP); +__code cbc_print(INTERP); +__code cbc_say(INTERP); +__code cbc_DEPRECATED_22(INTERP); +__code cbc_tell_fh(INTERP); +__code cbc_stat(INTERP); +__code cbc_tryfindmeth(INTERP); +__code cbc_tryfindmeth_s(INTERP); +__code cbc_chdir(INTERP); +__code cbc_srand(INTERP); +__code cbc_rand_i(INTERP); +__code cbc_rand_n(INTERP); +__code cbc_time_i(INTERP); +__code cbc_sleep(INTERP); +__code cbc_newthread(INTERP); +__code cbc_threadjoin(INTERP); +__code cbc_time_n(INTERP); +__code cbc_exit(INTERP); +__code cbc_DEPRECATED_30(INTERP); +__code cbc_cwd(INTERP); +__code cbc_clargs(INTERP); +__code cbc_getenvhash(INTERP); +__code cbc_loadlib(INTERP); +__code cbc_freelib(INTERP); +__code cbc_findsym(INTERP); +__code cbc_dropsym(INTERP); +__code cbc_loadext(INTERP); +__code cbc_backendconfig(INTERP); +__code cbc_getlexouter(INTERP); +__code cbc_getlexrel(INTERP); +__code cbc_getlexreldyn(INTERP); +__code cbc_getlexrelcaller(INTERP); +__code cbc_getlexcaller(INTERP); +__code cbc_bitand_s(INTERP); +__code cbc_bitor_s(INTERP); +__code cbc_bitxor_s(INTERP); +__code cbc_isnanorinf(INTERP); +__code cbc_inf(INTERP); +__code cbc_neginf(INTERP); +__code cbc_nan(INTERP); +__code cbc_getpid(INTERP); +__code cbc_DEPRECATED_29(INTERP); +__code cbc_filereadable(INTERP); +__code cbc_filewritable(INTERP); +__code cbc_fileexecutable(INTERP); +__code cbc_DEPRECATED_19(INTERP); +__code cbc_capturenamedshash(INTERP); +__code cbc_read_fhb(INTERP); +__code cbc_write_fhb(INTERP); +__code cbc_replace(INTERP); +__code cbc_newexception(INTERP); +__code cbc_permit(INTERP); +__code cbc_backtrace(INTERP); +__code cbc_symlink(INTERP); +__code cbc_link(INTERP); +__code cbc_gethostname(INTERP); +__code cbc_exreturnafterunwind(INTERP); +__code cbc_DEPRECATED_13(INTERP); +__code cbc_continuationreset(INTERP); +__code cbc_continuationcontrol(INTERP); +__code cbc_continuationinvoke(INTERP); +__code cbc_randscale_n(INTERP); +__code cbc_uniisblock(INTERP); +__code cbc_assertparamcheck(INTERP); +__code cbc_hintfor(INTERP); +__code cbc_paramnamesused(INTERP); +__code cbc_getuniname(INTERP); +__code cbc_getuniprop_int(INTERP); +__code cbc_getuniprop_bool(INTERP); +__code cbc_getuniprop_str(INTERP); +__code cbc_matchuniprop(INTERP); +__code cbc_nativecallbuild(INTERP); +__code cbc_nativecallinvoke(INTERP); +__code cbc_nativecallrefresh(INTERP); +__code cbc_threadrun(INTERP); +__code cbc_threadid(INTERP); +__code cbc_threadyield(INTERP); +__code cbc_currentthread(INTERP); +__code cbc_lock(INTERP); +__code cbc_unlock(INTERP); +__code cbc_semacquire(INTERP); +__code cbc_semtryacquire(INTERP); +__code cbc_semrelease(INTERP); +__code cbc_getlockcondvar(INTERP); +__code cbc_condwait(INTERP); +__code cbc_condsignalone(INTERP); +__code cbc_condsignalall(INTERP); +__code cbc_queuepoll(INTERP); +__code cbc_setmultispec(INTERP); +__code cbc_ctxouterskipthunks(INTERP); +__code cbc_ctxcallerskipthunks(INTERP); +__code cbc_timer(INTERP); +__code cbc_cancel(INTERP); +__code cbc_signal(INTERP); +__code cbc_watchfile(INTERP); +__code cbc_asyncconnect(INTERP); +__code cbc_asynclisten(INTERP); +__code cbc_DEPRECATED_14(INTERP); +__code cbc_asyncwritebytes(INTERP); +__code cbc_DEPRECATED_16(INTERP); +__code cbc_asyncreadbytes(INTERP); +__code cbc_getlexstatic_o(INTERP); +__code cbc_getlexperinvtype_o(INTERP); +__code cbc_execname(INTERP); +__code cbc_const_i64_16(INTERP); +__code cbc_const_i64_32(INTERP); +__code cbc_isnonnull(INTERP); +__code cbc_param_rn2_i(INTERP); +__code cbc_param_rn2_n(INTERP); +__code cbc_param_rn2_s(INTERP); +__code cbc_param_rn2_o(INTERP); +__code cbc_param_on2_i(INTERP); +__code cbc_param_on2_n(INTERP); +__code cbc_param_on2_s(INTERP); +__code cbc_param_on2_o(INTERP); +__code cbc_osrpoint(INTERP); +__code cbc_nativecallcast(INTERP); +__code cbc_spawnprocasync(INTERP); +__code cbc_killprocasync(INTERP); +__code cbc_startprofile(INTERP); +__code cbc_endprofile(INTERP); +__code cbc_objectid(INTERP); +__code cbc_settypefinalize(INTERP); +__code cbc_force_gc(INTERP); +__code cbc_nativecallglobal(INTERP); +__code cbc_DEPRECATED_32(INTERP); +__code cbc_setparameterizer(INTERP); +__code cbc_parameterizetype(INTERP); +__code cbc_typeparameterized(INTERP); +__code cbc_typeparameters(INTERP); +__code cbc_typeparameterat(INTERP); +__code cbc_readlink(INTERP); +__code cbc_lstat(INTERP); +__code cbc_iscont_i(INTERP); +__code cbc_iscont_n(INTERP); +__code cbc_iscont_s(INTERP); +__code cbc_assign_i(INTERP); +__code cbc_assign_n(INTERP); +__code cbc_assign_s(INTERP); +__code cbc_decont_i(INTERP); +__code cbc_decont_n(INTERP); +__code cbc_decont_s(INTERP); +__code cbc_getrusage(INTERP); +__code cbc_threadlockcount(INTERP); +__code cbc_DEPRECATED_4(INTERP); +__code cbc_getlexref_i(INTERP); +__code cbc_getlexref_n(INTERP); +__code cbc_getlexref_s(INTERP); +__code cbc_getlexref_ni(INTERP); +__code cbc_getlexref_nn(INTERP); +__code cbc_getlexref_ns(INTERP); +__code cbc_atposref_i(INTERP); +__code cbc_atposref_n(INTERP); +__code cbc_atposref_s(INTERP); +__code cbc_getattrref_i(INTERP); +__code cbc_getattrref_n(INTERP); +__code cbc_getattrref_s(INTERP); +__code cbc_getattrsref_i(INTERP); +__code cbc_getattrsref_n(INTERP); +__code cbc_getattrsref_s(INTERP); +__code cbc_nativecallsizeof(INTERP); +__code cbc_encodenorm(INTERP); +__code cbc_normalizecodes(INTERP); +__code cbc_strfromcodes(INTERP); +__code cbc_strtocodes(INTERP); +__code cbc_getcodelocation(INTERP); +__code cbc_eqatim_s(INTERP); +__code cbc_ordbaseat(INTERP); +__code cbc_neverrepossess(INTERP); +__code cbc_scdisclaim(INTERP); +__code cbc_DEPRECATED_31(INTERP); +__code cbc_atpos2d_i(INTERP); +__code cbc_atpos2d_n(INTERP); +__code cbc_atpos2d_s(INTERP); +__code cbc_atpos2d_o(INTERP); +__code cbc_atpos3d_i(INTERP); +__code cbc_atpos3d_n(INTERP); +__code cbc_atpos3d_s(INTERP); +__code cbc_atpos3d_o(INTERP); +__code cbc_atposnd_i(INTERP); +__code cbc_atposnd_n(INTERP); +__code cbc_atposnd_s(INTERP); +__code cbc_atposnd_o(INTERP); +__code cbc_bindpos2d_i(INTERP); +__code cbc_bindpos2d_n(INTERP); +__code cbc_bindpos2d_s(INTERP); +__code cbc_bindpos2d_o(INTERP); +__code cbc_bindpos3d_i(INTERP); +__code cbc_bindpos3d_n(INTERP); +__code cbc_bindpos3d_s(INTERP); +__code cbc_bindpos3d_o(INTERP); +__code cbc_bindposnd_i(INTERP); +__code cbc_bindposnd_n(INTERP); +__code cbc_bindposnd_s(INTERP); +__code cbc_bindposnd_o(INTERP); +__code cbc_dimensions(INTERP); +__code cbc_setdimensions(INTERP); +__code cbc_numdimensions(INTERP); +__code cbc_ctxcode(INTERP); +__code cbc_isrwcont(INTERP); +__code cbc_fc(INTERP); +__code cbc_DEPRECATED_25(INTERP); +__code cbc_DEPRECATED_21(INTERP); +__code cbc_encoderep(INTERP); +__code cbc_istty_fh(INTERP); +__code cbc_multidimref_i(INTERP); +__code cbc_multidimref_n(INTERP); +__code cbc_multidimref_s(INTERP); +__code cbc_fileno_fh(INTERP); +__code cbc_asyncudp(INTERP); +__code cbc_DEPRECATED_15(INTERP); +__code cbc_asyncwritebytesto(INTERP); +__code cbc_objprimbits(INTERP); +__code cbc_objprimunsigned(INTERP); +__code cbc_DEPRECATED_5(INTERP); +__code cbc_DEPRECATED_6(INTERP); +__code cbc_DEPRECATED_7(INTERP); +__code cbc_DEPRECATED_8(INTERP); +__code cbc_getlexref_i32(INTERP); +__code cbc_getlexref_i16(INTERP); +__code cbc_getlexref_i8(INTERP); +__code cbc_getlexref_n32(INTERP); +__code cbc_box_u(INTERP); +__code cbc_unbox_u(INTERP); +__code cbc_coerce_iu(INTERP); +__code cbc_coerce_ui(INTERP); +__code cbc_coerce_nu(INTERP); +__code cbc_coerce_un(INTERP); +__code cbc_decont_u(INTERP); +__code cbc_DEPRECATED_9(INTERP); +__code cbc_DEPRECATED_10(INTERP); +__code cbc_DEPRECATED_11(INTERP); +__code cbc_DEPRECATED_12(INTERP); +__code cbc_getlexref_u(INTERP); +__code cbc_getlexref_u32(INTERP); +__code cbc_getlexref_u16(INTERP); +__code cbc_getlexref_u8(INTERP); +__code cbc_param_rp_u(INTERP); +__code cbc_param_op_u(INTERP); +__code cbc_param_rn_u(INTERP); +__code cbc_param_on_u(INTERP); +__code cbc_param_rn2_u(INTERP); +__code cbc_param_on2_u(INTERP); +__code cbc_stat_time(INTERP); +__code cbc_lstat_time(INTERP); +__code cbc_setdebugtypename(INTERP); +__code cbc_loadbytecodebuffer(INTERP); +__code cbc_loadbytecodefh(INTERP); +__code cbc_throwpayloadlex(INTERP); +__code cbc_throwpayloadlexcaller(INTERP); +__code cbc_lastexpayload(INTERP); +__code cbc_cancelnotify(INTERP); +__code cbc_decoderconfigure(INTERP); +__code cbc_decodersetlineseps(INTERP); +__code cbc_decoderaddbytes(INTERP); +__code cbc_decodertakechars(INTERP); +__code cbc_decodertakeallchars(INTERP); +__code cbc_decodertakeavailablechars(INTERP); +__code cbc_decodertakeline(INTERP); +__code cbc_decoderbytesavailable(INTERP); +__code cbc_decodertakebytes(INTERP); +__code cbc_decoderempty(INTERP); +__code cbc_indexingoptimized(INTERP); +__code cbc_captureinnerlex(INTERP); +__code cbc_unicmp_s(INTERP); +__code cbc_setdispatcherfor(INTERP); +__code cbc_getstrfromname(INTERP); +__code cbc_indexic_s(INTERP); +__code cbc_getport_sk(INTERP); +__code cbc_cpucores(INTERP); +__code cbc_eqaticim_s(INTERP); +__code cbc_indexicim_s(INTERP); +__code cbc_decodertakecharseof(INTERP); +__code cbc_indexim_s(INTERP); +__code cbc_cas_o(INTERP); +__code cbc_cas_i(INTERP); +__code cbc_atomicinc_i(INTERP); +__code cbc_atomicdec_i(INTERP); +__code cbc_atomicadd_i(INTERP); +__code cbc_atomicload_o(INTERP); +__code cbc_atomicload_i(INTERP); +__code cbc_atomicstore_o(INTERP); +__code cbc_atomicstore_i(INTERP); +__code cbc_barrierfull(INTERP); +__code cbc_coveragecontrol(INTERP); +__code cbc_nativeinvoke_v(INTERP); +__code cbc_nativeinvoke_i(INTERP); +__code cbc_nativeinvoke_n(INTERP); +__code cbc_nativeinvoke_s(INTERP); +__code cbc_nativeinvoke_o(INTERP); +__code cbc_getarg_i(INTERP); +__code cbc_getarg_n(INTERP); +__code cbc_getarg_s(INTERP); +__code cbc_getarg_o(INTERP); +__code cbc_coerce_II(INTERP); +__code cbc_encoderepconf(INTERP); +__code cbc_encodeconf(INTERP); +__code cbc_decodeconf(INTERP); +__code cbc_decoderepconf(INTERP); +__code cbc_getppid(INTERP); +__code cbc_getsignals(INTERP); +__code cbc_sp_guard(INTERP); +__code cbc_sp_guardconc(INTERP); +__code cbc_sp_guardtype(INTERP); +__code cbc_sp_guardsf(INTERP); +__code cbc_sp_guardsfouter(INTERP); +__code cbc_sp_rebless(INTERP); +__code cbc_sp_resolvecode(INTERP); +__code cbc_sp_decont(INTERP); +__code cbc_sp_getlex_o(INTERP); +__code cbc_sp_getlex_ins(INTERP); +__code cbc_sp_getlex_no(INTERP); +__code cbc_sp_getarg_o(INTERP); +__code cbc_sp_getarg_i(INTERP); +__code cbc_sp_getarg_n(INTERP); +__code cbc_sp_getarg_s(INTERP); +__code cbc_sp_fastinvoke_v(INTERP); +__code cbc_sp_fastinvoke_i(INTERP); +__code cbc_sp_fastinvoke_n(INTERP); +__code cbc_sp_fastinvoke_s(INTERP); +__code cbc_sp_fastinvoke_o(INTERP); +__code cbc_sp_paramnamesused(INTERP); +__code cbc_sp_getspeshslot(INTERP); +__code cbc_sp_findmeth(INTERP); +__code cbc_sp_fastcreate(INTERP); +__code cbc_sp_get_o(INTERP); +__code cbc_sp_get_i64(INTERP); +__code cbc_sp_get_i32(INTERP); +__code cbc_sp_get_i16(INTERP); +__code cbc_sp_get_i8(INTERP); +__code cbc_sp_get_n(INTERP); +__code cbc_sp_get_s(INTERP); +__code cbc_sp_bind_o(INTERP); +__code cbc_sp_bind_i64(INTERP); +__code cbc_sp_bind_i32(INTERP); +__code cbc_sp_bind_i16(INTERP); +__code cbc_sp_bind_i8(INTERP); +__code cbc_sp_bind_n(INTERP); +__code cbc_sp_bind_s(INTERP); +__code cbc_sp_p6oget_o(INTERP); +__code cbc_sp_p6ogetvt_o(INTERP); +__code cbc_sp_p6ogetvc_o(INTERP); +__code cbc_sp_p6oget_i(INTERP); +__code cbc_sp_p6oget_n(INTERP); +__code cbc_sp_p6oget_s(INTERP); +__code cbc_sp_p6obind_o(INTERP); +__code cbc_sp_p6obind_i(INTERP); +__code cbc_sp_p6obind_n(INTERP); +__code cbc_sp_p6obind_s(INTERP); +__code cbc_sp_deref_get_i64(INTERP); +__code cbc_sp_deref_get_n(INTERP); +__code cbc_sp_deref_bind_i64(INTERP); +__code cbc_sp_deref_bind_n(INTERP); +__code cbc_sp_getlexvia_o(INTERP); +__code cbc_sp_getlexvia_ins(INTERP); +__code cbc_sp_getstringfrom(INTERP); +__code cbc_sp_getwvalfrom(INTERP); +__code cbc_sp_jit_enter(INTERP); +__code cbc_sp_boolify_iter(INTERP); +__code cbc_sp_boolify_iter_arr(INTERP); +__code cbc_sp_boolify_iter_hash(INTERP); +__code cbc_sp_cas_o(INTERP); +__code cbc_sp_atomicload_o(INTERP); +__code cbc_sp_atomicstore_o(INTERP); +__code cbc_prof_enter(INTERP); +__code cbc_prof_enterspesh(INTERP); +__code cbc_prof_enterinline(INTERP); +__code cbc_prof_enternative(INTERP); +__code cbc_prof_exit(INTERP); +__code cbc_prof_allocated(INTERP); +__code cbc_ctw_check(INTERP); +__code cbc_coverage_log(INTERP); +__code cbc_breakpoint(INTERP); + + __code (* CODES[])(INTERP) = { cbc_no_op, cbc_const_i8, cbc_const_i16,