Changeset 223069 in webkit for trunk/Source/JavaScriptCore/offlineasm/arm64.rb
- Timestamp:
- Oct 9, 2017, 2:17:14 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/offlineasm/arm64.rb
r223015 r223069 261 261 end 262 262 263 def arm64LowerLabelReferences(list)264 newList = []265 list.each {266 | node |267 if node.is_a? Instruction268 case node.opcode269 when "loadi", "loadis", "loadp", "loadq", "loadb", "loadbs", "loadh", "loadhs"270 labelRef = node.operands[0]271 if labelRef.is_a? LabelReference272 tmp = Tmp.new(node.codeOrigin, :gpr)273 newList << Instruction.new(codeOrigin, "globaladdr", [LabelReference.new(node.codeOrigin, labelRef.label), tmp])274 newList << Instruction.new(codeOrigin, node.opcode, [Address.new(node.codeOrigin, tmp, Immediate.new(node.codeOrigin, labelRef.offset)), node.operands[1]])275 else276 newList << node277 end278 else279 newList << node280 end281 else282 newList << node283 end284 }285 newList286 end287 288 263 # Workaround for Cortex-A53 erratum (835769) 289 264 def arm64CortexA53Fix835769(list) … … 322 297 result = riscLowerShiftOps(result) 323 298 result = arm64LowerMalformedLoadStoreAddresses(result) 324 result = arm64LowerLabelReferences(result)325 299 result = riscLowerMalformedAddresses(result) { 326 300 | node, address | … … 931 905 $asm.puts "nop" 932 906 $asm.putStr("#endif") 933 when "globaladdr"934 uid = $asm.newUID935 $asm.puts "L_offlineasm_loh_adrp_#{uid}:"936 $asm.puts "adrp #{operands[1].arm64Operand(:ptr)}, #{operands[0].asmLabel}@GOTPAGE"937 $asm.puts "L_offlineasm_loh_ldr_#{uid}:"938 $asm.puts "ldr #{operands[1].arm64Operand(:ptr)}, [#{operands[1].arm64Operand(:ptr)}, #{operands[0].asmLabel}@GOTPAGEOFF]"939 $asm.deferAction {940 $asm.puts ".loh AdrpLdrGot L_offlineasm_loh_adrp_#{uid}, L_offlineasm_loh_ldr_#{uid}"941 }942 907 else 943 908 lowerDefault
Note:
See TracChangeset
for help on using the changeset viewer.