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 <limits.h> // For LONG_MIN, LONG_MAX. | 5 #include <limits.h> // For LONG_MIN, LONG_MAX. |
6 | 6 |
7 #if V8_TARGET_ARCH_ARM | 7 #if V8_TARGET_ARCH_ARM |
8 | 8 |
9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" |
10 #include "src/base/division-by-constant.h" | 10 #include "src/base/division-by-constant.h" |
(...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
656 CheckPageFlag(js_function, scratch, | 656 CheckPageFlag(js_function, scratch, |
657 MemoryChunk::kPointersFromHereAreInterestingMask, eq, &done); | 657 MemoryChunk::kPointersFromHereAreInterestingMask, eq, &done); |
658 | 658 |
659 const Register dst = scratch; | 659 const Register dst = scratch; |
660 add(dst, js_function, Operand(offset - kHeapObjectTag)); | 660 add(dst, js_function, Operand(offset - kHeapObjectTag)); |
661 | 661 |
662 push(code_entry); | 662 push(code_entry); |
663 | 663 |
664 // Save caller-saved registers, which includes js_function. | 664 // Save caller-saved registers, which includes js_function. |
665 DCHECK((kCallerSaved & js_function.bit()) != 0); | 665 DCHECK((kCallerSaved & js_function.bit()) != 0); |
666 DCHECK_EQ(kCallerSaved & code_entry.bit(), 0); | 666 DCHECK_EQ(kCallerSaved & code_entry.bit(), 0u); |
667 stm(db_w, sp, (kCallerSaved | lr.bit())); | 667 stm(db_w, sp, (kCallerSaved | lr.bit())); |
668 | 668 |
669 int argument_count = 3; | 669 int argument_count = 3; |
670 PrepareCallCFunction(argument_count, code_entry); | 670 PrepareCallCFunction(argument_count, code_entry); |
671 | 671 |
672 mov(r0, js_function); | 672 mov(r0, js_function); |
673 mov(r1, dst); | 673 mov(r1, dst); |
674 mov(r2, Operand(ExternalReference::isolate_address(isolate()))); | 674 mov(r2, Operand(ExternalReference::isolate_address(isolate()))); |
675 | 675 |
676 { | 676 { |
(...skipping 3317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3994 } | 3994 } |
3995 } | 3995 } |
3996 if (mag.shift > 0) mov(result, Operand(result, ASR, mag.shift)); | 3996 if (mag.shift > 0) mov(result, Operand(result, ASR, mag.shift)); |
3997 add(result, result, Operand(dividend, LSR, 31)); | 3997 add(result, result, Operand(dividend, LSR, 31)); |
3998 } | 3998 } |
3999 | 3999 |
4000 } // namespace internal | 4000 } // namespace internal |
4001 } // namespace v8 | 4001 } // namespace v8 |
4002 | 4002 |
4003 #endif // V8_TARGET_ARCH_ARM | 4003 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |