Index: src/regexp/arm64/regexp-macro-assembler-arm64.cc |
diff --git a/src/regexp/arm64/regexp-macro-assembler-arm64.cc b/src/regexp/arm64/regexp-macro-assembler-arm64.cc |
index d4b80a7c3f59df4936281c69cb176d0514990b26..7d015d096b2540ad40ff3e9e62637b453be41956 100644 |
--- a/src/regexp/arm64/regexp-macro-assembler-arm64.cc |
+++ b/src/regexp/arm64/regexp-macro-assembler-arm64.cc |
@@ -56,7 +56,10 @@ |
* (as referred to in |
* the code) |
* |
- * - fp[96] isolate Address of the current isolate. |
+ * - fp[104] isolate Address of the current isolate. |
+ * - fp[96] return_address Secondary link/return address |
+ * used by an exit frame if this is a |
+ * native call. |
* ^^^ csp when called ^^^ |
* - fp[88] lr Return from the RegExp code. |
* - fp[80] r29 Old frame pointer (CalleeSaved). |
@@ -86,18 +89,23 @@ |
* The data up to the return address must be placed there by the calling |
* code and the remaining arguments are passed in registers, e.g. by calling the |
* code entry as cast to a function with the signature: |
- * int (*match)(String* input_string, |
- * int start_index, |
- * Address start, |
- * Address end, |
- * int* capture_output_array, |
- * int num_capture_registers, |
- * byte* stack_area_base, |
+ * int (*match)(String* input, |
+ * int start_offset, |
+ * Address input_start, |
+ * Address input_end, |
+ * int* output, |
+ * int output_size, |
+ * Address stack_base, |
* bool direct_call = false, |
- * Isolate* isolate); |
+ * Address secondary_return_address, // Only used by native call. |
+ * Isolate* isolate) |
* The call is performed by NativeRegExpMacroAssembler::Execute() |
* (in regexp-macro-assembler.cc) via the CALL_GENERATED_REGEXP_CODE macro |
* in arm64/simulator-arm64.h. |
+ * When calling as a non-direct call (i.e., from C++ code), the return address |
+ * area is overwritten with the LR 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_) |