mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Move function to static inline
so we don't have leaked globals
This function shouldn't leak and is only needed during instruction assembly
This commit is contained in:
parent
e3ab525f69
commit
8d157bc806
Notes:
git
2022-06-30 08:22:11 +09:00
3 changed files with 16 additions and 21 deletions
20
iseq.c
20
iseq.c
|
@ -2943,26 +2943,6 @@ iseq_type_id(enum iseq_type type)
|
||||||
rb_bug("unsupported iseq type: %d", (int)type);
|
rb_bug("unsupported iseq type: %d", (int)type);
|
||||||
}
|
}
|
||||||
|
|
||||||
union iseq_inline_storage_entry *
|
|
||||||
ISEQ_IS_ENTRY_START(const struct rb_iseq_constant_body *body, char op_type)
|
|
||||||
{
|
|
||||||
unsigned int relative_ic_offset = 0;
|
|
||||||
|
|
||||||
switch(op_type) {
|
|
||||||
case TS_IC:
|
|
||||||
relative_ic_offset += body->ise_size;
|
|
||||||
case TS_ISE:
|
|
||||||
relative_ic_offset += body->ivc_size;
|
|
||||||
case TS_IVC:
|
|
||||||
case TS_ICVARC:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
rb_bug("Wrong op type");
|
|
||||||
}
|
|
||||||
|
|
||||||
return &body->is_entries[relative_ic_offset];
|
|
||||||
}
|
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
iseq_data_to_ary(const rb_iseq_t *iseq)
|
iseq_data_to_ary(const rb_iseq_t *iseq)
|
||||||
{
|
{
|
||||||
|
|
1
iseq.h
1
iseq.h
|
@ -169,7 +169,6 @@ void rb_iseq_init_trace(rb_iseq_t *iseq);
|
||||||
int rb_iseq_add_local_tracepoint_recursively(const rb_iseq_t *iseq, rb_event_flag_t turnon_events, VALUE tpval, unsigned int target_line, bool target_bmethod);
|
int rb_iseq_add_local_tracepoint_recursively(const rb_iseq_t *iseq, rb_event_flag_t turnon_events, VALUE tpval, unsigned int target_line, bool target_bmethod);
|
||||||
int rb_iseq_remove_local_tracepoint_recursively(const rb_iseq_t *iseq, VALUE tpval);
|
int rb_iseq_remove_local_tracepoint_recursively(const rb_iseq_t *iseq, VALUE tpval);
|
||||||
const rb_iseq_t *rb_iseq_load_iseq(VALUE fname);
|
const rb_iseq_t *rb_iseq_load_iseq(VALUE fname);
|
||||||
union iseq_inline_storage_entry *ISEQ_IS_ENTRY_START(const struct rb_iseq_constant_body *body, char op_type);
|
|
||||||
|
|
||||||
#if VM_INSN_INFO_TABLE_IMPL == 2
|
#if VM_INSN_INFO_TABLE_IMPL == 2
|
||||||
unsigned int *rb_iseq_insns_info_decode_positions(const struct rb_iseq_constant_body *body);
|
unsigned int *rb_iseq_insns_info_decode_positions(const struct rb_iseq_constant_body *body);
|
||||||
|
|
|
@ -11,3 +11,19 @@ enum ruby_insn_type_chars {
|
||||||
<%= t %> = '<%= c %>',
|
<%= t %> = '<%= c %>',
|
||||||
% end
|
% end
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static inline union iseq_inline_storage_entry * ISEQ_IS_ENTRY_START(const struct rb_iseq_constant_body *body, char op_type) {
|
||||||
|
unsigned int relative_ic_offset = 0;
|
||||||
|
switch(op_type) {
|
||||||
|
case TS_IC:
|
||||||
|
relative_ic_offset += body->ise_size;
|
||||||
|
case TS_ISE:
|
||||||
|
relative_ic_offset += body->ivc_size;
|
||||||
|
case TS_IVC:
|
||||||
|
case TS_ICVARC:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
rb_bug("Wrong op type");
|
||||||
|
}
|
||||||
|
return &body->is_entries[relative_ic_offset];
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue