debase-ruby_core_source 3.3.5 → 3.3.6
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.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/.idea/vcs.xml +28 -0
- data/CHANGELOG.md +8 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/addr2line.h +22 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/builtin.h +119 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ccan/build_assert/build_assert.h +40 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ccan/check_type/check_type.h +63 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ccan/container_of/container_of.h +142 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ccan/list/list.h +791 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ccan/str/str.h +17 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/constant.h +53 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/darray.h +209 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/debug_counter.h +423 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/dln.h +32 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/encindex.h +70 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/eval_intern.h +324 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/hrtime.h +237 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/id.h +347 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/id_table.h +39 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/insns.inc +265 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/insns_info.inc +9902 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/array.h +152 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/basic_operators.h +64 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/bignum.h +244 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/bits.h +568 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/class.h +283 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/cmdlineopt.h +65 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/compar.h +29 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/compile.h +34 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/compilers.h +107 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/complex.h +29 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/cont.h +35 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/dir.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/enc.h +19 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/encoding.h +36 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/enum.h +18 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/enumerator.h +21 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/error.h +218 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/eval.h +33 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/file.h +38 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/fixnum.h +184 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/gc.h +322 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/hash.h +192 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/imemo.h +261 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/inits.h +47 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/io.h +143 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/load.h +18 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/loadpath.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/math.h +23 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/missing.h +19 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/numeric.h +274 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/object.h +63 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/parse.h +129 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/proc.h +30 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/process.h +124 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/ractor.h +6 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/random.h +17 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/range.h +40 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/rational.h +71 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/re.h +28 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/ruby_parser.h +102 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/sanitizers.h +326 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/serial.h +23 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/signal.h +24 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/st.h +11 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/static_assert.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/string.h +186 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/struct.h +127 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/symbol.h +45 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/thread.h +85 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/time.h +34 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/transcode.h +23 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/util.h +27 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/variable.h +72 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/vm.h +137 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/warnings.h +16 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal.h +108 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/iseq.h +340 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/known_errors.inc +1419 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/method.h +255 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/node.h +111 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/node_name.inc +224 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/optinsn.inc +128 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/optunifs.inc +43 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/parse.h +244 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/parser_bits.h +564 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/parser_node.h +32 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/parser_st.h +162 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/parser_value.h +106 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/ast.h +7524 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/defines.h +242 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/diagnostic.h +450 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/encoding.h +283 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/extension.h +19 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/node.h +129 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/options.h +396 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/pack.h +163 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/parser.h +933 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/prettyprint.h +34 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/prism.h +336 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/regexp.h +43 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/static_literals.h +121 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_buffer.h +218 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_char.h +204 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_constant_pool.h +218 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_integer.h +126 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_list.h +97 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_memchr.h +29 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_newline_list.h +113 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_string.h +190 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_strncasecmp.h +32 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_strpbrk.h +46 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/version.h +29 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism_compile.h +99 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/probes_helper.h +42 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ractor_core.h +382 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/regenc.h +254 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/regint.h +1006 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/regparse.h +371 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/revision.h +5 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/rjit.h +101 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/rjit_c.h +165 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ruby_assert.h +14 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ruby_atomic.h +23 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/rubyparser.h +1350 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/shape.h +234 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/siphash.h +48 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/symbol.h +123 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/thread_none.h +21 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/thread_pthread.h +168 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/thread_win32.h +58 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/timev.h +58 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/transcode_data.h +138 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/variable.h +39 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/version.h +69 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vm.inc +5840 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vm_call_iseq_optimized.inc +244 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vm_callinfo.h +627 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vm_core.h +2222 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vm_debug.h +124 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vm_exec.h +199 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vm_insnhelper.h +277 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vm_opts.h +67 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vm_sync.h +137 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vmtc.inc +259 -0
- data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/yjit.h +79 -0
- data/lib/debase/ruby_core_source/version.rb +1 -1
- metadata +150 -6
@@ -0,0 +1,71 @@
|
|
1
|
+
#ifndef INTERNAL_RATIONAL_H /*-*-C-*-vi:se ft=c:*/
|
2
|
+
#define INTERNAL_RATIONAL_H
|
3
|
+
/**
|
4
|
+
* @author Ruby developers <ruby-core@ruby-lang.org>
|
5
|
+
* @copyright This file is a part of the programming language Ruby.
|
6
|
+
* Permission is hereby granted, to either redistribute and/or
|
7
|
+
* modify this file, provided that the conditions mentioned in the
|
8
|
+
* file COPYING are met. Consult the file for details.
|
9
|
+
* @brief Internal header for Rational.
|
10
|
+
*/
|
11
|
+
#include "ruby/internal/config.h" /* for HAVE_LIBGMP */
|
12
|
+
#include "ruby/ruby.h" /* for struct RBasic */
|
13
|
+
#include "internal/numeric.h" /* for INT_POSITIVE_P */
|
14
|
+
#include "ruby_assert.h" /* for assert */
|
15
|
+
|
16
|
+
struct RRational {
|
17
|
+
struct RBasic basic;
|
18
|
+
VALUE num;
|
19
|
+
VALUE den;
|
20
|
+
};
|
21
|
+
|
22
|
+
#define RRATIONAL(obj) ((struct RRational *)(obj))
|
23
|
+
|
24
|
+
/* rational.c */
|
25
|
+
VALUE rb_rational_canonicalize(VALUE x);
|
26
|
+
VALUE rb_rational_uminus(VALUE self);
|
27
|
+
VALUE rb_rational_plus(VALUE self, VALUE other);
|
28
|
+
VALUE rb_rational_minus(VALUE self, VALUE other);
|
29
|
+
VALUE rb_rational_mul(VALUE self, VALUE other);
|
30
|
+
VALUE rb_rational_div(VALUE self, VALUE other);
|
31
|
+
VALUE rb_lcm(VALUE x, VALUE y);
|
32
|
+
VALUE rb_rational_reciprocal(VALUE x);
|
33
|
+
VALUE rb_cstr_to_rat(const char *, int);
|
34
|
+
VALUE rb_rational_hash(VALUE self);
|
35
|
+
VALUE rb_rational_abs(VALUE self);
|
36
|
+
VALUE rb_rational_cmp(VALUE self, VALUE other);
|
37
|
+
VALUE rb_rational_pow(VALUE self, VALUE other);
|
38
|
+
VALUE rb_rational_floor(VALUE self, int ndigits);
|
39
|
+
VALUE rb_numeric_quo(VALUE x, VALUE y);
|
40
|
+
VALUE rb_flo_round_by_rational(int argc, VALUE *argv, VALUE num);
|
41
|
+
VALUE rb_float_numerator(VALUE x);
|
42
|
+
VALUE rb_float_denominator(VALUE x);
|
43
|
+
|
44
|
+
static inline void RATIONAL_SET_NUM(VALUE r, VALUE n);
|
45
|
+
static inline void RATIONAL_SET_DEN(VALUE r, VALUE d);
|
46
|
+
|
47
|
+
RUBY_SYMBOL_EXPORT_BEGIN
|
48
|
+
/* rational.c (export) */
|
49
|
+
VALUE rb_gcd(VALUE x, VALUE y);
|
50
|
+
VALUE rb_gcd_normal(VALUE self, VALUE other);
|
51
|
+
#if defined(HAVE_LIBGMP) && defined(HAVE_GMP_H)
|
52
|
+
VALUE rb_gcd_gmp(VALUE x, VALUE y);
|
53
|
+
#endif
|
54
|
+
RUBY_SYMBOL_EXPORT_END
|
55
|
+
|
56
|
+
static inline void
|
57
|
+
RATIONAL_SET_NUM(VALUE r, VALUE n)
|
58
|
+
{
|
59
|
+
assert(RB_INTEGER_TYPE_P(n));
|
60
|
+
RB_OBJ_WRITE(r, &RRATIONAL(r)->num, n);
|
61
|
+
}
|
62
|
+
|
63
|
+
static inline void
|
64
|
+
RATIONAL_SET_DEN(VALUE r, VALUE d)
|
65
|
+
{
|
66
|
+
assert(RB_INTEGER_TYPE_P(d));
|
67
|
+
assert(INT_POSITIVE_P(d));
|
68
|
+
RB_OBJ_WRITE(r, &RRATIONAL(r)->den, d);
|
69
|
+
}
|
70
|
+
|
71
|
+
#endif /* INTERNAL_RATIONAL_H */
|
@@ -0,0 +1,28 @@
|
|
1
|
+
#ifndef INTERNAL_RE_H /*-*-C-*-vi:se ft=c:*/
|
2
|
+
#define INTERNAL_RE_H
|
3
|
+
/**
|
4
|
+
* @author Ruby developers <ruby-core@ruby-lang.org>
|
5
|
+
* @copyright This file is a part of the programming language Ruby.
|
6
|
+
* Permission is hereby granted, to either redistribute and/or
|
7
|
+
* modify this file, provided that the conditions mentioned in the
|
8
|
+
* file COPYING are met. Consult the file for details.
|
9
|
+
* @brief Internal header for Regexp.
|
10
|
+
*/
|
11
|
+
#include "ruby/internal/stdbool.h" /* for bool */
|
12
|
+
#include "ruby/ruby.h" /* for VALUE */
|
13
|
+
|
14
|
+
/* re.c */
|
15
|
+
VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline);
|
16
|
+
VALUE rb_reg_check_preprocess(VALUE);
|
17
|
+
long rb_reg_search0(VALUE, VALUE, long, int, int);
|
18
|
+
VALUE rb_reg_match_p(VALUE re, VALUE str, long pos);
|
19
|
+
bool rb_reg_start_with_p(VALUE re, VALUE str);
|
20
|
+
VALUE rb_reg_hash(VALUE re);
|
21
|
+
VALUE rb_reg_equal(VALUE re1, VALUE re2);
|
22
|
+
void rb_backref_set_string(VALUE string, long pos, long len);
|
23
|
+
void rb_match_unbusy(VALUE);
|
24
|
+
int rb_match_count(VALUE match);
|
25
|
+
VALUE rb_reg_new_ary(VALUE ary, int options);
|
26
|
+
VALUE rb_reg_last_defined(VALUE match);
|
27
|
+
|
28
|
+
#endif /* INTERNAL_RE_H */
|
@@ -0,0 +1,102 @@
|
|
1
|
+
#ifndef INTERNAL_RUBY_PARSE_H
|
2
|
+
#define INTERNAL_RUBY_PARSE_H
|
3
|
+
|
4
|
+
#include "internal.h"
|
5
|
+
#include "internal/bignum.h"
|
6
|
+
#include "internal/compilers.h"
|
7
|
+
#include "internal/complex.h"
|
8
|
+
#include "internal/parse.h"
|
9
|
+
#include "internal/rational.h"
|
10
|
+
#include "rubyparser.h"
|
11
|
+
#include "vm.h"
|
12
|
+
|
13
|
+
struct lex_pointer_string {
|
14
|
+
VALUE str;
|
15
|
+
long ptr;
|
16
|
+
};
|
17
|
+
|
18
|
+
RUBY_SYMBOL_EXPORT_BEGIN
|
19
|
+
#ifdef UNIVERSAL_PARSER
|
20
|
+
const rb_parser_config_t *rb_ruby_parser_config(void);
|
21
|
+
rb_parser_t *rb_parser_params_new(void);
|
22
|
+
#endif
|
23
|
+
VALUE rb_parser_set_context(VALUE, const struct rb_iseq_struct *, int);
|
24
|
+
VALUE rb_parser_new(void);
|
25
|
+
VALUE rb_parser_compile_string_path(VALUE vparser, VALUE fname, VALUE src, int line);
|
26
|
+
VALUE rb_str_new_parser_string(rb_parser_string_t *str);
|
27
|
+
VALUE rb_str_new_mutable_parser_string(rb_parser_string_t *str);
|
28
|
+
rb_parser_string_t *rb_parser_lex_get_str(struct parser_params *p, struct lex_pointer_string *ptr_str);
|
29
|
+
|
30
|
+
VALUE rb_node_str_string_val(const NODE *);
|
31
|
+
VALUE rb_node_sym_string_val(const NODE *);
|
32
|
+
VALUE rb_node_dstr_string_val(const NODE *);
|
33
|
+
VALUE rb_node_regx_string_val(const NODE *);
|
34
|
+
VALUE rb_node_dregx_string_val(const NODE *);
|
35
|
+
VALUE rb_node_line_lineno_val(const NODE *);
|
36
|
+
VALUE rb_node_file_path_val(const NODE *);
|
37
|
+
VALUE rb_node_encoding_val(const NODE *);
|
38
|
+
|
39
|
+
VALUE rb_node_integer_literal_val(const NODE *);
|
40
|
+
VALUE rb_node_float_literal_val(const NODE *);
|
41
|
+
VALUE rb_node_rational_literal_val(const NODE *);
|
42
|
+
VALUE rb_node_imaginary_literal_val(const NODE *);
|
43
|
+
RUBY_SYMBOL_EXPORT_END
|
44
|
+
|
45
|
+
VALUE rb_parser_end_seen_p(VALUE);
|
46
|
+
VALUE rb_parser_encoding(VALUE);
|
47
|
+
VALUE rb_parser_set_yydebug(VALUE, VALUE);
|
48
|
+
VALUE rb_parser_build_script_lines_from(rb_parser_ary_t *script_lines);
|
49
|
+
void rb_parser_set_options(VALUE, int, int, int, int);
|
50
|
+
VALUE rb_parser_load_file(VALUE parser, VALUE name);
|
51
|
+
void rb_parser_set_script_lines(VALUE vparser);
|
52
|
+
void rb_parser_error_tolerant(VALUE vparser);
|
53
|
+
void rb_parser_keep_tokens(VALUE vparser);
|
54
|
+
|
55
|
+
VALUE rb_parser_compile_string(VALUE, const char*, VALUE, int);
|
56
|
+
VALUE rb_parser_compile_file_path(VALUE vparser, VALUE fname, VALUE input, int line);
|
57
|
+
VALUE rb_parser_compile_generic(VALUE vparser, rb_parser_lex_gets_func *lex_gets, VALUE fname, VALUE input, int line);
|
58
|
+
VALUE rb_parser_compile_array(VALUE vparser, VALUE fname, VALUE array, int start);
|
59
|
+
|
60
|
+
enum lex_state_bits {
|
61
|
+
EXPR_BEG_bit, /* ignore newline, +/- is a sign. */
|
62
|
+
EXPR_END_bit, /* newline significant, +/- is an operator. */
|
63
|
+
EXPR_ENDARG_bit, /* ditto, and unbound braces. */
|
64
|
+
EXPR_ENDFN_bit, /* ditto, and unbound braces. */
|
65
|
+
EXPR_ARG_bit, /* newline significant, +/- is an operator. */
|
66
|
+
EXPR_CMDARG_bit, /* newline significant, +/- is an operator. */
|
67
|
+
EXPR_MID_bit, /* newline significant, +/- is an operator. */
|
68
|
+
EXPR_FNAME_bit, /* ignore newline, no reserved words. */
|
69
|
+
EXPR_DOT_bit, /* right after `.', `&.' or `::', no reserved words. */
|
70
|
+
EXPR_CLASS_bit, /* immediate after `class', no here document. */
|
71
|
+
EXPR_LABEL_bit, /* flag bit, label is allowed. */
|
72
|
+
EXPR_LABELED_bit, /* flag bit, just after a label. */
|
73
|
+
EXPR_FITEM_bit, /* symbol literal as FNAME. */
|
74
|
+
EXPR_MAX_STATE
|
75
|
+
};
|
76
|
+
/* examine combinations */
|
77
|
+
enum lex_state_e {
|
78
|
+
#define DEF_EXPR(n) EXPR_##n = (1 << EXPR_##n##_bit)
|
79
|
+
DEF_EXPR(BEG),
|
80
|
+
DEF_EXPR(END),
|
81
|
+
DEF_EXPR(ENDARG),
|
82
|
+
DEF_EXPR(ENDFN),
|
83
|
+
DEF_EXPR(ARG),
|
84
|
+
DEF_EXPR(CMDARG),
|
85
|
+
DEF_EXPR(MID),
|
86
|
+
DEF_EXPR(FNAME),
|
87
|
+
DEF_EXPR(DOT),
|
88
|
+
DEF_EXPR(CLASS),
|
89
|
+
DEF_EXPR(LABEL),
|
90
|
+
DEF_EXPR(LABELED),
|
91
|
+
DEF_EXPR(FITEM),
|
92
|
+
EXPR_VALUE = EXPR_BEG,
|
93
|
+
EXPR_BEG_ANY = (EXPR_BEG | EXPR_MID | EXPR_CLASS),
|
94
|
+
EXPR_ARG_ANY = (EXPR_ARG | EXPR_CMDARG),
|
95
|
+
EXPR_END_ANY = (EXPR_END | EXPR_ENDARG | EXPR_ENDFN),
|
96
|
+
EXPR_NONE = 0
|
97
|
+
};
|
98
|
+
|
99
|
+
VALUE rb_ruby_ast_new(const NODE *const root);
|
100
|
+
rb_ast_t *rb_ruby_ast_data_get(VALUE ast_value);
|
101
|
+
|
102
|
+
#endif /* INTERNAL_RUBY_PARSE_H */
|
@@ -0,0 +1,326 @@
|
|
1
|
+
#ifndef INTERNAL_SANITIZERS_H /*-*-C-*-vi:se ft=c:*/
|
2
|
+
#define INTERNAL_SANITIZERS_H
|
3
|
+
/**
|
4
|
+
* @author Ruby developers <ruby-core@ruby-lang.org>
|
5
|
+
* @copyright This file is a part of the programming language Ruby.
|
6
|
+
* Permission is hereby granted, to either redistribute and/or
|
7
|
+
* modify this file, provided that the conditions mentioned in the
|
8
|
+
* file COPYING are met. Consult the file for details.
|
9
|
+
* @brief Internal header for ASAN / MSAN / etc.
|
10
|
+
*/
|
11
|
+
#include "ruby/internal/config.h"
|
12
|
+
#include "internal/compilers.h" /* for __has_feature */
|
13
|
+
|
14
|
+
#ifdef HAVE_VALGRIND_MEMCHECK_H
|
15
|
+
# include <valgrind/memcheck.h>
|
16
|
+
#endif
|
17
|
+
|
18
|
+
#ifdef HAVE_SANITIZER_ASAN_INTERFACE_H
|
19
|
+
# if __has_feature(address_sanitizer)
|
20
|
+
# define RUBY_ASAN_ENABLED
|
21
|
+
# include <sanitizer/asan_interface.h>
|
22
|
+
# endif
|
23
|
+
#endif
|
24
|
+
|
25
|
+
#ifdef HAVE_SANITIZER_MSAN_INTERFACE_H
|
26
|
+
# if __has_feature(memory_sanitizer)
|
27
|
+
# define RUBY_MSAN_ENABLED
|
28
|
+
# include <sanitizer/msan_interface.h>
|
29
|
+
# endif
|
30
|
+
#endif
|
31
|
+
|
32
|
+
#include "ruby/internal/stdbool.h" /* for bool */
|
33
|
+
#include "ruby/ruby.h" /* for VALUE */
|
34
|
+
|
35
|
+
#if 0
|
36
|
+
#elif defined(RUBY_ASAN_ENABLED) && defined(RUBY_MSAN_ENABLED)
|
37
|
+
# define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) \
|
38
|
+
__attribute__((__no_sanitize__("memory, address"), __noinline__)) x
|
39
|
+
#elif defined(RUBY_ASAN_ENABLED)
|
40
|
+
# define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) \
|
41
|
+
__attribute__((__no_sanitize__("address"), __noinline__)) x
|
42
|
+
#elif defined(NO_SANITIZE_ADDRESS)
|
43
|
+
# define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) \
|
44
|
+
NO_SANITIZE_ADDRESS(NOINLINE(x))
|
45
|
+
#elif defined(NO_ADDRESS_SAFETY_ANALYSIS)
|
46
|
+
# define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) \
|
47
|
+
NO_ADDRESS_SAFETY_ANALYSIS(NOINLINE(x))
|
48
|
+
#else
|
49
|
+
# define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) x
|
50
|
+
#endif
|
51
|
+
|
52
|
+
#if defined(NO_SANITIZE) && RBIMPL_COMPILER_IS(GCC)
|
53
|
+
/* GCC warns about unknown sanitizer, which is annoying. */
|
54
|
+
# include "internal/warnings.h"
|
55
|
+
# undef NO_SANITIZE
|
56
|
+
# define NO_SANITIZE(x, y) \
|
57
|
+
COMPILER_WARNING_PUSH; \
|
58
|
+
COMPILER_WARNING_IGNORED(-Wattributes); \
|
59
|
+
__attribute__((__no_sanitize__(x))) y; \
|
60
|
+
COMPILER_WARNING_POP
|
61
|
+
#endif
|
62
|
+
|
63
|
+
#ifndef NO_SANITIZE
|
64
|
+
# define NO_SANITIZE(x, y) y
|
65
|
+
#endif
|
66
|
+
|
67
|
+
#ifndef RUBY_ASAN_ENABLED
|
68
|
+
# define __asan_poison_memory_region(x, y)
|
69
|
+
# define __asan_unpoison_memory_region(x, y)
|
70
|
+
# define __asan_region_is_poisoned(x, y) 0
|
71
|
+
# define __asan_get_current_fake_stack() NULL
|
72
|
+
# define __asan_addr_is_in_fake_stack(fake_stack, slot, start, end) NULL
|
73
|
+
#endif
|
74
|
+
|
75
|
+
#ifndef RUBY_MSAN_ENABLED
|
76
|
+
# define __msan_allocated_memory(x, y) ((void)(x), (void)(y))
|
77
|
+
# define __msan_poison(x, y) ((void)(x), (void)(y))
|
78
|
+
# define __msan_unpoison(x, y) ((void)(x), (void)(y))
|
79
|
+
# define __msan_unpoison_string(x) ((void)(x))
|
80
|
+
#endif
|
81
|
+
|
82
|
+
#ifdef VALGRIND_MAKE_READABLE
|
83
|
+
# define VALGRIND_MAKE_MEM_DEFINED(p, n) VALGRIND_MAKE_READABLE((p), (n))
|
84
|
+
#endif
|
85
|
+
|
86
|
+
#ifdef VALGRIND_MAKE_WRITABLE
|
87
|
+
# define VALGRIND_MAKE_MEM_UNDEFINED(p, n) VALGRIND_MAKE_WRITABLE((p), (n))
|
88
|
+
#endif
|
89
|
+
|
90
|
+
#ifndef VALGRIND_MAKE_MEM_DEFINED
|
91
|
+
# define VALGRIND_MAKE_MEM_DEFINED(p, n) 0
|
92
|
+
#endif
|
93
|
+
|
94
|
+
#ifndef VALGRIND_MAKE_MEM_UNDEFINED
|
95
|
+
# define VALGRIND_MAKE_MEM_UNDEFINED(p, n) 0
|
96
|
+
#endif
|
97
|
+
|
98
|
+
/**
|
99
|
+
* This function asserts that a (continuous) memory region from ptr to size
|
100
|
+
* being "poisoned". Both read / write access to such memory region are
|
101
|
+
* prohibited until properly unpoisoned. The region must be previously
|
102
|
+
* allocated (do not pass a freed pointer here), but not necessarily be an
|
103
|
+
* entire object that the malloc returns. You can punch hole a part of a
|
104
|
+
* gigantic heap arena. This is handy when you do not free an allocated memory
|
105
|
+
* region to reuse later: poison when you keep it unused, and unpoison when you
|
106
|
+
* reuse.
|
107
|
+
*
|
108
|
+
* @param[in] ptr pointer to the beginning of the memory region to poison.
|
109
|
+
* @param[in] size the length of the memory region to poison.
|
110
|
+
*/
|
111
|
+
static inline void
|
112
|
+
asan_poison_memory_region(const volatile void *ptr, size_t size)
|
113
|
+
{
|
114
|
+
__msan_poison(ptr, size);
|
115
|
+
__asan_poison_memory_region(ptr, size);
|
116
|
+
}
|
117
|
+
|
118
|
+
/**
|
119
|
+
* This is a variant of asan_poison_memory_region that takes a VALUE.
|
120
|
+
*
|
121
|
+
* @param[in] obj target object.
|
122
|
+
*/
|
123
|
+
static inline void
|
124
|
+
asan_poison_object(VALUE obj)
|
125
|
+
{
|
126
|
+
MAYBE_UNUSED(struct RVALUE *) ptr = (void *)obj;
|
127
|
+
asan_poison_memory_region(ptr, SIZEOF_VALUE);
|
128
|
+
}
|
129
|
+
|
130
|
+
#ifdef RUBY_ASAN_ENABLED
|
131
|
+
#define asan_poison_object_if(ptr, obj) do { \
|
132
|
+
if (ptr) asan_poison_object(obj); \
|
133
|
+
} while (0)
|
134
|
+
#else
|
135
|
+
#define asan_poison_object_if(ptr, obj) ((void)(ptr), (void)(obj))
|
136
|
+
#endif
|
137
|
+
|
138
|
+
/**
|
139
|
+
* This function predicates if the given object is fully addressable or not.
|
140
|
+
*
|
141
|
+
* @param[in] obj target object.
|
142
|
+
* @retval 0 the given object is fully addressable.
|
143
|
+
* @retval otherwise pointer to first such byte who is poisoned.
|
144
|
+
*/
|
145
|
+
static inline void *
|
146
|
+
asan_poisoned_object_p(VALUE obj)
|
147
|
+
{
|
148
|
+
MAYBE_UNUSED(struct RVALUE *) ptr = (void *)obj;
|
149
|
+
return __asan_region_is_poisoned(ptr, SIZEOF_VALUE);
|
150
|
+
}
|
151
|
+
|
152
|
+
/**
|
153
|
+
* This function asserts that a (formally poisoned) memory region from ptr to
|
154
|
+
* size is now addressable. Write access to such memory region gets allowed.
|
155
|
+
* However read access might or might not be possible depending on situations,
|
156
|
+
* because the region can have contents of previous usages. That information
|
157
|
+
* should be passed by the malloc_p flag. If that is true, the contents of the
|
158
|
+
* region is _not_ fully defined (like the return value of malloc behaves).
|
159
|
+
* Reading from there is NG; write something first. If malloc_p is false on
|
160
|
+
* the other hand, that memory region is fully defined and can be read
|
161
|
+
* immediately.
|
162
|
+
*
|
163
|
+
* @param[in] ptr pointer to the beginning of the memory region to unpoison.
|
164
|
+
* @param[in] size the length of the memory region.
|
165
|
+
* @param[in] malloc_p if the memory region is like a malloc's return value or not.
|
166
|
+
*/
|
167
|
+
static inline void
|
168
|
+
asan_unpoison_memory_region(const volatile void *ptr, size_t size, bool malloc_p)
|
169
|
+
{
|
170
|
+
__asan_unpoison_memory_region(ptr, size);
|
171
|
+
if (malloc_p) {
|
172
|
+
__msan_allocated_memory(ptr, size);
|
173
|
+
}
|
174
|
+
else {
|
175
|
+
__msan_unpoison(ptr, size);
|
176
|
+
}
|
177
|
+
}
|
178
|
+
|
179
|
+
/**
|
180
|
+
* This is a variant of asan_unpoison_memory_region that takes a VALUE.
|
181
|
+
*
|
182
|
+
* @param[in] obj target object.
|
183
|
+
* @param[in] malloc_p if the memory region is like a malloc's return value or not.
|
184
|
+
*/
|
185
|
+
static inline void
|
186
|
+
asan_unpoison_object(VALUE obj, bool newobj_p)
|
187
|
+
{
|
188
|
+
MAYBE_UNUSED(struct RVALUE *) ptr = (void *)obj;
|
189
|
+
asan_unpoison_memory_region(ptr, SIZEOF_VALUE, newobj_p);
|
190
|
+
}
|
191
|
+
|
192
|
+
static inline void *
|
193
|
+
asan_unpoison_object_temporary(VALUE obj)
|
194
|
+
{
|
195
|
+
void *ptr = asan_poisoned_object_p(obj);
|
196
|
+
asan_unpoison_object(obj, false);
|
197
|
+
return ptr;
|
198
|
+
}
|
199
|
+
|
200
|
+
static inline void *
|
201
|
+
asan_poison_object_restore(VALUE obj, void *ptr)
|
202
|
+
{
|
203
|
+
if (ptr) {
|
204
|
+
asan_poison_object(obj);
|
205
|
+
}
|
206
|
+
return NULL;
|
207
|
+
}
|
208
|
+
|
209
|
+
#define asan_unpoisoning_object(obj) \
|
210
|
+
for (void *poisoned = asan_unpoison_object_temporary(obj), \
|
211
|
+
*unpoisoning = &poisoned; /* flag to loop just once */ \
|
212
|
+
unpoisoning; \
|
213
|
+
unpoisoning = asan_poison_object_restore(obj, poisoned))
|
214
|
+
|
215
|
+
|
216
|
+
static inline void *
|
217
|
+
asan_unpoison_memory_region_temporary(void *ptr, size_t len)
|
218
|
+
{
|
219
|
+
void *poisoned_ptr = __asan_region_is_poisoned(ptr, len);
|
220
|
+
asan_unpoison_memory_region(ptr, len, false);
|
221
|
+
return poisoned_ptr;
|
222
|
+
}
|
223
|
+
|
224
|
+
static inline void *
|
225
|
+
asan_poison_memory_region_restore(void *ptr, size_t len, void *poisoned_ptr)
|
226
|
+
{
|
227
|
+
if (poisoned_ptr) {
|
228
|
+
asan_poison_memory_region(ptr, len);
|
229
|
+
}
|
230
|
+
return NULL;
|
231
|
+
}
|
232
|
+
|
233
|
+
#define asan_unpoisoning_memory_region(ptr, len) \
|
234
|
+
for (void *poisoned = asan_unpoison_memory_region_temporary(ptr, len), \
|
235
|
+
*unpoisoning = &poisoned; /* flag to loop just once */ \
|
236
|
+
unpoisoning; \
|
237
|
+
unpoisoning = asan_poison_memory_region_restore(ptr, len, poisoned))
|
238
|
+
|
239
|
+
/**
|
240
|
+
* Checks if the given pointer is on an ASAN fake stack. If so, it returns the
|
241
|
+
* address this variable has on the real frame; if not, it returns the origin
|
242
|
+
* address unmodified.
|
243
|
+
*
|
244
|
+
* n.b. - _dereferencing_ the returned address is meaningless and should not
|
245
|
+
* be done; even though ASAN reserves space for the variable in both the real and
|
246
|
+
* fake stacks, the _value_ of that variable is only in the fake stack.
|
247
|
+
*
|
248
|
+
* n.b. - this only works for addresses passed in from local variables on the same
|
249
|
+
* thread, because the ASAN fake stacks are threadlocal.
|
250
|
+
*
|
251
|
+
* @param[in] slot the address of some local variable
|
252
|
+
* @retval a pointer to something from that frame on the _real_ machine stack
|
253
|
+
*/
|
254
|
+
static inline void *
|
255
|
+
asan_get_real_stack_addr(void* slot)
|
256
|
+
{
|
257
|
+
VALUE *addr;
|
258
|
+
addr = __asan_addr_is_in_fake_stack(__asan_get_current_fake_stack(), slot, NULL, NULL);
|
259
|
+
return addr ? addr : slot;
|
260
|
+
}
|
261
|
+
|
262
|
+
/**
|
263
|
+
* Gets the current thread's fake stack handle, which can be passed into get_fake_stack_extents
|
264
|
+
*
|
265
|
+
* @retval An opaque value which can be passed to asan_get_fake_stack_extents
|
266
|
+
*/
|
267
|
+
static inline void *
|
268
|
+
asan_get_thread_fake_stack_handle(void)
|
269
|
+
{
|
270
|
+
return __asan_get_current_fake_stack();
|
271
|
+
}
|
272
|
+
|
273
|
+
/**
|
274
|
+
* Checks if the given VALUE _actually_ represents a pointer to an ASAN fake stack.
|
275
|
+
*
|
276
|
+
* If the given slot _is_ actually a reference to an ASAN fake stack, and that fake stack
|
277
|
+
* contains the real values for the passed-in range of machine stack addresses, returns true
|
278
|
+
* and the range of the fake stack through the outparams.
|
279
|
+
*
|
280
|
+
* Otherwise, returns false, and sets the outparams to NULL.
|
281
|
+
*
|
282
|
+
* Note that this function expects "start" to be > "end" on downward-growing stack architectures;
|
283
|
+
*
|
284
|
+
* @param[in] thread_fake_stack_handle The asan fake stack reference for the thread we're scanning
|
285
|
+
* @param[in] slot The value on the machine stack we want to inspect
|
286
|
+
* @param[in] machine_stack_start The extents of the real machine stack on which slot lives
|
287
|
+
* @param[in] machine_stack_end The extents of the real machine stack on which slot lives
|
288
|
+
* @param[out] fake_stack_start_out The extents of the fake stack which contains real VALUEs
|
289
|
+
* @param[out] fake_stack_end_out The extents of the fake stack which contains real VALUEs
|
290
|
+
* @return Whether slot is a pointer to a fake stack for the given machine stack range
|
291
|
+
*/
|
292
|
+
|
293
|
+
static inline bool
|
294
|
+
asan_get_fake_stack_extents(void *thread_fake_stack_handle, VALUE slot,
|
295
|
+
void *machine_stack_start, void *machine_stack_end,
|
296
|
+
void **fake_stack_start_out, void **fake_stack_end_out)
|
297
|
+
{
|
298
|
+
/* the ifdef is needed here to suppress a warning about fake_frame_{start/end} being
|
299
|
+
uninitialized if __asan_addr_is_in_fake_stack is an empty macro */
|
300
|
+
#ifdef RUBY_ASAN_ENABLED
|
301
|
+
void *fake_frame_start;
|
302
|
+
void *fake_frame_end;
|
303
|
+
void *real_stack_frame = __asan_addr_is_in_fake_stack(
|
304
|
+
thread_fake_stack_handle, (void *)slot, &fake_frame_start, &fake_frame_end
|
305
|
+
);
|
306
|
+
if (real_stack_frame) {
|
307
|
+
bool in_range;
|
308
|
+
#if STACK_GROW_DIRECTION < 0
|
309
|
+
in_range = machine_stack_start >= real_stack_frame && real_stack_frame >= machine_stack_end;
|
310
|
+
#else
|
311
|
+
in_range = machine_stack_start <= real_stack_frame && real_stack_frame <= machine_stack_end;
|
312
|
+
#endif
|
313
|
+
if (in_range) {
|
314
|
+
*fake_stack_start_out = fake_frame_start;
|
315
|
+
*fake_stack_end_out = fake_frame_end;
|
316
|
+
return true;
|
317
|
+
}
|
318
|
+
}
|
319
|
+
#endif
|
320
|
+
*fake_stack_start_out = 0;
|
321
|
+
*fake_stack_end_out = 0;
|
322
|
+
return false;
|
323
|
+
}
|
324
|
+
|
325
|
+
|
326
|
+
#endif /* INTERNAL_SANITIZERS_H */
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#ifndef INTERNAL_SERIAL_H /*-*-C-*-vi:se ft=c:*/
|
2
|
+
#define INTERNAL_SERIAL_H
|
3
|
+
/**
|
4
|
+
* @author Ruby developers <ruby-core@ruby-lang.org>
|
5
|
+
* @copyright This file is a part of the programming language Ruby.
|
6
|
+
* Permission is hereby granted, to either redistribute and/or
|
7
|
+
* modify this file, provided that the conditions mentioned in the
|
8
|
+
* file COPYING are met. Consult the file for details.
|
9
|
+
* @brief Internal header for rb_serial_t.
|
10
|
+
*/
|
11
|
+
#include "ruby/internal/config.h" /* for HAVE_LONG_LONG */
|
12
|
+
#include "ruby/defines.h" /* for LONG_LONG */
|
13
|
+
|
14
|
+
#ifndef HAVE_LONG_LONG
|
15
|
+
# error need C99+
|
16
|
+
#endif
|
17
|
+
|
18
|
+
typedef unsigned LONG_LONG rb_serial_t;
|
19
|
+
#define SERIALT2NUM ULL2NUM
|
20
|
+
#define PRI_SERIALT_PREFIX PRI_LL_PREFIX
|
21
|
+
#define SIZEOF_SERIAL_T SIZEOF_LONG_LONG
|
22
|
+
|
23
|
+
#endif /* INTERNAL_SERIAL_H */
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#ifndef INTERNAL_SIGNAL_H /*-*-C-*-vi:se ft=c:*/
|
2
|
+
#define INTERNAL_SIGNAL_H
|
3
|
+
/**
|
4
|
+
* @author Ruby developers <ruby-core@ruby-lang.org>
|
5
|
+
* @copyright This file is a part of the programming language Ruby.
|
6
|
+
* Permission is hereby granted, to either redistribute and/or
|
7
|
+
* modify this file, provided that the conditions mentioned in the
|
8
|
+
* file COPYING are met. Consult the file for details.
|
9
|
+
* @brief Internal header for SignalException.
|
10
|
+
*/
|
11
|
+
|
12
|
+
/* signal.c */
|
13
|
+
extern int ruby_enable_coredump;
|
14
|
+
int rb_get_next_signal(void);
|
15
|
+
|
16
|
+
#ifdef POSIX_SIGNAL
|
17
|
+
void (*ruby_posix_signal(int, void (*)(int)))(int);
|
18
|
+
#endif
|
19
|
+
|
20
|
+
RUBY_SYMBOL_EXPORT_BEGIN
|
21
|
+
/* signal.c (export) */
|
22
|
+
RUBY_SYMBOL_EXPORT_END
|
23
|
+
|
24
|
+
#endif /* INTERNAL_SIGNAL_H */
|
@@ -0,0 +1,11 @@
|
|
1
|
+
#ifndef INTERNAL_ST_H
|
2
|
+
#define INTERNAL_ST_H
|
3
|
+
|
4
|
+
#include "include/ruby/st.h"
|
5
|
+
|
6
|
+
st_table *rb_st_replace(st_table *new_tab, st_table *old_tab);
|
7
|
+
#define st_replace rb_st_replace
|
8
|
+
st_table *rb_st_init_existing_table_with_size(st_table *tab, const struct st_hash_type *type, st_index_t size);
|
9
|
+
#define st_init_existing_table_with_size rb_st_init_existing_table_with_size
|
10
|
+
|
11
|
+
#endif
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#ifndef INTERNAL_STATIC_ASSERT_H /*-*-C-*-vi:se ft=c:*/
|
2
|
+
#define INTERNAL_STATIC_ASSERT_H
|
3
|
+
/**
|
4
|
+
* @author Ruby developers <ruby-core@ruby-lang.org>
|
5
|
+
* @copyright This file is a part of the programming language Ruby.
|
6
|
+
* Permission is hereby granted, to either redistribute and/or
|
7
|
+
* modify this file, provided that the conditions mentioned in the
|
8
|
+
* file COPYING are met. Consult the file for details.
|
9
|
+
* @brief C11 shim for _Static_assert.
|
10
|
+
*/
|
11
|
+
#include "ruby/internal/static_assert.h"
|
12
|
+
#ifndef STATIC_ASSERT
|
13
|
+
# define STATIC_ASSERT RBIMPL_STATIC_ASSERT
|
14
|
+
#endif
|
15
|
+
|
16
|
+
#endif /* INTERNAL_STATIC_ASSERT_H */
|