Moved ujit code invalidation test into bootstraptest
This commit is contained in:
parent
56ce40e8be
commit
d2d564be1d
30
bootstraptest/test_ujit.rb
Normal file
30
bootstraptest/test_ujit.rb
Normal file
@ -0,0 +1,30 @@
|
||||
# Method redefinition (code invalidation) test
|
||||
assert_equal '1', %q{
|
||||
def ret1
|
||||
return 1
|
||||
end
|
||||
|
||||
klass = Class.new do
|
||||
def alias_then_hash(klass, method_to_redefine)
|
||||
# Redefine the method to be ret1
|
||||
klass.alias_method(method_to_redefine, :ret1)
|
||||
hash
|
||||
end
|
||||
end
|
||||
|
||||
instance = klass.new
|
||||
|
||||
i = 0
|
||||
while i < 12
|
||||
if i < 11
|
||||
# Redefine the bar method
|
||||
instance.alias_then_hash(klass, :bar)
|
||||
else
|
||||
# Redefine the hash method to be ret1
|
||||
retval = instance.alias_then_hash(klass, :hash)
|
||||
end
|
||||
i += 1
|
||||
end
|
||||
|
||||
retval
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
# frozen_string_literal: true
|
||||
require 'test/unit'
|
||||
|
||||
class TestMicroJIT < Test::Unit::TestCase
|
||||
# MicroJIT's code invalidation mechanism can't invalidate
|
||||
# code that is executing. Test that we don't try to do that.
|
||||
def test_code_invalidation
|
||||
klass = Class.new do
|
||||
def alias_then_hash(klass, method_to_redefine)
|
||||
klass.alias_method(method_to_redefine, :itself)
|
||||
hash
|
||||
end
|
||||
end
|
||||
|
||||
instance = klass.new
|
||||
i = 0
|
||||
while i < 12
|
||||
if i < 11
|
||||
instance.alias_then_hash(klass, :bar)
|
||||
else
|
||||
ret = instance.alias_then_hash(klass, :hash)
|
||||
assert(instance.equal?(ret))
|
||||
end
|
||||
i += 1
|
||||
end
|
||||
end
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user