Skip to content

Commit 9ee4852

Browse files
committed
Remove struct RData code from ZJIT
1 parent d2cd76f commit 9ee4852

5 files changed

Lines changed: 4 additions & 23 deletions

File tree

zjit/src/codegen.rs

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2566,25 +2566,6 @@ fn gen_guard_type(jit: &mut JITState, asm: &mut Assembler, val: lir::Opnd, guard
25662566

25672567
asm.cmp(klass, Opnd::Value(expected_class));
25682568
asm.jne(jit, side_exit);
2569-
} else if guard_type.is_subtype(types::TypedTData) {
2570-
let side = side_exit(jit, state, GuardType(guard_type));
2571-
2572-
// Check special constant
2573-
asm.test(val, Opnd::UImm(RUBY_IMMEDIATE_MASK as u64));
2574-
asm.jnz(jit, side.clone());
2575-
2576-
// Check false
2577-
asm.cmp(val, Qfalse.into());
2578-
asm.je(jit, side.clone());
2579-
2580-
// Check the builtin type and RUBY_TYPED_FL_IS_TYPED_DATA with mask and compare
2581-
let val = asm.load_mem(val);
2582-
let flags = asm.load(Opnd::mem(VALUE_BITS, val, RUBY_OFFSET_RBASIC_FLAGS));
2583-
let mask = RUBY_T_MASK.to_usize() | RUBY_TYPED_FL_IS_TYPED_DATA.to_usize();
2584-
let expected = RUBY_T_DATA.to_usize() | RUBY_TYPED_FL_IS_TYPED_DATA.to_usize();
2585-
let masked = asm.and(flags, mask.into());
2586-
asm.cmp(masked, expected.into());
2587-
asm.jne(jit, side);
25882569
} else if let Some(builtin_type) = guard_type.builtin_type_equivalent() {
25892570
let side = side_exit(jit, state, GuardType(guard_type));
25902571

zjit/src/cruby.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -607,8 +607,7 @@ impl VALUE {
607607
/// Typed `T_DATA` made from `TypedData_Make_Struct()` (e.g. Thread, ARGF)
608608
pub fn typed_data_p(self) -> bool {
609609
!self.special_const_p() &&
610-
self.builtin_type() == RUBY_T_DATA &&
611-
0 != (self.builtin_flags() & RUBY_TYPED_FL_IS_TYPED_DATA.to_usize())
610+
self.builtin_type() == RUBY_T_DATA
612611
}
613612

614613
pub fn typed_data_fields_embedded_p(self) -> bool {

zjit/src/cruby_bindings.inc.rs

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

zjit/src/hir_type/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,8 @@ impl Type {
450450
Some(cruby::RUBY_T_STRING)
451451
} else if self.bit_equal(types::Hash) {
452452
Some(cruby::RUBY_T_HASH)
453+
} else if self.is_subtype(types::TypedTData) {
454+
Some(cruby::RUBY_T_DATA)
453455
} else {
454456
// Note that types::TypedTData is narrower than T_DATA, so not here.
455457
None

zjit/src/profile.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ impl ProfiledType {
357357
} else if self.flags().is_t_module() {
358358
(RUBY_T_MODULE, RUBY_T_MASK)
359359
} else if self.flags().is_typed_data() {
360-
(RUBY_T_DATA | RUBY_TYPED_FL_IS_TYPED_DATA, RUBY_T_MASK | RUBY_TYPED_FL_IS_TYPED_DATA)
360+
(RUBY_T_DATA, RUBY_T_MASK)
361361
} else {
362362
(0, 0)
363363
};

0 commit comments

Comments
 (0)