summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/offlineasm/ast.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/offlineasm/ast.rb')
-rw-r--r--Source/JavaScriptCore/offlineasm/ast.rb12
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