Changeset 173497 in webkit for trunk/Source/JavaScriptCore/offlineasm/arm64.rb
- Timestamp:
- Sep 10, 2014, 4:57:34 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/offlineasm/arm64.rb
r173205 r173497 1 1 # Copyright (C) 2011, 2012, 2014 Apple Inc. All rights reserved. 2 # Copyright (C) 2014 University of Szeged. All rights reserved. 2 3 # 3 4 # Redistribution and use in source and binary forms, with or without … … 198 199 # 199 200 201 def arm64LowerMalformedLoadStoreAddresses(list) 202 newList = [] 203 204 def isAddressMalformed(operand) 205 operand.is_a? Address and not (-255..4095).include? operand.offset.value 206 end 207 208 list.each { 209 | node | 210 if node.is_a? Instruction 211 if node.opcode =~ /^store/ and isAddressMalformed(node.operands[1]) 212 address = node.operands[1] 213 tmp = Tmp.new(codeOrigin, :gpr) 214 newList << Instruction.new(node.codeOrigin, "move", [address.offset, tmp]) 215 newList << Instruction.new(node.codeOrigin, node.opcode, [node.operands[0], BaseIndex.new(node.codeOrigin, address.base, tmp, 1, Immediate.new(codeOrigin, 0))], node.annotation) 216 elsif node.opcode =~ /^load/ and isAddressMalformed(node.operands[0]) 217 address = node.operands[0] 218 tmp = Tmp.new(codeOrigin, :gpr) 219 newList << Instruction.new(node.codeOrigin, "move", [address.offset, tmp]) 220 newList << Instruction.new(node.codeOrigin, node.opcode, [BaseIndex.new(node.codeOrigin, address.base, tmp, 1, Immediate.new(codeOrigin, 0)), node.operands[1]], node.annotation) 221 else 222 newList << node 223 end 224 else 225 newList << node 226 end 227 } 228 newList 229 end 230 200 231 class Sequence 201 232 def getModifiedListARM64 … … 205 236 result = riscLowerHardBranchOps64(result) 206 237 result = riscLowerShiftOps(result) 238 result = arm64LowerMalformedLoadStoreAddresses(result) 207 239 result = riscLowerMalformedAddresses(result) { 208 240 | node, address |
Note:
See TracChangeset
for help on using the changeset viewer.