- MAGIC *mg = mg_find(pp_sv, PERL_MAGIC_ext);
- if (mg) {
- sub_op_check_t check = INT2PTR(sub_op_check_t, SvIVX(mg->mg_obj));
- o = CALL_FPTR(check)(aTHX_ o, mg->mg_ptr);
- }
+ so_op_name_t *on = PerlMemShared_malloc(sizeof(*on) + len);
+ Copy(name, &on->buf, len, char);
+ (&on->buf)[len] = '\0';
+ on->len = len;
+#ifdef USE_ITHREADS
+ MUTEX_LOCK(&so_op_name_mutex);
+#endif /* USE_ITHREADS */
+ ptable_store(so_op_name, o, on);
+#ifdef USE_ITHREADS
+ MUTEX_UNLOCK(&so_op_name_mutex);
+#endif /* USE_ITHREADS */