Lines Matching defs:mg

42  * Pointers to the shared SV are squirrelled away in the mg->mg_ptr field
325 sharedsv_userlock_free(pTHX_ SV *sv, MAGIC *mg)
327 user_lock *ul = (user_lock *) mg->mg_ptr;
334 mg->mg_ptr = NULL;
372 * - in mg.h/mg.c/sv.c sense
401 MAGIC *mg;
410 for (mg = SvMAGIC(ssv); mg; mg = mg->mg_moremagic) {
411 if ((mg->mg_type == PERL_MAGIC_ext) &&
412 (mg->mg_private == UL_MAGIC_SIG))
418 if (mg) {
419 ul = (user_lock*)(mg->mg_ptr);
426 mg = sv_magicext(ssv, NULL, PERL_MAGIC_ext, &sharedsv_userlock_vtbl,
428 mg->mg_private = UL_MAGIC_SIG; /* Set private signature */
444 MAGIC *mg;
449 if ((mg = mg_find(sv, PERL_MAGIC_tied))
450 && mg->mg_virtual == &sharedsv_array_vtbl) {
451 return ((SV *)mg->mg_ptr);
458 if ((mg = mg_find(sv, PERL_MAGIC_shared_scalar))
459 && mg->mg_virtual == &sharedsv_scalar_vtbl) {
460 return ((SV *)mg->mg_ptr);
480 MAGIC *mg = 0;
491 if (!(mg = mg_find(sv, PERL_MAGIC_tied))
492 || mg->mg_virtual != &sharedsv_array_vtbl
493 || (SV*) mg->mg_ptr != ssv)
497 if (mg) {
500 mg = sv_magicext(sv, obj, PERL_MAGIC_tied, &sharedsv_array_vtbl,
502 mg->mg_flags |= (MGf_COPY|MGf_DUP);
510 || !(mg = mg_find(sv, PERL_MAGIC_shared_scalar))
511 || mg->mg_virtual != &sharedsv_scalar_vtbl
512 || (SV*) mg->mg_ptr != ssv)
514 if (mg) {
517 mg = sv_magicext(sv, Nullsv, PERL_MAGIC_shared_scalar,
519 mg->mg_flags |= (MGf_DUP
783 sharedsv_scalar_mg_get(pTHX_ SV *sv, MAGIC *mg)
785 SV *ssv = (SV *) mg->mg_ptr;
866 sharedsv_scalar_mg_set(pTHX_ SV *sv, MAGIC *mg)
868 SV *ssv = (SV*)(mg->mg_ptr);
885 sharedsv_scalar_mg_free(pTHX_ SV *sv, MAGIC *mg)
890 && SvROK((SV *)mg->mg_ptr) && SvREFCNT(SvRV((SV *)mg->mg_ptr)) == 1) {
893 get_RV(sv, SvRV((SV *)mg->mg_ptr));
895 S_sharedsv_dec(aTHX_ (SV*)mg->mg_ptr);
904 sharedsv_scalar_mg_dup(pTHX_ MAGIC *mg, CLONE_PARAMS *param)
907 SvREFCNT_inc_void(mg->mg_ptr);
916 sharedsv_scalar_mg_local(pTHX_ SV* nsv, MAGIC *mg)
919 SV *ssv = (SV *) mg->mg_ptr;
925 nmg = sv_magicext(nsv, mg->mg_obj, mg->mg_type, mg->mg_virtual,
926 mg->mg_ptr, mg->mg_len);
927 nmg->mg_flags = mg->mg_flags;
928 nmg->mg_private = mg->mg_private;
952 sharedsv_elem_mg_FETCH(pTHX_ SV *sv, MAGIC *mg)
955 SV *saggregate = SHAREDSV_FROM_OBJ(mg->mg_obj);
962 assert ( mg->mg_ptr == 0 );
964 svp = av_fetch((AV*) saggregate, mg->mg_len, 0);
966 char *key = mg->mg_ptr;
967 I32 len = mg->mg_len;
968 assert ( mg->mg_ptr != 0 );
969 if (mg->mg_len == HEf_SVKEY) {
971 key = SvPV((SV *)mg->mg_ptr, slen);
973 if (SvUTF8((SV *)mg->mg_ptr)) {
1002 sharedsv_elem_mg_STORE(pTHX_ SV *sv, MAGIC *mg)
1005 SV *saggregate = SHAREDSV_FROM_OBJ(mg->mg_obj);
1016 assert ( mg->mg_ptr == 0 );
1018 svp = av_fetch((AV*) saggregate, mg->mg_len, 1);
1020 char *key = mg->mg_ptr;
1021 I32 len = mg->mg_len;
1022 assert ( mg->mg_ptr != 0 );
1023 if (mg->mg_len == HEf_SVKEY) {
1025 key = SvPV((SV *)mg->mg_ptr, slen);
1027 if (SvUTF8((SV *)mg->mg_ptr)) {
1045 sharedsv_elem_mg_DELETE(pTHX_ SV *sv, MAGIC *mg)
1049 SV *saggregate = SHAREDSV_FROM_OBJ(mg->mg_obj);
1057 sharedsv_elem_mg_FETCH(aTHX_ sv, mg);
1062 av_delete((AV*) saggregate, mg->mg_len, G_DISCARD);
1064 char *key = mg->mg_ptr;
1065 I32 len = mg->mg_len;
1066 assert ( mg->mg_ptr != 0 );
1067 if (mg->mg_len == HEf_SVKEY) {
1069 key = SvPV((SV *)mg->mg_ptr, slen);
1071 if (SvUTF8((SV *)mg->mg_ptr)) {
1087 sharedsv_elem_mg_dup(pTHX_ MAGIC *mg, CLONE_PARAMS *param)
1090 SvREFCNT_inc_void(SHAREDSV_FROM_OBJ(mg->mg_obj));
1091 assert(mg->mg_flags & MGf_DUP);
1113 sharedsv_array_mg_FETCHSIZE(pTHX_ SV *sv, MAGIC *mg)
1116 SV *ssv = (SV *) mg->mg_ptr;
1133 sharedsv_array_mg_CLEAR(pTHX_ SV *sv, MAGIC *mg)
1136 SV *ssv = (SV *) mg->mg_ptr;
1168 sharedsv_array_mg_free(pTHX_ SV *sv, MAGIC *mg)
1171 S_sharedsv_dec(aTHX_ (SV*)mg->mg_ptr);
1182 sharedsv_array_mg_copy(pTHX_ SV *sv, MAGIC* mg,
1186 sharedsv_array_mg_copy(pTHX_ SV *sv, MAGIC* mg,
1190 MAGIC *nmg = sv_magicext(nsv,mg->mg_obj,
1191 toLOWER(mg->mg_type),&sharedsv_elem_vtbl,
1201 sharedsv_array_mg_dup(pTHX_ MAGIC *mg, CLONE_PARAMS *param)
1204 SvREFCNT_inc_void((SV*)mg->mg_ptr);
1205 assert(mg->mg_flags & MGf_DUP);