Support for __builtin_expect and __builtin_choose_expr
[p5sagit/p5-mst-13.2.git] / embed.fnc
index a1c3d22..cdb03c7 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -406,7 +406,6 @@ p   |int    |magic_freeovrld|NN SV* sv|NN MAGIC* mg
 p      |int    |magic_get      |NN SV* sv|NN MAGIC* mg
 p      |int    |magic_getarylen|NN SV* sv|NN const MAGIC* mg
 p      |int    |magic_getdefelem|NN SV* sv|NN MAGIC* mg
-p      |int    |magic_getglob  |NN SV* sv|NN MAGIC* mg
 p      |int    |magic_getnkeys |NN SV* sv|NN MAGIC* mg
 p      |int    |magic_getpack  |NN SV* sv|NN MAGIC* mg
 p      |int    |magic_getpos   |NN SV* sv|NN MAGIC* mg
@@ -539,8 +538,8 @@ Apa |OP*    |newLISTOP      |I32 type|I32 flags|NULLOK OP* first|NULLOK OP* last
 Apa    |OP*    |newPADOP       |I32 type|I32 flags|NULLOK SV* sv
 Apa    |OP*    |newPMOP        |I32 type|I32 flags
 Apa    |OP*    |newPVOP        |I32 type|I32 flags|NULLOK char* pv
-Apa    |SV*    |newRV          |NN SV* pref
-Apda   |SV*    |newRV_noinc    |NN SV *sv
+Apa    |SV*    |newRV          |NN SV* sv
+Apda   |SV*    |newRV_noinc    |NN SV* sv
 Apda   |SV*    |newSV          |STRLEN len
 Apa    |OP*    |newSVREF       |NN OP* o
 Apa    |OP*    |newSVOP        |I32 type|I32 flags|NN SV* sv
@@ -666,7 +665,7 @@ Apda        |char*  |savesharedpv   |NULLOK const char* pv
 Apda   |char*  |savesvpv       |NN SV* sv
 Ap     |void   |savestack_grow
 Ap     |void   |savestack_grow_cnt     |I32 need
-Ap     |void   |save_aelem     |NN const AV* av|I32 idx|NN SV **sptr
+Ap     |void   |save_aelem     |NN AV* av|I32 idx|NN SV **sptr
 Ap     |I32    |save_alloc     |I32 size|I32 pad
 Ap     |void   |save_aptr      |NN AV** aptr
 Ap     |AV*    |save_ary       |NN GV* gv
@@ -734,6 +733,9 @@ p   |void   |sub_crush_depth|NN CV* cv
 Apd    |bool   |sv_2bool       |NN SV* sv
 Apd    |CV*    |sv_2cv         |NULLOK SV* sv|NN HV** st|NN GV** gvp|I32 lref
 Apd    |IO*    |sv_2io         |NN SV* sv
+#ifdef PERL_IN_SV_C
+s      |char*  |glob_2inpuv    |NN GV* gv|NULLOK STRLEN *len|bool want_number
+#endif
 Amb    |IV     |sv_2iv         |NN SV* sv
 Apd    |IV     |sv_2iv_flags   |NN SV* sv|I32 flags
 Apd    |SV*    |sv_2mortal     |NULLOK SV* sv
@@ -1042,12 +1044,12 @@ paRxo   |void*  |get_arena      |int svtype
 s      |void   |hsplit         |NN HV *hv
 s      |void   |hfreeentries   |NN HV *hv
 sa     |HE*    |new_he
-sa     |HEK*   |save_hek_flags |NN const char *str|I32 len|U32 hash|int flags
-s      |void   |hv_magic_check |NN HV *hv|NN bool *needs_copy|NN bool *needs_store
+sanR   |HEK*   |save_hek_flags |NN const char *str|I32 len|U32 hash|int flags
+sn     |void   |hv_magic_check |NN HV *hv|NN bool *needs_copy|NN bool *needs_store
 s      |void   |unshare_hek_or_pvn|NULLOK const HEK* hek|NULLOK const char* str|I32 len|U32 hash
 sR     |HEK*   |share_hek_flags|NN const char* sv|I32 len|U32 hash|int flags
 rs     |void   |hv_notallowed  |int flags|NN const char *key|I32 klen|NN const char *msg
-s      |struct xpvhv_aux*|hv_auxinit|NN HV *hv
+sn     |struct xpvhv_aux*|hv_auxinit|NN HV *hv
 sM     |SV*    |hv_delete_common|NULLOK HV* tb|NULLOK SV* keysv|NULLOK const char* key \
                |STRLEN klen|int k_flags|I32 d_flags|U32 hash
 sM     |HE*    |hv_fetch_common|NULLOK HV* tb|NULLOK SV* keysv|NULLOK const char* key \
