summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2022-11-15 21:59:38 -0800
committerTakashi Kokubun <takashikkbn@gmail.com>2022-11-15 21:59:38 -0800
commitcd2da0941035c231bc95007a269b6dc3d4b62ca9 (patch)
treea4502523fa5ae922296ea3fa65aa66d36d751c69
parente7443dbbcaf82eee200d33a5c3bc374ad9eec8a7 (diff)
MJIT: Refactor BitField dereference a little
-rw-r--r--lib/mjit/c_pointer.rb3
1 files changed, 1 insertions, 2 deletions
diff --git a/lib/mjit/c_pointer.rb b/lib/mjit/c_pointer.rb
index 7dd836f1c9..aadf80e804 100644
--- a/lib/mjit/c_pointer.rb
+++ b/lib/mjit/c_pointer.rb
@@ -282,12 +282,11 @@ module RubyVM::MJIT
# Dereference
def *
+ byte = Fiddle::Pointer.new(@addr)[0, Fiddle::SIZEOF_CHAR].unpack('c').first
if @width == 1
- byte = Fiddle::Pointer.new(@addr)[0, Fiddle::SIZEOF_CHAR].unpack('c').first
bit = (1 & (byte >> @offset))
bit == 1
elsif @width <= 8 && @offset == 0
- byte = Fiddle::Pointer.new(@addr)[0, Fiddle::SIZEOF_CHAR].unpack('c').first
bitmask = @width.times.map { |i| 1 << i }.sum
byte & bitmask
else