diff options
Diffstat (limited to 'Source/JavaScriptCore/offlineasm/ast.rb')
-rw-r--r-- | Source/JavaScriptCore/offlineasm/ast.rb | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/offlineasm/ast.rb b/Source/JavaScriptCore/offlineasm/ast.rb index 4f0c3fd88..74bccff56 100644 --- a/Source/JavaScriptCore/offlineasm/ast.rb +++ b/Source/JavaScriptCore/offlineasm/ast.rb @@ -671,6 +671,10 @@ class Address < Node raise "Bad offset for address #{offset.inspect} at #{codeOriginString}" unless offset.is_a? Variable or offset.immediate? end + def withOffset(extraOffset) + Address.new(codeOrigin, @base, Immediate.new(codeOrigin, @offset.value + extraOffset)) + end + def children [@base, @offset] end @@ -727,6 +731,10 @@ class BaseIndex < Node end end + def withOffset(extraOffset) + BaseIndex.new(codeOrigin, @base, @index, @scale, Immediate.new(codeOrigin, @offset.value + extraOffset)) + end + def children [@base, @index, @offset] end @@ -764,6 +772,10 @@ class AbsoluteAddress < NoChildren @address = address end + def withOffset(extraOffset) + AbsoluteAddress.new(codeOrigin, Immediate.new(codeOrigin, @address.value + extraOffset)) + end + def dump "#{address.dump}[]" end |