| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "v8.h" | 5 #include "v8.h" |
| 6 | 6 |
| 7 #if V8_TARGET_ARCH_ARM | 7 #if V8_TARGET_ARCH_ARM |
| 8 | 8 |
| 9 #include "codegen.h" | 9 #include "codegen.h" |
| 10 #include "macro-assembler.h" | 10 #include "macro-assembler.h" |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 #if !defined(USE_SIMULATOR) | 72 #if !defined(USE_SIMULATOR) |
| 73 return FUNCTION_CAST<UnaryMathFunction>(buffer); | 73 return FUNCTION_CAST<UnaryMathFunction>(buffer); |
| 74 #else | 74 #else |
| 75 fast_exp_arm_machine_code = buffer; | 75 fast_exp_arm_machine_code = buffer; |
| 76 return &fast_exp_simulator; | 76 return &fast_exp_simulator; |
| 77 #endif | 77 #endif |
| 78 } | 78 } |
| 79 | 79 |
| 80 #if defined(V8_HOST_ARCH_ARM) | 80 #if defined(V8_HOST_ARCH_ARM) |
| 81 OS::MemCopyUint8Function CreateMemCopyUint8Function( | 81 OS::MemCopyUint8Function CreateMemCopyUint8Function( |
| 82 bool serializer_enabled, | |
| 83 OS::MemCopyUint8Function stub) { | 82 OS::MemCopyUint8Function stub) { |
| 84 #if defined(USE_SIMULATOR) | 83 #if defined(USE_SIMULATOR) |
| 85 return stub; | 84 return stub; |
| 86 #else | 85 #else |
| 87 if (serializer_enabled || !CpuFeatures::IsSupported(UNALIGNED_ACCESSES)) { | 86 if (!CpuFeatures::IsSupported(UNALIGNED_ACCESSES)) return stub; |
| 88 return stub; | |
| 89 } | |
| 90 size_t actual_size; | 87 size_t actual_size; |
| 91 byte* buffer = static_cast<byte*>(OS::Allocate(1 * KB, &actual_size, true)); | 88 byte* buffer = static_cast<byte*>(OS::Allocate(1 * KB, &actual_size, true)); |
| 92 if (buffer == NULL) return stub; | 89 if (buffer == NULL) return stub; |
| 93 | 90 |
| 94 MacroAssembler masm(NULL, buffer, static_cast<int>(actual_size)); | 91 MacroAssembler masm(NULL, buffer, static_cast<int>(actual_size)); |
| 95 | 92 |
| 96 Register dest = r0; | 93 Register dest = r0; |
| 97 Register src = r1; | 94 Register src = r1; |
| 98 Register chars = r2; | 95 Register chars = r2; |
| 99 Register temp1 = r3; | 96 Register temp1 = r3; |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 231 | 228 |
| 232 CPU::FlushICache(buffer, actual_size); | 229 CPU::FlushICache(buffer, actual_size); |
| 233 OS::ProtectCode(buffer, actual_size); | 230 OS::ProtectCode(buffer, actual_size); |
| 234 return FUNCTION_CAST<OS::MemCopyUint8Function>(buffer); | 231 return FUNCTION_CAST<OS::MemCopyUint8Function>(buffer); |
| 235 #endif | 232 #endif |
| 236 } | 233 } |
| 237 | 234 |
| 238 | 235 |
| 239 // Convert 8 to 16. The number of character to copy must be at least 8. | 236 // Convert 8 to 16. The number of character to copy must be at least 8. |
| 240 OS::MemCopyUint16Uint8Function CreateMemCopyUint16Uint8Function( | 237 OS::MemCopyUint16Uint8Function CreateMemCopyUint16Uint8Function( |
| 241 bool serializer_enabled, | |
| 242 OS::MemCopyUint16Uint8Function stub) { | 238 OS::MemCopyUint16Uint8Function stub) { |
| 243 #if defined(USE_SIMULATOR) | 239 #if defined(USE_SIMULATOR) |
| 244 return stub; | 240 return stub; |
| 245 #else | 241 #else |
| 246 if (serializer_enabled || !CpuFeatures::IsSupported(UNALIGNED_ACCESSES)) { | 242 if (!CpuFeatures::IsSupported(UNALIGNED_ACCESSES)) return stub; |
| 247 return stub; | |
| 248 } | |
| 249 size_t actual_size; | 243 size_t actual_size; |
| 250 byte* buffer = static_cast<byte*>(OS::Allocate(1 * KB, &actual_size, true)); | 244 byte* buffer = static_cast<byte*>(OS::Allocate(1 * KB, &actual_size, true)); |
| 251 if (buffer == NULL) return stub; | 245 if (buffer == NULL) return stub; |
| 252 | 246 |
| 253 MacroAssembler masm(NULL, buffer, static_cast<int>(actual_size)); | 247 MacroAssembler masm(NULL, buffer, static_cast<int>(actual_size)); |
| 254 | 248 |
| 255 Register dest = r0; | 249 Register dest = r0; |
| 256 Register src = r1; | 250 Register src = r1; |
| 257 Register chars = r2; | 251 Register chars = r2; |
| 258 if (CpuFeatures::IsSupported(NEON)) { | 252 if (CpuFeatures::IsSupported(NEON)) { |
| (...skipping 631 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 890 patcher.masm()->add(r0, pc, Operand(-8)); | 884 patcher.masm()->add(r0, pc, Operand(-8)); |
| 891 patcher.masm()->ldr(pc, MemOperand(pc, -4)); | 885 patcher.masm()->ldr(pc, MemOperand(pc, -4)); |
| 892 patcher.masm()->emit_code_stub_address(stub); | 886 patcher.masm()->emit_code_stub_address(stub); |
| 893 } | 887 } |
| 894 } | 888 } |
| 895 | 889 |
| 896 | 890 |
| 897 } } // namespace v8::internal | 891 } } // namespace v8::internal |
| 898 | 892 |
| 899 #endif // V8_TARGET_ARCH_ARM | 893 #endif // V8_TARGET_ARCH_ARM |
| OLD | NEW |