Move filling in the rest of the locals to the end
This commit is contained in:
parent
7a33a1aee2
commit
578ff32611
@ -6739,6 +6739,17 @@ pm_compile_node(rb_iseq_t *iseq, const pm_node_t *node, LINK_ANCHOR *const ret,
|
||||
//********STEP 4**********
|
||||
// Goal: fill in the method body locals
|
||||
// To be explicit, these are the non-parameter locals
|
||||
// We fill in the block_locals, if they exist
|
||||
// lambda { |x; y| y }
|
||||
// ^
|
||||
if (block_locals && block_locals->size) {
|
||||
for (size_t i = 0; i < block_locals->size; i++, local_index++) {
|
||||
pm_constant_id_t constant_id = ((pm_block_local_variable_node_t *)block_locals->nodes[i])->name;
|
||||
pm_insert_local_index(constant_id, local_index, index_lookup_table, local_table_for_iseq, scope_node);
|
||||
}
|
||||
}
|
||||
|
||||
// Fill in any locals we missed
|
||||
if (scope_node->locals.size) {
|
||||
for (size_t i = 0; i < scope_node->locals.size; i++) {
|
||||
pm_constant_id_t constant_id = locals->ids[i];
|
||||
@ -6755,16 +6766,6 @@ pm_compile_node(rb_iseq_t *iseq, const pm_node_t *node, LINK_ANCHOR *const ret,
|
||||
}
|
||||
}
|
||||
|
||||
// We fill in the block_locals, if they exist
|
||||
// lambda { |x; y| y }
|
||||
// ^
|
||||
if (block_locals && block_locals->size) {
|
||||
for (size_t i = 0; i < block_locals->size; i++, local_index++) {
|
||||
pm_constant_id_t constant_id = ((pm_block_local_variable_node_t *)block_locals->nodes[i])->name;
|
||||
pm_insert_local_index(constant_id, local_index, index_lookup_table, local_table_for_iseq, scope_node);
|
||||
}
|
||||
}
|
||||
|
||||
//********END OF STEP 4**********
|
||||
|
||||
// We set the index_lookup_table on the scope node so we can
|
||||
@ -6781,7 +6782,7 @@ pm_compile_node(rb_iseq_t *iseq, const pm_node_t *node, LINK_ANCHOR *const ret,
|
||||
// Goal: compile anything that needed to be compiled
|
||||
if (keywords_list && keywords_list->size) {
|
||||
size_t optional_index = 0;
|
||||
for (size_t i = 0; i < keywords_list->size; i++, local_index++) {
|
||||
for (size_t i = 0; i < keywords_list->size; i++) {
|
||||
pm_node_t *keyword_parameter_node = keywords_list->nodes[i];
|
||||
pm_constant_id_t name;
|
||||
|
||||
@ -6832,7 +6833,7 @@ pm_compile_node(rb_iseq_t *iseq, const pm_node_t *node, LINK_ANCHOR *const ret,
|
||||
// a pointer to the label it should fill out? We already
|
||||
// have a list of labels allocated above so it seems wasteful
|
||||
// to do the copies.
|
||||
for (size_t i = 0; i < optionals_list->size; i++, local_index++) {
|
||||
for (size_t i = 0; i < optionals_list->size; i++) {
|
||||
label = NEW_LABEL(lineno);
|
||||
opt_table[i] = label;
|
||||
ADD_LABEL(ret, label);
|
||||
|
Loading…
x
Reference in New Issue
Block a user