mirror of
https://github.com/ruby/ruby.git
synced 2026-01-27 04:24:23 +00:00
add VM_ENV_NAMESPACED_P to unify/simplify/correct when SPECVAL has a namespace
This commit is contained in:
parent
228d2c39f0
commit
bff625d2a6
6
vm.c
6
vm.c
@ -142,10 +142,10 @@ static inline VALUE
|
||||
VM_CF_BLOCK_HANDLER(const rb_control_frame_t * const cfp)
|
||||
{
|
||||
const VALUE *ep;
|
||||
if (VM_FRAME_TYPE(cfp) == VM_FRAME_MAGIC_TOP) {
|
||||
if (VM_ENV_NAMESPACED_P(cfp->ep)) {
|
||||
VM_ASSERT(VM_ENV_LOCAL_P(cfp->ep));
|
||||
/* Never set black_handler for VM_FRAME_MAGIC_TOP
|
||||
* and the specval is used for namespace (rb_namespace_t) in the case
|
||||
/* Never set black_handler for VM_FRAME_MAGIC_TOP or VM_FRAME_MAGIC_CLASS
|
||||
* and the specval is used for namespace (rb_namespace_t) in these case
|
||||
*/
|
||||
return VM_BLOCK_HANDLER_NONE;
|
||||
}
|
||||
|
||||
10
vm_core.h
10
vm_core.h
@ -1559,10 +1559,16 @@ VM_ENV_PREV_EP(const VALUE *ep)
|
||||
return VM_ENV_PREV_EP_UNCHECKED(ep);
|
||||
}
|
||||
|
||||
static inline bool
|
||||
VM_ENV_NAMESPACED_P(const VALUE *ep)
|
||||
{
|
||||
return VM_ENV_FRAME_TYPE_P(ep, VM_FRAME_MAGIC_CLASS) || VM_ENV_FRAME_TYPE_P(ep, VM_FRAME_MAGIC_TOP);
|
||||
}
|
||||
|
||||
static inline VALUE
|
||||
VM_ENV_BLOCK_HANDLER(const VALUE *ep)
|
||||
{
|
||||
if (VM_ENV_FRAME_TYPE_P(ep, VM_FRAME_MAGIC_CLASS) || VM_ENV_FRAME_TYPE_P(ep, VM_FRAME_MAGIC_TOP)) {
|
||||
if (VM_ENV_NAMESPACED_P(ep)) {
|
||||
VM_ASSERT(VM_ENV_LOCAL_P(ep));
|
||||
return VM_BLOCK_HANDLER_NONE;
|
||||
}
|
||||
@ -1574,7 +1580,7 @@ VM_ENV_BLOCK_HANDLER(const VALUE *ep)
|
||||
static inline const rb_namespace_t *
|
||||
VM_ENV_NAMESPACE(const VALUE *ep)
|
||||
{
|
||||
VM_ASSERT(VM_ENV_FRAME_TYPE_P(ep, VM_FRAME_MAGIC_CLASS) || VM_ENV_FRAME_TYPE_P(ep, VM_FRAME_MAGIC_TOP));
|
||||
VM_ASSERT(VM_ENV_NAMESPACED_P(ep));
|
||||
VM_ASSERT(VM_ENV_LOCAL_P(ep));
|
||||
return (const rb_namespace_t *)GC_GUARDED_PTR_REF(ep[VM_ENV_DATA_INDEX_SPECVAL]);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user