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
|
static void
|
||||||
set_catch_except_p(struct rb_iseq_constant_body *body)
|
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) {
|
if (body->parent_iseq != NULL) {
|
||||||
set_catch_except_p(ISEQ_BODY(body->parent_iseq));
|
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,
|
/* 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
|
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
|
if catch table exists. But we want to optimize while loop, which always has catch
|
||||||
table entries for break/next/redo.
|
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. */
|
whose child ISeq would really raise an exception. */
|
||||||
static void
|
static void
|
||||||
update_catch_except_flags(struct rb_iseq_constant_body *body)
|
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
|
if (entry->type != CATCH_TYPE_BREAK
|
||||||
&& entry->type != CATCH_TYPE_NEXT
|
&& entry->type != CATCH_TYPE_NEXT
|
||||||
&& entry->type != CATCH_TYPE_REDO) {
|
&& entry->type != CATCH_TYPE_REDO) {
|
||||||
body->catch_except_p = TRUE;
|
body->catch_except_p = true;
|
||||||
break;
|
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_cat2(str, "== disasm: ");
|
||||||
|
|
||||||
rb_str_append(str, iseq_inspect(iseq));
|
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) {
|
if ((l = RSTRING_LEN(str) - indent_len) < header_minlen) {
|
||||||
rb_str_modify_expand(str, header_minlen - l);
|
rb_str_modify_expand(str, header_minlen - l);
|
||||||
memset(RSTRING_END(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
|
def test_catching_deep_exception
|
||||||
assert_eval_with_jit("#{<<~"begin;"}\n#{<<~"end;"}", stdout: '1', success_count: 4)
|
assert_eval_with_jit("#{<<~"begin;"}\n#{<<~"end;"}", stdout: '1', success_count: 4)
|
||||||
begin;
|
begin;
|
||||||
def catch_true(paths, prefixes) # catch_except_p: TRUE
|
def catch_true(paths, prefixes) # catch_except_p: true
|
||||||
prefixes.each do |prefix| # catch_except_p: TRUE
|
prefixes.each do |prefix| # catch_except_p: true
|
||||||
paths.each do |path| # catch_except_p: FALSE
|
paths.each do |path| # catch_except_p: false
|
||||||
return path
|
return path
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -474,7 +474,7 @@ struct rb_iseq_constant_body {
|
||||||
iseq_bits_t single;
|
iseq_bits_t single;
|
||||||
} mark_bits;
|
} 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,
|
// 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.
|
// by rb_profile_frames. We verify only leafness on VM_CHECK_MODE though.
|
||||||
// Note that GC allocations might use backtraces due to
|
// Note that GC allocations might use backtraces due to
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue