summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/offlineasm/instructions.rb
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2016-04-10 09:28:39 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2016-04-10 09:28:39 +0000
commit32761a6cee1d0dee366b885b7b9c777e67885688 (patch)
treed6bec92bebfb216f4126356e55518842c2f476a1 /Source/JavaScriptCore/offlineasm/instructions.rb
parenta4e969f4965059196ca948db781e52f7cfebf19e (diff)
downloadWebKitGtk-tarball-32761a6cee1d0dee366b885b7b9c777e67885688.tar.gz
webkitgtk-2.4.11webkitgtk-2.4.11
Diffstat (limited to 'Source/JavaScriptCore/offlineasm/instructions.rb')
-rw-r--r--Source/JavaScriptCore/offlineasm/instructions.rb35
1 files changed, 12 insertions, 23 deletions
diff --git a/Source/JavaScriptCore/offlineasm/instructions.rb b/Source/JavaScriptCore/offlineasm/instructions.rb
index 244928746..5a3463fc9 100644
--- a/Source/JavaScriptCore/offlineasm/instructions.rb
+++ b/Source/JavaScriptCore/offlineasm/instructions.rb
@@ -22,7 +22,6 @@
# THE POSSIBILITY OF SUCH DAMAGE.
require "config"
-require "set"
# Interesting invariant, which we take advantage of: branching instructions
# always begin with "b", and no non-branching instructions begin with "b".
@@ -30,7 +29,6 @@ require "set"
MACRO_INSTRUCTIONS =
[
- "emit",
"addi",
"andi",
"lshifti",
@@ -249,6 +247,8 @@ MACRO_INSTRUCTIONS =
"bnz",
"leai",
"leap",
+ "pushCalleeSaves",
+ "popCalleeSaves",
"memfence"
]
@@ -258,16 +258,10 @@ X86_INSTRUCTIONS =
"idivi"
]
-ARM_INSTRUCTIONS =
- [
- "clrbp",
- "mvlbl"
- ]
-
ARM64_INSTRUCTIONS =
[
- "pcrtoaddr", # Address from PC relative offset - adr instruction
- "nopFixCortexA53Err835769" # nop on Cortex-A53 (nothing otherwise)
+ "popLRAndFP", # ARM64 requires registers to be pushed and popped in pairs,
+ "pushLRAndFP" # therefore we do LR (link register) and FP (frame pointer) together.
]
RISC_INSTRUCTIONS =
@@ -281,20 +275,16 @@ RISC_INSTRUCTIONS =
MIPS_INSTRUCTIONS =
[
- "la",
"movz",
"movn",
- "setcallreg",
"slt",
"sltu",
- "pichdr"
+ "pichdr",
+ "pichdrra"
]
SH4_INSTRUCTIONS =
[
- "flushcp",
- "alignformova",
- "mova",
"shllx",
"shlrx",
"shld",
@@ -309,11 +299,10 @@ SH4_INSTRUCTIONS =
CXX_INSTRUCTIONS =
[
- "cloopCrash", # no operands
- "cloopCallJSFunction", # operands: callee
- "cloopCallNative", # operands: callee
- "cloopCallSlowPath", # operands: callTarget, currentFrame, currentPC
- "cloopCallSlowPathVoid", # operands: callTarget, currentFrame, currentPC
+ "cloopCrash", # no operands
+ "cloopCallJSFunction", # operands: callee
+ "cloopCallNative", # operands: callee
+ "cloopCallSlowPath", # operands: callTarget, currentFrame, currentPC
# For debugging only:
# Takes no operands but simply emits whatever follows in // comments as
@@ -324,9 +313,9 @@ CXX_INSTRUCTIONS =
"cloopDo", # no operands
]
-INSTRUCTIONS = MACRO_INSTRUCTIONS + X86_INSTRUCTIONS + ARM_INSTRUCTIONS + ARM64_INSTRUCTIONS + RISC_INSTRUCTIONS + MIPS_INSTRUCTIONS + SH4_INSTRUCTIONS + CXX_INSTRUCTIONS
+INSTRUCTIONS = MACRO_INSTRUCTIONS + X86_INSTRUCTIONS + ARM64_INSTRUCTIONS + RISC_INSTRUCTIONS + MIPS_INSTRUCTIONS + SH4_INSTRUCTIONS + CXX_INSTRUCTIONS
-INSTRUCTION_SET = INSTRUCTIONS.to_set
+INSTRUCTION_PATTERN = Regexp.new('\\A((' + INSTRUCTIONS.join(')|(') + '))\\Z')
def isBranch(instruction)
instruction =~ /^b/