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 "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #if V8_TARGET_ARCH_X64 | 7 #if V8_TARGET_ARCH_X64 |
8 | 8 |
9 #include "src/cpu-profiler.h" | 9 #include "src/cpu-profiler.h" |
10 #include "src/log.h" | 10 #include "src/log.h" |
(...skipping 25 matching lines...) Expand all Loading... |
36 * RegExp registers. | 36 * RegExp registers. |
37 * - rsp : Points to tip of C stack. | 37 * - rsp : Points to tip of C stack. |
38 * - rcx : Points to tip of backtrack stack. The backtrack stack contains | 38 * - rcx : Points to tip of backtrack stack. The backtrack stack contains |
39 * only 32-bit values. Most are offsets from some base (e.g., character | 39 * only 32-bit values. Most are offsets from some base (e.g., character |
40 * positions from end of string or code location from Code* pointer). | 40 * positions from end of string or code location from Code* pointer). |
41 * - r8 : Code object pointer. Used to convert between absolute and | 41 * - r8 : Code object pointer. Used to convert between absolute and |
42 * code-object-relative addresses. | 42 * code-object-relative addresses. |
43 * | 43 * |
44 * The registers rax, rbx, r9 and r11 are free to use for computations. | 44 * The registers rax, rbx, r9 and r11 are free to use for computations. |
45 * If changed to use r12+, they should be saved as callee-save registers. | 45 * If changed to use r12+, they should be saved as callee-save registers. |
46 * The macro assembler special registers r12 and r13 (kSmiConstantRegister, | 46 * The macro assembler special register r13 (kRootRegister) isn't special |
47 * kRootRegister) aren't special during execution of RegExp code (they don't | 47 * during execution of RegExp code (it doesn't hold the value assumed when |
48 * hold the values assumed when creating JS code), so no Smi or Root related | 48 * creating JS code), so Root related macro operations can be used. |
49 * macro operations can be used. | |
50 * | 49 * |
51 * Each call to a C++ method should retain these registers. | 50 * Each call to a C++ method should retain these registers. |
52 * | 51 * |
53 * The stack will have the following content, in some order, indexable from the | 52 * The stack will have the following content, in some order, indexable from the |
54 * frame pointer (see, e.g., kStackHighEnd): | 53 * frame pointer (see, e.g., kStackHighEnd): |
55 * - Isolate* isolate (address of the current isolate) | 54 * - Isolate* isolate (address of the current isolate) |
56 * - direct_call (if 1, direct call from JavaScript code, if 0 call | 55 * - direct_call (if 1, direct call from JavaScript code, if 0 call |
57 * through the runtime system) | 56 * through the runtime system) |
58 * - stack_area_base (high end of the memory area to use as | 57 * - stack_area_base (high end of the memory area to use as |
59 * backtracking stack) | 58 * backtracking stack) |
(...skipping 1374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1434 } | 1433 } |
1435 } | 1434 } |
1436 | 1435 |
1437 #undef __ | 1436 #undef __ |
1438 | 1437 |
1439 #endif // V8_INTERPRETED_REGEXP | 1438 #endif // V8_INTERPRETED_REGEXP |
1440 | 1439 |
1441 }} // namespace v8::internal | 1440 }} // namespace v8::internal |
1442 | 1441 |
1443 #endif // V8_TARGET_ARCH_X64 | 1442 #endif // V8_TARGET_ARCH_X64 |
OLD | NEW |