diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-04-10 09:28:39 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-04-10 09:28:39 +0000 |
commit | 32761a6cee1d0dee366b885b7b9c777e67885688 (patch) | |
tree | d6bec92bebfb216f4126356e55518842c2f476a1 /Source/JavaScriptCore/offlineasm/instructions.rb | |
parent | a4e969f4965059196ca948db781e52f7cfebf19e (diff) | |
download | WebKitGtk-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.rb | 35 |
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/ |