@@ -1107,7 +1109,7 @@ pR        |OP*    |ck_substr      |NN OP *o
 pR     |OP*    |ck_svconst     |NN OP *o
 pR     |OP*    |ck_trunc       |NN OP *o
 pR     |OP*    |ck_unpack      |NN OP *o
-sR     |bool   |is_handle_constructor|NN const OP *o|I32 numargs
+sRn    |bool   |is_handle_constructor|NN const OP *o|I32 numargs
 sR     |I32    |is_list_assignment|NULLOK const OP *o
 s      |void   |cop_free       |NN COP *cop
 s      |OP*    |modkids        |NULLOK OP *o|I32 type
@@ -1116,7 +1118,7 @@ sR        |OP*    |newDEFSVOP
 sR     |OP*    |new_logop      |I32 type|I32 flags|NN OP **firstp|NN OP **otherp
 s      |void   |simplify_sort  |NN OP *o
 s      |const char*    |gv_ename       |NN GV *gv
-s      |bool   |scalar_mod_type|NN const OP *o|I32 type
+sRn    |bool   |scalar_mod_type|NN const OP *o|I32 type
 s      |OP *   |my_kid         |NULLOK OP *o|NULLOK OP *attrs|NN OP **imopsp
 s      |OP *   |dup_attrlist   |NN OP *o
 s      |void   |apply_attrs    |NN HV *stash|NN SV *target|NULLOK OP *attrs|bool for_my
@@ -1203,7 +1205,7 @@ s |void   |save_lines     |NULLOK AV *array|NN SV *sv
 sR     |OP*    |doeval         |int gimme|NULLOK OP** startop|NULLOK CV* outside|U32 seq
 sR     |PerlIO *|check_type_and_open|NN const char *name|NN const char *mode
 sR     |PerlIO *|doopen_pm     |NN const char *name|NN const char *mode
-sR     |bool   |path_is_absolute|NN const char *name
+sRn    |bool   |path_is_absolute|NN const char *name
 sR     |I32    |run_user_filter|int idx|NN SV *buf_sv|int maxlen
 sR     |PMOP*  |make_matcher   |NN regexp* re
 sR     |bool   |matcher_matches_sv|NN PMOP* matcher|NN SV* sv
@@ -1244,13 +1246,13 @@ Es      |regnode*|regatom       |NN struct RExC_state_t *state|NN I32 *flagp
 Es     |regnode*|regbranch     |NN struct RExC_state_t *state|NN I32 *flagp|I32 first
 Es     |void   |reguni         |NN const struct RExC_state_t *state|UV uv|NN char *s|NN STRLEN *lenp
 Es     |regnode*|regclass      |NN struct RExC_state_t *state
-ERs    |I32    |regcurly       |NN const char *
+ERsn   |I32    |regcurly       |NN const char *
 Es     |regnode*|reg_node      |NN struct RExC_state_t *state|U8 op
 Es     |regnode*|regpiece      |NN struct RExC_state_t *state|NN I32 *flagp
 Es     |void   |reginsert      |NN struct RExC_state_t *state|U8 op|NN regnode *opnd
 Es     |void   |regoptail      |NN struct RExC_state_t *state|NN regnode *p|NN regnode *val
 Es     |void   |regtail        |NN struct RExC_state_t *state|NN regnode *p|NN regnode *val
-Es     |char*  |regwhite       |NN char *p|NN const char *e
+EsRn   |char*  |regwhite       |NN char *p|NN const char *e
 Es     |char*  |nextchar       |NN struct RExC_state_t *state
 #  ifdef DEBUGGING
 Es     |regnode*|dumpuntil     |NN regnode *start|NN regnode *node \
@@ -1258,18 +1260,18 @@ Es      |regnode*|dumpuntil     |NN regnode *start|NN regnode *node \
 Es     |void   |put_byte       |NN SV* sv|int c
 #  endif
 Es     |void   |scan_commit    |NN struct RExC_state_t* state|NN struct scan_data_t *data
-Es     |void   |cl_anything    |NN struct RExC_state_t* state|NN struct regnode_charclass_class *cl
-Es     |int    |cl_is_anything |NN const struct regnode_charclass_class *cl
-Es     |void   |cl_init        |NN struct RExC_state_t* state|NN struct regnode_charclass_class *cl
-Es     |void   |cl_init_zero   |NN struct RExC_state_t* state|NN struct regnode_charclass_class *cl
-Es     |void   |cl_and         |NN struct regnode_charclass_class *cl \
+Esn    |void   |cl_anything    |NN struct RExC_state_t* state|NN struct regnode_charclass_class *cl
+EsRn   |int    |cl_is_anything |NN const struct regnode_charclass_class *cl
+Esn    |void   |cl_init        |NN struct RExC_state_t* state|NN struct regnode_charclass_class *cl
+Esn    |void   |cl_init_zero   |NN struct RExC_state_t* state|NN struct regnode_charclass_class *cl
+Esn    |void   |cl_and         |NN struct regnode_charclass_class *cl \
                                |NN const struct regnode_charclass_class *and_with
