+STATIC const lt_op_padxv_info *lt_padxv_map_fetch(const OP *o, lt_op_padxv_info *oi) {
+ const lt_op_padxv_info *val;
+
+ LT_LOCK(<_op_map_mutex);
+
+ val = ptable_fetch(lt_op_padxv_map, o);
+ if (val) {
+ *oi = *val;
+ val = oi;
+ }
+
+ LT_UNLOCK(<_op_map_mutex);
+
+ return val;
+}
+
+#if LT_HAS_PERL(5, 17, 6)
+
+STATIC ptable *lt_op_padrange_map = NULL;
+
+typedef struct {
+ OP *(*old_pp)(pTHX);
+ const OP *padxv_start;
+} lt_op_padrange_info;
+
+STATIC void lt_padrange_map_store(pTHX_ const OP *o, const OP *s, OP *(*old_pp)(pTHX)) {
+#define lt_padrange_map_store(O, S, PP) lt_padrange_map_store(aTHX_ (O), (S), (PP))
+ lt_op_padrange_info *oi;
+
+ LT_LOCK(<_op_map_mutex);
+
+ if (!(oi = ptable_fetch(lt_op_padrange_map, o))) {
+ oi = PerlMemShared_malloc(sizeof *oi);
+ ptable_map_store(lt_op_padrange_map, o, oi);
+ }
+
+ oi->old_pp = old_pp;
+ oi->padxv_start = s;
+
+ LT_UNLOCK(<_op_map_mutex);
+}
+
+STATIC const lt_op_padrange_info *lt_padrange_map_fetch(const OP *o, lt_op_padrange_info *oi) {
+ const lt_op_padrange_info *val;