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 |