mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Convert catch_except_t to stdbool
catch_excep_t is a field that exists for MJIT. In the process of rewriting MJIT in Ruby, I added API to convert 1/0 of _Bool to true/false, and it seemed confusing and hard to maintain if you don't use _Bool for *_p fields.
This commit is contained in:
parent
098a3cfaa7
commit
d6f21b308b
4 changed files with 10 additions and 10 deletions
10
compile.c
10
compile.c
|
@ -1357,18 +1357,18 @@ new_child_iseq_with_callback(rb_iseq_t *iseq, const struct rb_iseq_new_with_call
|
|||
static void
|
||||
set_catch_except_p(struct rb_iseq_constant_body *body)
|
||||
{
|
||||
body->catch_except_p = TRUE;
|
||||
body->catch_except_p = true;
|
||||
if (body->parent_iseq != NULL) {
|
||||
set_catch_except_p(ISEQ_BODY(body->parent_iseq));
|
||||
}
|
||||
}
|
||||
|
||||
/* Set body->catch_except_p to TRUE if the ISeq may catch an exception. If it is FALSE,
|
||||
JIT-ed code may be optimized. If we are extremely conservative, we should set TRUE
|
||||
/* Set body->catch_except_p to true if the ISeq may catch an exception. If it is false,
|
||||
JIT-ed code may be optimized. If we are extremely conservative, we should set true
|
||||
if catch table exists. But we want to optimize while loop, which always has catch
|
||||
table entries for break/next/redo.
|
||||
|
||||
So this function sets TRUE for limited ISeqs with break/next/redo catch table entries
|
||||
So this function sets true for limited ISeqs with break/next/redo catch table entries
|
||||
whose child ISeq would really raise an exception. */
|
||||
static void
|
||||
update_catch_except_flags(struct rb_iseq_constant_body *body)
|
||||
|
@ -1399,7 +1399,7 @@ update_catch_except_flags(struct rb_iseq_constant_body *body)
|
|||
if (entry->type != CATCH_TYPE_BREAK
|
||||
&& entry->type != CATCH_TYPE_NEXT
|
||||
&& entry->type != CATCH_TYPE_REDO) {
|
||||
body->catch_except_p = TRUE;
|
||||
body->catch_except_p = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
2
iseq.c
2
iseq.c
|
@ -2411,7 +2411,7 @@ rb_iseq_disasm_recursive(const rb_iseq_t *iseq, VALUE indent)
|
|||
rb_str_cat2(str, "== disasm: ");
|
||||
|
||||
rb_str_append(str, iseq_inspect(iseq));
|
||||
rb_str_catf(str, " (catch: %s)", body->catch_except_p ? "TRUE" : "FALSE");
|
||||
rb_str_catf(str, " (catch: %s)", body->catch_except_p ? "true" : "false");
|
||||
if ((l = RSTRING_LEN(str) - indent_len) < header_minlen) {
|
||||
rb_str_modify_expand(str, header_minlen - l);
|
||||
memset(RSTRING_END(str), '=', header_minlen - l);
|
||||
|
|
|
@ -782,9 +782,9 @@ class TestMJIT < Test::Unit::TestCase
|
|||
def test_catching_deep_exception
|
||||
assert_eval_with_jit("#{<<~"begin;"}\n#{<<~"end;"}", stdout: '1', success_count: 4)
|
||||
begin;
|
||||
def catch_true(paths, prefixes) # catch_except_p: TRUE
|
||||
prefixes.each do |prefix| # catch_except_p: TRUE
|
||||
paths.each do |path| # catch_except_p: FALSE
|
||||
def catch_true(paths, prefixes) # catch_except_p: true
|
||||
prefixes.each do |prefix| # catch_except_p: true
|
||||
paths.each do |path| # catch_except_p: false
|
||||
return path
|
||||
end
|
||||
end
|
||||
|
|
|
@ -474,7 +474,7 @@ struct rb_iseq_constant_body {
|
|||
iseq_bits_t single;
|
||||
} mark_bits;
|
||||
|
||||
char catch_except_p; /* If a frame of this ISeq may catch exception, set TRUE */
|
||||
bool catch_except_p; // If a frame of this ISeq may catch exception, set true.
|
||||
// If true, this ISeq is leaf *and* backtraces are not used, for example,
|
||||
// by rb_profile_frames. We verify only leafness on VM_CHECK_MODE though.
|
||||
// Note that GC allocations might use backtraces due to
|
||||
|
|
Loading…
Reference in a new issue