debase-ruby_core_source 3.2.1 → 3.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/darray.h +246 -0
  4. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/debug_counter.h +7 -10
  5. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/eval_intern.h +3 -1
  6. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/id.h +44 -0
  7. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/insns_info.inc +68 -94
  8. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/array.h +2 -20
  9. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/bits.h +6 -2
  10. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/class.h +7 -2
  11. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/cmdlineopt.h +3 -1
  12. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/compile.h +0 -1
  13. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/error.h +24 -2
  14. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/gc.h +28 -0
  15. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/hash.h +18 -44
  16. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/internal/io.h +137 -0
  17. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/internal/parse.h +133 -0
  18. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/process.h +0 -14
  19. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/range.h +2 -2
  20. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/re.h +1 -1
  21. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/internal/ruby_parser.h +69 -0
  22. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/signal.h +4 -0
  23. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/string.h +15 -0
  24. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/struct.h +9 -34
  25. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/thread.h +13 -0
  26. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/variable.h +16 -33
  27. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/vm.h +5 -0
  28. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/iseq.h +4 -4
  29. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/method.h +1 -1
  30. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/node.h +125 -0
  31. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/parse.h +6 -4
  32. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/parser_bits.h +564 -0
  33. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/parser_node.h +133 -0
  34. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/parser_st.h +162 -0
  35. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/parser_value.h +106 -0
  36. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ractor_core.h +3 -3
  37. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/revision.h +5 -0
  38. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/rubyparser.h +628 -0
  39. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/symbol.h +1 -1
  40. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/thread_pthread.h +11 -13
  41. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/thread_win32.h +0 -5
  42. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/version.h +1 -1
  43. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm.inc +303 -404
  44. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_callinfo.h +50 -16
  45. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_core.h +29 -47
  46. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_exec.h +11 -10
  47. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_insnhelper.h +20 -23
  48. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_opts.h +0 -5
  49. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/yjit.h +4 -6
  50. data/lib/debase/ruby_core_source/version.rb +1 -1
  51. metadata +119 -115
  52. data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/darray.h +0 -179
  53. data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/internal/io.h +0 -38
  54. data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/internal/parse.h +0 -25
  55. data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/node.h +0 -514
  56. data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/opt_sc.inc +0 -109
  57. data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/revision.h +0 -5
  58. data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/transient_heap.h +0 -65
  59. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/addr2line.h +0 -0
  60. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/builtin.h +0 -0
  61. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ccan/build_assert/build_assert.h +0 -0
  62. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ccan/check_type/check_type.h +0 -0
  63. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ccan/container_of/container_of.h +0 -0
  64. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ccan/list/list.h +0 -0
  65. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ccan/str/str.h +0 -0
  66. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/constant.h +0 -0
  67. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/dln.h +0 -0
  68. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/encindex.h +0 -0
  69. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/hrtime.h +0 -0
  70. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/id_table.h +0 -0
  71. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/insns.inc +0 -0
  72. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/basic_operators.h +0 -0
  73. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/bignum.h +0 -0
  74. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/compar.h +0 -0
  75. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/compilers.h +0 -0
  76. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/complex.h +0 -0
  77. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/cont.h +0 -0
  78. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/dir.h +0 -0
  79. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/enc.h +0 -0
  80. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/encoding.h +0 -0
  81. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/enum.h +0 -0
  82. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/enumerator.h +0 -0
  83. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/eval.h +0 -0
  84. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/file.h +0 -0
  85. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/fixnum.h +0 -0
  86. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/imemo.h +0 -0
  87. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/inits.h +0 -0
  88. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/load.h +0 -0
  89. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/loadpath.h +0 -0
  90. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/math.h +0 -0
  91. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/missing.h +0 -0
  92. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/numeric.h +0 -0
  93. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/object.h +0 -0
  94. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/proc.h +0 -0
  95. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/ractor.h +0 -0
  96. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/random.h +0 -0
  97. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/rational.h +0 -0
  98. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/sanitizers.h +0 -0
  99. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/serial.h +0 -0
  100. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/static_assert.h +0 -0
  101. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/symbol.h +0 -0
  102. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/time.h +0 -0
  103. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/transcode.h +0 -0
  104. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/util.h +0 -0
  105. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/warnings.h +0 -0
  106. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal.h +0 -0
  107. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/known_errors.inc +0 -0
  108. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/node_name.inc +0 -0
  109. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/optinsn.inc +0 -0
  110. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/optunifs.inc +0 -0
  111. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/probes_helper.h +0 -0
  112. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/regenc.h +0 -0
  113. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/regint.h +0 -0
  114. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/regparse.h +0 -0
  115. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/rjit.h +0 -0
  116. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/rjit_c.h +0 -0
  117. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ruby_assert.h +0 -0
  118. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ruby_atomic.h +0 -0
  119. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/shape.h +0 -0
  120. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/siphash.h +0 -0
  121. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/thread_none.h +0 -0
  122. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/timev.h +0 -0
  123. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/transcode_data.h +0 -0
  124. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/variable.h +0 -0
  125. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_call_iseq_optimized.inc +0 -0
  126. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_debug.h +0 -0
  127. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_sync.h +0 -0
  128. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vmtc.inc +0 -0
