summaryrefslogtreecommitdiff
path: root/test/ruby/test_zjit.rb
diff options
context:
space:
mode:
authorMax Bernstein <rubybugs@bernsteinbear.com>2025-09-30 23:39:06 +0200
committerGitHub <noreply@github.com>2025-09-30 21:39:06 +0000
commit8cefb70e210348f509648df943eebe61ef708c3d (patch)
tree99dde5e4782f685af2514b0ed98ebbad075a5a03 /test/ruby/test_zjit.rb
parentdf2d1d5ad386c51ad9750282917ecacf2b343598 (diff)
ZJIT: Re-apply attr_writer inlining (#14678)
This re-applies https://github.com/ruby/ruby/pull/14629 / 40bb47665d3ff57e0f2eb5a9fd9e0109617015c9 by reverting https://github.com/ruby/ruby/pull/14673 / d4393772b89dab4f33c118a284d92dc80cd63c39. Co-authored-by: Alan Wu <XrXr@users.noreply.github.com>
Diffstat (limited to 'test/ruby/test_zjit.rb')
-rw-r--r--test/ruby/test_zjit.rb43
1 files changed, 42 insertions, 1 deletions
diff --git a/test/ruby/test_zjit.rb b/test/ruby/test_zjit.rb
index 683d53f339..937cf44e19 100644
--- a/test/ruby/test_zjit.rb
+++ b/test/ruby/test_zjit.rb
@@ -1642,7 +1642,7 @@ class TestZJIT < Test::Unit::TestCase
}, call_threshold: 2, insns: [:opt_send_without_block]
end
- def test_attr_accessor
+ def test_attr_accessor_getivar
assert_compiles '[4, 4]', %q{
class C
attr_accessor :foo
@@ -1658,6 +1658,47 @@ class TestZJIT < Test::Unit::TestCase
}, call_threshold: 2, insns: [:opt_send_without_block]
end
+ def test_attr_accessor_setivar
+ assert_compiles '[5, 5]', %q{
+ class C
+ attr_accessor :foo
+
+ def initialize
+ @foo = 4
+ end
+ end
+
+ def test(c)
+ c.foo = 5
+ c.foo
+ end
+
+ c = C.new
+ [test(c), test(c)]
+ }, call_threshold: 2, insns: [:opt_send_without_block]
+ end
+
+ def test_attr_writer
+ assert_compiles '[5, 5]', %q{
+ class C
+ attr_writer :foo
+
+ def initialize
+ @foo = 4
+ end
+
+ def get_foo = @foo
+ end
+
+ def test(c)
+ c.foo = 5
+ c.get_foo
+ end
+ c = C.new
+ [test(c), test(c)]
+ }, call_threshold: 2, insns: [:opt_send_without_block]
+ end
+
def test_uncached_getconstant_path
assert_compiles RUBY_COPYRIGHT.dump, %q{
def test = RUBY_COPYRIGHT