Skip to content

Commit bff625d

Browse files
committed
add VM_ENV_NAMESPACED_P to unify/simplify/correct when SPECVAL has a namespace
1 parent 228d2c3 commit bff625d

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

vm.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,10 @@ static inline VALUE
142142
VM_CF_BLOCK_HANDLER(const rb_control_frame_t * const cfp)
143143
{
144144
const VALUE *ep;
145-
if (VM_FRAME_TYPE(cfp) == VM_FRAME_MAGIC_TOP) {
145+
if (VM_ENV_NAMESPACED_P(cfp->ep)) {
146146
VM_ASSERT(VM_ENV_LOCAL_P(cfp->ep));
147-
/* Never set black_handler for VM_FRAME_MAGIC_TOP
148-
* and the specval is used for namespace (rb_namespace_t) in the case
147+
/* Never set black_handler for VM_FRAME_MAGIC_TOP or VM_FRAME_MAGIC_CLASS
148+
* and the specval is used for namespace (rb_namespace_t) in these case
149149
*/
150150
return VM_BLOCK_HANDLER_NONE;
151151
}

vm_core.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1559,10 +1559,16 @@ VM_ENV_PREV_EP(const VALUE *ep)
15591559
return VM_ENV_PREV_EP_UNCHECKED(ep);
15601560
}
15611561

1562+
static inline bool
1563+
VM_ENV_NAMESPACED_P(const VALUE *ep)
1564+
{
1565+
return VM_ENV_FRAME_TYPE_P(ep, VM_FRAME_MAGIC_CLASS) || VM_ENV_FRAME_TYPE_P(ep, VM_FRAME_MAGIC_TOP);
1566+
}
1567+
15621568
static inline VALUE
15631569
VM_ENV_BLOCK_HANDLER(const VALUE *ep)
15641570
{
1565-
if (VM_ENV_FRAME_TYPE_P(ep, VM_FRAME_MAGIC_CLASS) || VM_ENV_FRAME_TYPE_P(ep, VM_FRAME_MAGIC_TOP)) {
1571+
if (VM_ENV_NAMESPACED_P(ep)) {
15661572
VM_ASSERT(VM_ENV_LOCAL_P(ep));
15671573
return VM_BLOCK_HANDLER_NONE;
15681574
}
@@ -1574,7 +1580,7 @@ VM_ENV_BLOCK_HANDLER(const VALUE *ep)
15741580
static inline const rb_namespace_t *
15751581
VM_ENV_NAMESPACE(const VALUE *ep)
15761582
{
1577-
VM_ASSERT(VM_ENV_FRAME_TYPE_P(ep, VM_FRAME_MAGIC_CLASS) || VM_ENV_FRAME_TYPE_P(ep, VM_FRAME_MAGIC_TOP));
1583+
VM_ASSERT(VM_ENV_NAMESPACED_P(ep));
15781584
VM_ASSERT(VM_ENV_LOCAL_P(ep));
15791585
return (const rb_namespace_t *)GC_GUARDED_PTR_REF(ep[VM_ENV_DATA_INDEX_SPECVAL]);
15801586
}

0 commit comments

Comments
 (0)