-Es     |void   |cl_or          |NN struct RExC_state_t* state|NN struct regnode_charclass_class *cl \
+Esn    |void   |cl_or          |NN struct RExC_state_t* state|NN struct regnode_charclass_class *cl \
                                |NN const struct regnode_charclass_class *or_with
 Es     |I32    |study_chunk    |NN struct RExC_state_t* state|NN regnode **scanp \
                                |NN I32 *deltap|NN regnode *last|NULLOK struct scan_data_t *data \
                                |U32 flags|U32 depth
-Es     |I32    |add_data       |NN struct RExC_state_t* state|I32 n|NN const char *s
+EsRn   |I32    |add_data       |NN struct RExC_state_t* state|I32 n|NN const char *s
 rs     |void   |re_croak2      |NN const char* pat1|NN const char* pat2|...
 Es     |I32    |regpposixcc    |NN struct RExC_state_t* state|I32 value
 Es     |void   |checkposixcc   |NN struct RExC_state_t* state
@@ -1290,9 +1292,9 @@ Es        |CHECKPOINT|regcppush   |I32 parenfloor
 Es     |char*|regcppop
 Es     |void   |cache_re       |NN regexp *prog
 ERs    |U8*    |reghop         |NN U8 *pos|I32 off
-ERs    |U8*    |reghop3        |NN U8 *pos|I32 off|NN U8 *lim
+ERsn   |U8*    |reghop3        |NN U8 *pos|I32 off|NN U8 *lim
 ERs    |U8*    |reghopmaybe    |NN U8 *pos|I32 off
-ERs    |U8*    |reghopmaybe3   |NN U8 *pos|I32 off|NN U8 *lim
+ERsn   |U8*    |reghopmaybe3   |NN U8 *pos|I32 off|NN U8 *lim
 ERs    |char*  |find_byclass   |NN regexp * prog|NN regnode *c|NN char *s|NN const char *strend|I32 norun
 Es     |void   |to_utf8_substr |NN regexp * prog
 Es     |void   |to_byte_substr |NN regexp * prog
@@ -1342,9 +1344,20 @@ s        |bool   |utf8_mg_pos_init       |NN SV *sv|NN MAGIC **mgp \
                                |NN const U8 *s|NN const U8 *start
 s      |char * |stringify_regexp|NN SV *sv|NN MAGIC *mg|NULLOK STRLEN *lp
 sn     |char * |F0convert      |NV nv|NN char *endbuf|NN STRLEN *len
-#if defined(PERL_OLD_COPY_ON_WRITE)
+#  if defined(PERL_OLD_COPY_ON_WRITE)
 sM     |void   |sv_release_COW |NN SV *sv|NN const char *pvx|STRLEN len|NN SV *after
-#endif
+#  endif
+s      |SV *   |more_sv
+s      |void * |more_bodies    |svtype sv_type
+s      |bool   |sv_2iuv_common |NN SV *sv
+s      |void   |glob_assign_glob|NN SV *dstr|NN SV *sstr|const int dtype
+s      |void   |glob_assign_ref|NN SV *dstr|NN SV *sstr
+#  if defined(USE_ITHREADS)
+sRn    |PTR_TBL_ENT_t *|ptr_table_find|NN PTR_TBL_t *tbl|NN const void *sv
+#  endif
+s      |SV *   |find_hash_subscript|NULLOK HV *hv|NN SV *val
+s      |I32    |find_array_subscript|NULLOK AV *av|NN SV *val
+s      |SV *   |find_uninit_var|NULLOK OP *obase|NULLOK SV *uninit_sv|bool match
 #endif
 
 #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
@@ -1409,7 +1422,7 @@ s |char*  |stdize_locale  |NN char* locs
 #endif
 
 #if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
-s      |COP*   |closest_cop    |NN COP *cop|NULLOK const OP *o
+s      |const COP*|closest_cop |NN const COP *cop|NULLOK const OP *o
 s      |SV*    |mess_alloc
 s      |const char *|vdie_croak_common|NULLOK const char *pat|NULLOK va_list *args \
                                |NULLOK STRLEN *msglen|NULLOK I32* utf8
@@ -1423,7 +1436,7 @@ sn        |NV|mulexp10    |NV value|I32 exponent
 #endif
 
 #if defined(PERL_IN_UTF8_C) || defined(PERL_DECL_PROT)
-s      |STRLEN |is_utf8_char_slow|NN const U8 *s|const STRLEN len
+sRn    |STRLEN |is_utf8_char_slow|NN const U8 *s|const STRLEN len
 sR     |bool   |is_utf8_common |NN const U8 *const p|NN SV **swash|NN const char * const swashname
 sR     |SV*    |swash_get      |NN SV* swash|UV start|UV span
 #endif