Index: src/regexp/mips/regexp-macro-assembler-mips.cc |
diff --git a/src/regexp/mips/regexp-macro-assembler-mips.cc b/src/regexp/mips/regexp-macro-assembler-mips.cc |
index 89bf40f169f04d94560f1618d39e847f30c832e0..062d6618e9849600b3fbaf79fbfbcd1970036bfc 100644 |
--- a/src/regexp/mips/regexp-macro-assembler-mips.cc |
+++ b/src/regexp/mips/regexp-macro-assembler-mips.cc |
@@ -38,13 +38,14 @@ |
* |
* The stack will have the following structure: |
* |
- * - fp[60] Isolate* isolate (address of the current isolate) |
- * - fp[56] direct_call (if 1, direct call from JavaScript code, |
+ * - fp[64] Isolate* isolate (address of the current isolate) |
+ * - fp[60] direct_call (if 1, direct call from JavaScript code, |
* if 0, call through the runtime system). |
- * - fp[52] stack_area_base (High end of the memory area to use as |
+ * - fp[56] stack_area_base (High end of the memory area to use as |
* backtracking stack). |
- * - fp[48] capture array size (may fit multiple sets of matches) |
- * - fp[44] int* capture_array (int[num_saved_registers_], for output). |
+ * - fp[52] capture array size (may fit multiple sets of matches) |
+ * - fp[48] int* capture_array (int[num_saved_registers_], for output). |
+ * - fp[44] secondary link/return address used by native call. |
* --- sp when called --- |
* - fp[40] return address (lr). |
* - fp[36] old frame pointer (r11). |
@@ -77,14 +78,17 @@ |
* int start_index, |
* Address start, |
* Address end, |
+ * Address secondary_return_address, // Only used by native call. |
* int* capture_output_array, |
- * int num_capture_registers, |
* byte* stack_area_base, |
- * bool direct_call = false, |
- * Isolate* isolate); |
+ * bool direct_call = false) |
* The call is performed by NativeRegExpMacroAssembler::Execute() |
* (in regexp-macro-assembler.cc) via the CALL_GENERATED_REGEXP_CODE macro |
* in mips/simulator-mips.h. |
+ * When calling as a non-direct call (i.e., from C++ code), the return address |
+ * area is overwritten with the ra register by the RegExp code. When doing a |
+ * direct call from generated code, the return address is placed there by |
+ * the calling code, as in a normal exit frame. |
*/ |
#define __ ACCESS_MASM(masm_) |