summaryrefslogtreecommitdiff
path: root/iseq.h
diff options
context:
space:
mode:
authorAaron Patterson <tenderlove@ruby-lang.org>2019-09-12 15:21:18 -0700
committerAaron Patterson <tenderlove@ruby-lang.org>2019-09-26 13:56:41 -0700
commit3cd8f76f7f1bc09f9dd6b65eaafe2fd3a990ac60 (patch)
tree4f2bd61e116bbdec7c3df14c2a406a5783d8c5cc /iseq.h
parentbd017c633da4fe27c85b5dfc059b85d44a3b7afe (diff)
Introduce a secondary arena
We'll scan the secondary arena during GC mark. So, we should only allocate "markable" instruction linked list nodes out of the secondary arena.
Diffstat (limited to 'iseq.h')
-rw-r--r--iseq.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/iseq.h b/iseq.h
index 711afeb0fa..8bb4f30b4b 100644
--- a/iseq.h
+++ b/iseq.h
@@ -99,8 +99,14 @@ struct iseq_compile_data {
struct iseq_label_data *redo_label;
const rb_iseq_t *current_block;
struct iseq_compile_data_ensure_node_stack *ensure_node_stack;
- struct iseq_compile_data_storage *storage_head;
- struct iseq_compile_data_storage *storage_current;
+ struct {
+ struct iseq_compile_data_storage *storage_head;
+ struct iseq_compile_data_storage *storage_current;
+ } node;
+ struct {
+ struct iseq_compile_data_storage *storage_head;
+ struct iseq_compile_data_storage *storage_current;
+ } insn;
int loopval_popped; /* used by NODE_BREAK */
int last_line;
int label_no;