Changeset 146459 in webkit
- Timestamp:
- Mar 21, 2013 6:19:40 AM (11 years ago)
- Location:
- trunk/Source
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r146429 r146459 1 2013-03-21 Gabor Rapcsanyi <rgabor@webkit.org> 2 3 Implement LLInt for CPU(ARM_TRADITIONAL) 4 https://bugs.webkit.org/show_bug.cgi?id=97589 5 6 Reviewed by Zoltan Herczeg. 7 8 Enable LLInt for ARMv5 and ARMv7 traditional as well. 9 10 * llint/LLIntOfflineAsmConfig.h: 11 * llint/LowLevelInterpreter.asm: 12 * llint/LowLevelInterpreter32_64.asm: 13 * offlineasm/arm.rb: 14 * offlineasm/backends.rb: 15 * offlineasm/instructions.rb: 16 1 17 2013-03-20 Cosmin Truta <ctruta@blackberry.com> 2 18 -
trunk/Source/JavaScriptCore/llint/LLIntOfflineAsmConfig.h
r138970 r146459 61 61 #else 62 62 #define OFFLINE_ASM_ARMv7 0 63 #endif 64 65 #if CPU(ARM_TRADITIONAL) 66 #if WTF_ARM_ARCH_AT_LEAST(7) 67 #define OFFLINE_ASM_ARMv7_TRADITIONAL 1 68 #define OFFLINE_ASM_ARM 0 69 #else 70 #define OFFLINE_ASM_ARM 1 71 #define OFFLINE_ASM_ARMv7_TRADITIONAL 0 72 #endif 73 #else 74 #define OFFLINE_ASM_ARMv7_TRADITIONAL 0 75 #define OFFLINE_ASM_ARM 0 63 76 #endif 64 77 -
trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm
r142769 r146459 183 183 184 184 macro preserveReturnAddressAfterCall(destinationRegister) 185 if C_LOOP or ARM v7or MIPS185 if C_LOOP or ARM or ARMv7 or ARMv7_TRADITIONAL or MIPS 186 186 # In C_LOOP case, we're only preserving the bytecode vPC. 187 187 move lr, destinationRegister … … 194 194 195 195 macro restoreReturnAddressBeforeReturn(sourceRegister) 196 if C_LOOP or ARM v7or MIPS196 if C_LOOP or ARM or ARMv7 or ARMv7_TRADITIONAL or MIPS 197 197 # In C_LOOP case, we're only restoring the bytecode vPC. 198 198 move sourceRegister, lr -
trunk/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
r145000 r146459 106 106 107 107 macro cCall2(function, arg1, arg2) 108 if ARM v7108 if ARM or ARMv7 or ARMv7_TRADITIONAL 109 109 move arg1, t0 110 110 move arg2, t1 … … 127 127 # This barely works. arg3 and arg4 should probably be immediates. 128 128 macro cCall4(function, arg1, arg2, arg3, arg4) 129 if ARM v7129 if ARM or ARMv7 or ARMv7_TRADITIONAL 130 130 move arg1, t0 131 131 move arg2, t1 … … 1892 1892 addp 16 - 4, sp 1893 1893 loadp JITStackFrame::globalData + 4[sp], t3 1894 elsif ARM v71894 elsif ARM or ARMv7 or ARMv7_TRADITIONAL 1895 1895 loadp JITStackFrame::globalData[sp], t3 1896 1896 storep cfr, JSGlobalData::topCallFrame[t3] -
trunk/Source/JavaScriptCore/offlineasm/arm.rb
r145504 r146459 1 1 # Copyright (C) 2011, 2012 Apple Inc. All rights reserved. 2 # Copyright (C) 2013 University of Szeged. All rights reserved. 2 3 # 3 4 # Redistribution and use in source and binary forms, with or without … … 27 28 require "risc" 28 29 30 def isARMv7 31 case $activeBackend 32 when "ARMv7" 33 true 34 when "ARMv7_TRADITIONAL", "ARM" 35 false 36 else 37 raise "bad value for $activeBackend: #{$activeBackend}" 38 end 39 end 40 41 def isARMv7Traditional 42 case $activeBackend 43 when "ARMv7_TRADITIONAL" 44 true 45 when "ARMv7", "ARM" 46 false 47 else 48 raise "bad value for $activeBackend: #{$activeBackend}" 49 end 50 end 51 29 52 class Node 30 53 def armSingle … … 48 71 # Currently we only handle the simple cases, and fall back to mov/movt for the complex ones. 49 72 if value >= 0 && value < 256 50 $asm.puts "mov w#{register.armOperand}, \##{value}"73 $asm.puts "mov #{register.armOperand}, \##{value}" 51 74 elsif (~value) >= 0 && (~value) < 256 52 75 $asm.puts "mvn #{register.armOperand}, \##{~value}" 53 els e76 elsif isARMv7 or isARMv7Traditional 54 77 $asm.puts "movw #{register.armOperand}, \##{value & 0xffff}" 55 78 if (value & 0xffff0000) != 0 56 79 $asm.puts "movt #{register.armOperand}, \##{(value >> 16) & 0xffff}" 57 80 end 81 else 82 $asm.puts "ldr #{register.armOperand}, =#{value}" 58 83 end 59 84 end … … 151 176 def armEmitLea(destination) 152 177 raise "Malformed BaseIndex, offset should be zero at #{codeOriginString}" unless offset.value == 0 153 $asm.puts "add .w#{destination.armOperand}, #{base.armOperand}, #{index.armOperand}, lsl \##{scaleShift}"178 $asm.puts "add #{destination.armOperand}, #{base.armOperand}, #{index.armOperand}, lsl \##{scaleShift}" 154 179 end 155 180 end … … 162 187 163 188 class Sequence 189 def getModifiedListARM 190 raise unless $activeBackend == "ARM" 191 getModifiedListARMCommon 192 end 193 164 194 def getModifiedListARMv7 195 raise unless $activeBackend == "ARMv7" 196 getModifiedListARMCommon 197 end 198 199 def getModifiedListARMv7_TRADITIONAL 200 raise unless $activeBackend == "ARMv7_TRADITIONAL" 201 getModifiedListARMCommon 202 end 203 204 def getModifiedListARMCommon 165 205 result = @list 166 206 result = riscLowerSimpleBranchOps(result) … … 238 278 if mask.immediate? and mask.value == -1 239 279 $asm.puts "tst #{value.armOperand}, #{value.armOperand}" 240 elsif mask.immediate?241 $asm.puts "tst.w #{value.armOperand}, #{mask.armOperand}"242 280 else 243 281 $asm.puts "tst #{value.armOperand}, #{mask.armOperand}" … … 260 298 261 299 class Instruction 300 def lowerARM 301 raise unless $activeBackend == "ARM" 302 lowerARMCommon 303 end 304 262 305 def lowerARMv7 306 raise unless $activeBackend == "ARMv7" 307 lowerARMCommon 308 end 309 310 def lowerARMv7_TRADITIONAL 311 raise unless $activeBackend == "ARMv7_TRADITIONAL" 312 lowerARMCommon 313 end 314 315 def lowerARMCommon 263 316 $asm.codeOrigin codeOriginString if $enableCodeOriginComments 264 317 $asm.annotation annotation if $enableInstrAnnotations … … 467 520 $asm.puts "mov pc, #{operands[0].armOperand}" 468 521 end 522 if not isARMv7 and not isARMv7Traditional 523 $asm.puts ".ltorg" 524 end 469 525 when "call" 470 526 if operands[0].label? -
trunk/Source/JavaScriptCore/offlineasm/backends.rb
r145504 r146459 33 33 "X86", 34 34 "X86_64", 35 "ARM", 35 36 "ARMv7", 37 "ARMv7_TRADITIONAL", 36 38 "MIPS", 37 39 "C_LOOP" … … 47 49 "X86", 48 50 "X86_64", 51 "ARM", 49 52 "ARMv7", 53 "ARMv7_TRADITIONAL", 50 54 "MIPS", 51 55 "C_LOOP" -
trunk/Source/JavaScriptCore/offlineasm/instructions.rb
r138970 r146459 258 258 ] 259 259 260 ARM v7_INSTRUCTIONS =260 ARM_INSTRUCTIONS = 261 261 [ 262 262 "smulli", … … 292 292 ] 293 293 294 INSTRUCTIONS = MACRO_INSTRUCTIONS + X86_INSTRUCTIONS + ARM v7_INSTRUCTIONS + MIPS_INSTRUCTIONS + CXX_INSTRUCTIONS294 INSTRUCTIONS = MACRO_INSTRUCTIONS + X86_INSTRUCTIONS + ARM_INSTRUCTIONS + MIPS_INSTRUCTIONS + CXX_INSTRUCTIONS 295 295 296 296 INSTRUCTION_PATTERN = Regexp.new('\\A((' + INSTRUCTIONS.join(')|(') + '))\\Z') -
trunk/Source/WTF/ChangeLog
r146431 r146459 1 2013-03-21 Gabor Rapcsanyi <rgabor@webkit.org> 2 3 Implement LLInt for CPU(ARM_TRADITIONAL) 4 https://bugs.webkit.org/show_bug.cgi?id=97589 5 6 Reviewed by Zoltan Herczeg. 7 8 Enable LLInt for ARMv5 and ARMv7 traditional as well. 9 10 * wtf/Platform.h: 11 1 12 2013-03-20 Sheriff Bot <webkit.review.bot@gmail.com> 2 13 -
trunk/Source/WTF/wtf/Platform.h
r146320 r146459 786 786 && (OS(DARWIN) || OS(LINUX)) \ 787 787 && (PLATFORM(MAC) || PLATFORM(IOS) || PLATFORM(GTK) || PLATFORM(QT)) \ 788 && (CPU(X86) || CPU(X86_64) || CPU(ARM_THUMB2) || CPU( MIPS))788 && (CPU(X86) || CPU(X86_64) || CPU(ARM_THUMB2) || CPU(ARM_TRADITIONAL) || CPU(MIPS)) 789 789 #define ENABLE_LLINT 1 790 790 #endif
Note: See TracChangeset
for help on using the changeset viewer.