summaryrefslogtreecommitdiff
path: root/include/ruby
diff options
context:
space:
mode:
Diffstat (limited to 'include/ruby')
-rw-r--r--include/ruby/internal/value_type.h16
1 files changed, 5 insertions, 11 deletions
diff --git a/include/ruby/internal/value_type.h b/include/ruby/internal/value_type.h
index 1b4c651719..790fc3bc6b 100644
--- a/include/ruby/internal/value_type.h
+++ b/include/ruby/internal/value_type.h
@@ -337,25 +337,19 @@ static inline void
Check_Type(VALUE v, enum ruby_value_type t)
{
if (RB_UNLIKELY(! RB_TYPE_P(v, t))) {
- goto slowpath;
+ goto unexpected_type;
}
- else if (t != RUBY_T_DATA) {
- goto fastpath;
- }
- else if (rbimpl_rtypeddata_p(v)) {
+ else if (t == RUBY_T_DATA && rbimpl_rtypeddata_p(v)) {
/* The intention itself is not necessarily clear to me, but at least it
* is intentional to rule out typed data here. See commit
* a7c32bf81d3391cfb78cfda278f469717d0fb794. */
- goto slowpath;
+ goto unexpected_type;
}
else {
- goto fastpath;
+ return;
}
- fastpath:
- return;
-
- slowpath: /* <- :TODO: mark this label as cold. */
+ unexpected_type:
rb_unexpected_type(v, t);
}