@@ -119,6 +119,21 @@ is_broken_string(VALUE str)
119
119
  return rb_enc_str_coderange(str) == ENC_CODERANGE_BROKEN;
120
120
  }
121
121
 
122
+ static inline bool
123
+ at_char_boundary(const char *s, const char *p, const char *e, rb_encoding *enc)
124
+ {
125
+ return rb_enc_left_char_head(s, p, e, enc) == p;
126
+ }
127
+
128
+ static inline bool
129
+ at_char_right_boundary(const char *s, const char *p, const char *e, rb_encoding *enc)
130
+ {
131
+ RUBY_ASSERT(s <= p);
132
+ RUBY_ASSERT(p <= e);
133
+
134
+ return rb_enc_right_char_head(s, p, e, enc) == p;
135
+ }
136
+
122
137
  /* expect tail call optimization */
123
138
  // YJIT needs this function to never allocate and never raise
124
139
  static inline VALUE
@@ -12,10 +12,9 @@
12
12
  #include "ruby/ruby.h" /* for struct RBasic */
13
13
 
14
14
  enum {
15
- RSTRUCT_EMBED_LEN_MAX = RVALUE_EMBED_LEN_MAX,
16
- RSTRUCT_EMBED_LEN_MASK = (RUBY_FL_USER2|RUBY_FL_USER1),
15
+ RSTRUCT_EMBED_LEN_MASK = RUBY_FL_USER7 | RUBY_FL_USER6 | RUBY_FL_USER5 | RUBY_FL_USER4 |
16
+ RUBY_FL_USER3 | RUBY_FL_USER2 | RUBY_FL_USER1,
17
17
  RSTRUCT_EMBED_LEN_SHIFT = (RUBY_FL_USHIFT+1),
18
- RSTRUCT_TRANSIENT_FLAG = FL_USER3,
19
18
  };
20
19
 
21
20
  struct RStruct {
@@ -25,7 +24,12 @@ struct RStruct {
25
24
  long len;
26
25
  const VALUE *ptr;
27
26
  } heap;
28
- const VALUE ary[RSTRUCT_EMBED_LEN_MAX];
27
+ /* This is a length 1 array because:
28
+ * 1. GCC has a bug that does not optimize C flexible array members
29
+ * (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102452)
30
+ * 2. Zero length arrays are not supported by all compilers
31
+ */
32
+ const VALUE ary[1];
29
33
  } as;
30
34
  };
31
35
 
@@ -56,9 +60,6 @@ VALUE rb_struct_init_copy(VALUE copy, VALUE s);
56
60
  VALUE rb_struct_lookup(VALUE s, VALUE idx);
57
61
  VALUE rb_struct_s_keyword_init(VALUE klass);
58
62
  static inline const VALUE *rb_struct_const_heap_ptr(VALUE st);
59
- static inline bool RSTRUCT_TRANSIENT_P(VALUE st);
60
- static inline void RSTRUCT_TRANSIENT_SET(VALUE st);
61
- static inline void RSTRUCT_TRANSIENT_UNSET(VALUE st);
62
63
  static inline long RSTRUCT_EMBED_LEN(VALUE st);
63
64
  static inline long RSTRUCT_LEN(VALUE st);
64
65
  static inline int RSTRUCT_LENINT(VALUE st);
@@ -66,32 +67,6 @@ static inline const VALUE *RSTRUCT_CONST_PTR(VALUE st);
66
67
  static inline void RSTRUCT_SET(VALUE st, long k, VALUE v);
67
68
  static inline VALUE RSTRUCT_GET(VALUE st, long k);
68
69
 
69
- static inline bool
70
- RSTRUCT_TRANSIENT_P(VALUE st)
71
- {
72
- #if USE_TRANSIENT_HEAP
73
- return FL_TEST_RAW(st, RSTRUCT_TRANSIENT_FLAG);
74
- #else
75
- return false;
76
- #endif
77
- }
78
-
79
- static inline void
80
- RSTRUCT_TRANSIENT_SET(VALUE st)
81
- {
82
- #if USE_TRANSIENT_HEAP
83
- FL_SET_RAW(st, RSTRUCT_TRANSIENT_FLAG);
84
- #endif
85
- }
86
-
87
- static inline void
88
- RSTRUCT_TRANSIENT_UNSET(VALUE st)
89
- {
90
- #if USE_TRANSIENT_HEAP
91
- FL_UNSET_RAW(st, RSTRUCT_TRANSIENT_FLAG);
92
- #endif
93
- }
94
-
95
70
  static inline long
96
71
  RSTRUCT_EMBED_LEN(VALUE st)
97
72
  {
@@ -145,7 +120,7 @@ RSTRUCT_GET(VALUE st, long k)
145
120
  static inline const VALUE *
146
121
  rb_struct_const_heap_ptr(VALUE st)
147
122
  {
148
- /* TODO: check embed on debug mode */
123
+ assert(!FL_TEST_RAW(st, RSTRUCT_EMBED_LEN_MASK));
149
124
  return RSTRUCT(st)->as.heap.ptr;
150
125
  }
151
126
 
@@ -10,6 +10,7 @@
10
10
  */
11
11
  #include "ruby/ruby.h" /* for VALUE */
12
12
  #include "ruby/intern.h" /* for rb_blocking_function_t */
13
+ #include "ccan/list/list.h" /* for list in rb_io_close_wait_list */
13
14
 
14
15
  struct rb_thread_struct; /* in vm_core.h */
15
16
 
@@ -29,6 +30,10 @@ struct rb_thread_struct; /* in vm_core.h */
29
30
  #define COVERAGE_TARGET_ONESHOT_LINES 8
30
31
  #define COVERAGE_TARGET_EVAL 16
31
32
 
33
+ #define RUBY_FATAL_THREAD_KILLED INT2FIX(0)
34
+ #define RUBY_FATAL_THREAD_TERMINATED INT2FIX(1)
35
+ #define RUBY_FATAL_FIBER_KILLED RB_INT2FIX(2)
36
+
32
37
  VALUE rb_obj_is_mutex(VALUE obj);
33
38
  VALUE rb_suppress_tracing(VALUE (*func)(VALUE), VALUE arg);
34
39
  void rb_thread_execute_interrupts(VALUE th);
@@ -48,6 +53,14 @@ VALUE rb_exec_recursive_outer_mid(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g,
48
53
 
49
54
  int rb_thread_wait_for_single_fd(int fd, int events, struct timeval * timeout);
50
55
 
56
+ struct rb_io_close_wait_list {
57
+ struct ccan_list_head pending_fd_users;
58
+ VALUE closing_thread;
59
+ VALUE wakeup_mutex;
60
+ };
61
+ int rb_notify_fd_close(int fd, struct rb_io_close_wait_list *busy);
62
+ void rb_notify_fd_close_wait(struct rb_io_close_wait_list *busy);
63
+
51
64
  RUBY_SYMBOL_EXPORT_BEGIN
52
65
  /* Temporary. This API will be removed (renamed). */
53
66
  VALUE rb_thread_io_blocking_region(rb_blocking_function_t *func, void *data1, int fd);
@@ -15,10 +15,6 @@
15
15
  #include "ruby/ruby.h" /* for VALUE */
16
16
  #include "shape.h" /* for rb_shape_t */
17
17
 
18
- /* global variable */
19
-
20
- #define ROBJECT_TRANSIENT_FLAG FL_USER2
21
-
22
18
  /* variable.c */
23
19
  void rb_gc_mark_global_tbl(void);
24
20
  void rb_gc_update_global_tbl(void);
@@ -32,9 +28,22 @@ rb_gvar_getter_t *rb_gvar_getter_function_of(ID);
32
28
  rb_gvar_setter_t *rb_gvar_setter_function_of(ID);
33
29
  void rb_gvar_readonly_setter(VALUE v, ID id, VALUE *_);
34
30
  void rb_gvar_ractor_local(const char *name);
35
- static inline bool ROBJ_TRANSIENT_P(VALUE obj);
36
- static inline void ROBJ_TRANSIENT_SET(VALUE obj);
37
- static inline void ROBJ_TRANSIENT_UNSET(VALUE obj);
31
+
32
+ /**
33
+ * Sets the name of a module.
34
+ *
35
+ * Non-permanently named classes can have a temporary name assigned (or
36
+ * cleared). In that case the name will be used for `#inspect` and `#to_s`, and
37
+ * nested classes/modules will be named with the temporary name as a prefix.
38
+ *
39
+ * After the module is assigned to a constant, the temporary name will be
40
+ * discarded, and the name will be computed based on the nesting.
41
+ *
42
+ * @param[in] mod An instance of ::rb_cModule.
43
+ * @param[in] name An instance of ::rb_cString.
44
+ * @retval mod
45
+ */
46
+ VALUE rb_mod_set_temporary_name(VALUE, VALUE);
38
47
 
39
48
  struct gen_ivtbl;
40
49
  int rb_gen_ivtbl_get(VALUE obj, ID id, struct gen_ivtbl **ivtbl);
@@ -59,30 +68,4 @@ void rb_ensure_iv_list_size(VALUE obj, uint32_t len, uint32_t newsize);
59
68
  struct gen_ivtbl *rb_ensure_generic_iv_list_size(VALUE obj, rb_shape_t *shape, uint32_t newsize);
60
69
  attr_index_t rb_obj_ivar_set(VALUE obj, ID id, VALUE val);
61
70
 
62
- static inline bool
63
- ROBJ_TRANSIENT_P(VALUE obj)
64
- {
65
- #if USE_TRANSIENT_HEAP
66
- return FL_TEST_RAW(obj, ROBJECT_TRANSIENT_FLAG);
67
- #else
68
- return false;
69
- #endif
70
- }
71
-
72
- static inline void
73
- ROBJ_TRANSIENT_SET(VALUE obj)
74
- {
75
- #if USE_TRANSIENT_HEAP
76
- FL_SET_RAW(obj, ROBJECT_TRANSIENT_FLAG);
77
- #endif
78
- }
79
-
80
- static inline void
81
- ROBJ_TRANSIENT_UNSET(VALUE obj)
82
- {
83
- #if USE_TRANSIENT_HEAP
84
- FL_UNSET_RAW(obj, ROBJECT_TRANSIENT_FLAG);
85
- #endif
86
- }
87
-
88
71
  #endif /* INTERNAL_VARIABLE_H */
@@ -76,6 +76,11 @@ VALUE rb_lambda_call(VALUE obj, ID mid, int argc, const VALUE *argv,
76
76
  VALUE data2);
77
77
  void rb_check_stack_overflow(void);
78
78
 
79
+ #if USE_YJIT
80
+ /* vm_exec.c */
81
+ extern uint64_t rb_vm_insns_count;
82
+ #endif
83
+
79
84
  /* vm_insnhelper.c */
80
85
  VALUE rb_equal_opt(VALUE obj1, VALUE obj2);
81
86
  VALUE rb_eql_opt(VALUE obj1, VALUE obj2);
@@ -83,9 +83,10 @@ ISEQ_ORIGINAL_ISEQ_ALLOC(const rb_iseq_t *iseq, long size)
83
83
  RUBY_EVENT_CALL | \
84
84
  RUBY_EVENT_RETURN| \
85
85
  RUBY_EVENT_C_CALL| \
86
- RUBY_EVENT_C_RETURN| \
87
- RUBY_EVENT_B_CALL| \
88
- RUBY_EVENT_B_RETURN| \
86
+ RUBY_EVENT_C_RETURN | \
87
+ RUBY_EVENT_B_CALL | \
88
+ RUBY_EVENT_B_RETURN | \
89
+ RUBY_EVENT_RESCUE | \
89
90
  RUBY_EVENT_COVERAGE_LINE| \
90
91
  RUBY_EVENT_COVERAGE_BRANCH)
91
92
 
@@ -226,7 +227,6 @@ struct rb_compile_option_struct {
226
227
  unsigned int specialized_instruction: 1;
227
228
  unsigned int operands_unification: 1;
228
229
  unsigned int instructions_unification: 1;
229
- unsigned int stack_caching: 1;
230
230
  unsigned int frozen_string_literal: 1;
231
231
  unsigned int debug_frozen_string_literal: 1;
232
232
  unsigned int coverage_enabled: 1;
@@ -249,6 +249,6 @@ void rb_scope_visibility_set(rb_method_visibility_t);
249
249
  VALUE rb_unnamed_parameters(int arity);
250
250
 
251
251
  void rb_clear_method_cache(VALUE klass_or_module, ID mid);
252
- void rb_clear_method_cache_all(void);
252
+ void rb_clear_all_refinement_method_cache(void);
253
253
 
254
254
  #endif /* RUBY_METHOD_H */
@@ -0,0 +1,125 @@
1
+ #ifndef RUBY_NODE_H
2
+ #define RUBY_NODE_H 1
3
+ /**********************************************************************
4
+
5
+ node.h -
6
+
7
+ $Author$
8
+ created at: Fri May 28 15:14:02 JST 1993
9
+
10
+ Copyright (C) 1993-2007 Yukihiro Matsumoto
11
+
12
+ **********************************************************************/
13
+
14
+ #include <stdbool.h>
15
+ #include "rubyparser.h"
16
+ #include "ruby/backward/2/attributes.h"
17
+
18
+ typedef void (*bug_report_func)(const char *fmt, ...);
19
+
20
+ typedef struct node_buffer_elem_struct {
21
+ struct node_buffer_elem_struct *next;
22
+ long len;
23
+ NODE buf[FLEX_ARY_LEN];
24
+ } node_buffer_elem_t;
25
+
26
+ typedef struct {
27
+ long idx, len;
28
+ node_buffer_elem_t *head;
29
+ node_buffer_elem_t *last;
30
+ } node_buffer_list_t;
31
+
32
+ struct node_buffer_struct {
33
+ node_buffer_list_t unmarkable;
34
+ node_buffer_list_t markable;
35
+ struct rb_ast_local_table_link *local_tables;
36
+ VALUE mark_hash;
37
+ // - id (sequence number)
38
+ // - token_type
39
+ // - text of token
40
+ // - location info
41
+ // Array, whose entry is array
42
+ VALUE tokens;
43
+ #ifdef UNIVERSAL_PARSER
44
+ rb_parser_config_t *config;
45
+ #endif
46
+ };
47
+
48
+ RUBY_SYMBOL_EXPORT_BEGIN
49
+
50
+ #ifdef UNIVERSAL_PARSER
51
+ rb_ast_t *rb_ast_new(rb_parser_config_t *config);
52
+ #else
53
+ rb_ast_t *rb_ast_new();
54
+ #endif
55
+ size_t rb_ast_memsize(const rb_ast_t*);
56
+ void rb_ast_dispose(rb_ast_t*);
57
+ VALUE rb_ast_tokens(rb_ast_t *ast);
58
+ #if RUBY_DEBUG
59
+ void rb_ast_node_type_change(NODE *n, enum node_type type);
60
+ #endif
61
+ const char *ruby_node_name(int node);
62
+ void rb_node_init(NODE *n, enum node_type type, VALUE a0, VALUE a1, VALUE a2);
63
+
64
+ void rb_ast_mark(rb_ast_t*);
65
+ void rb_ast_update_references(rb_ast_t*);
66
+ void rb_ast_free(rb_ast_t*);
67
+ void rb_ast_add_mark_object(rb_ast_t*, VALUE);
68
+ void rb_ast_set_tokens(rb_ast_t*, VALUE);
69
+ NODE *rb_ast_newnode(rb_ast_t*, enum node_type type);
70
+ void rb_ast_delete_node(rb_ast_t*, NODE *n);
71
+ rb_ast_id_table_t *rb_ast_new_local_table(rb_ast_t*, int);
72
+ rb_ast_id_table_t *rb_ast_resize_latest_local_table(rb_ast_t*, int);
73
+
74
+ VALUE rb_parser_dump_tree(const NODE *node, int comment);
75
+
76
+ const struct kwtable *rb_reserved_word(const char *, unsigned int);
77
+
78
+ struct parser_params;
79
+ void *rb_parser_malloc(struct parser_params *, size_t);
80
+ void *rb_parser_realloc(struct parser_params *, void *, size_t);
81
+ void *rb_parser_calloc(struct parser_params *, size_t, size_t);
82
+ void rb_parser_free(struct parser_params *, void *);
83
+ PRINTF_ARGS(void rb_parser_printf(struct parser_params *parser, const char *fmt, ...), 2, 3);
84
+ VALUE rb_node_set_type(NODE *n, enum node_type t);
85
+
86
+ RUBY_SYMBOL_EXPORT_END
87
+
88
+ #define NODE_LSHIFT (NODE_TYPESHIFT+7)
89
+ #define NODE_LMASK (((SIGNED_VALUE)1<<(sizeof(VALUE)*CHAR_BIT-NODE_LSHIFT))-1)
90
+
91
+ #define nd_line(n) (int)(((SIGNED_VALUE)(n)->flags)>>NODE_LSHIFT)
92
+ #define nd_set_line(n,l) \
93
+ (n)->flags=(((n)->flags&~((VALUE)(-1)<<NODE_LSHIFT))|((VALUE)((l)&NODE_LMASK)<<NODE_LSHIFT))
94
+
95
+
96
+ #define NODE_SPECIAL_REQUIRED_KEYWORD ((NODE *)-1)
97
+ #define NODE_REQUIRED_KEYWORD_P(node) ((node)->nd_value == NODE_SPECIAL_REQUIRED_KEYWORD)
98
+ #define NODE_SPECIAL_NO_NAME_REST ((NODE *)-1)
99
+ #define NODE_NAMED_REST_P(node) ((node) != NODE_SPECIAL_NO_NAME_REST)
100
+ #define NODE_SPECIAL_EXCESSIVE_COMMA ((ID)1)
101
+ #define NODE_SPECIAL_NO_REST_KEYWORD ((NODE *)-1)
102
+
103
+ #define nd_first_column(n) ((int)((n)->nd_loc.beg_pos.column))
104
+ #define nd_set_first_column(n, v) ((n)->nd_loc.beg_pos.column = (v))
105
+ #define nd_first_lineno(n) ((int)((n)->nd_loc.beg_pos.lineno))
106
+ #define nd_set_first_lineno(n, v) ((n)->nd_loc.beg_pos.lineno = (v))
107
+ #define nd_first_loc(n) ((n)->nd_loc.beg_pos)
108
+ #define nd_set_first_loc(n, v) (nd_first_loc(n) = (v))
109
+
110
+ #define nd_last_column(n) ((int)((n)->nd_loc.end_pos.column))
111
+ #define nd_set_last_column(n, v) ((n)->nd_loc.end_pos.column = (v))
112
+ #define nd_last_lineno(n) ((int)((n)->nd_loc.end_pos.lineno))
113
+ #define nd_set_last_lineno(n, v) ((n)->nd_loc.end_pos.lineno = (v))
114
+ #define nd_last_loc(n) ((n)->nd_loc.end_pos)
115
+ #define nd_set_last_loc(n, v) (nd_last_loc(n) = (v))
116
+ #define nd_node_id(n) ((n)->node_id)
117
+ #define nd_set_node_id(n,id) ((n)->node_id = (id))
118
+
119
+ static inline bool
120
+ nd_type_p(const NODE *n, enum node_type t)
121
+ {
122
+ return (enum node_type)nd_type(n) == t;
123
+ }
124
+
125
+ #endif /* RUBY_NODE_H */
@@ -1,4 +1,4 @@
1
- /* A Bison parser, made by GNU Bison 3.8.2. */
1
+ /* A Bison parser, made by Lrama 0.5.6. */
2
2
 
3
3
  /* Bison interface for Yacc-like parsers in C
4
4
 
@@ -35,8 +35,8 @@
35
35
  especially those whose name start with YY_ or yy_. They are
36
36
  private implementation details that can be changed or removed. */
37
37
 
38
- #ifndef YY_YY__Y_TAB_H_INCLUDED
39
- # define YY_YY__Y_TAB_H_INCLUDED
38
+ #ifndef YY_YY_PARSE_H_INCLUDED
39
+ # define YY_YY_PARSE_H_INCLUDED
40
40
  /* Debug traces. */
41
41
  #ifndef YYDEBUG
42
42
  # define YYDEBUG 0
@@ -190,6 +190,7 @@ extern int yydebug;
190
190
  #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
191
191
  union YYSTYPE
192
192
  {
193
+ #line 1507 "parse.y"
193
194
 
194
195
  VALUE val;
195
196
  NODE *node;
@@ -200,6 +201,7 @@ union YYSTYPE
200
201
  struct rb_strterm_struct *strterm;
201
202
  struct lex_context ctxt;
202
203
 
204
+ #line 205 "parse.h"
203
205
 
204
206
  };
205
207
  typedef union YYSTYPE YYSTYPE;
@@ -227,4 +229,4 @@ struct YYLTYPE
227
229
  int yyparse (struct parser_params *p);
228
230
 
229
231
 
230
- #endif /* !YY_YY__Y_TAB_H_INCLUDED */
232
+ #endif /* !YY_YY_PARSE_H_INCLUDED */