Index: src/ia32/regexp-macro-assembler-ia32.h |
diff --git a/src/ia32/regexp-macro-assembler-ia32.h b/src/ia32/regexp-macro-assembler-ia32.h |
index 78cd06958cd808d128c54771a63111859c83e15e..955265bc322572535917ca90806e4ddb0ed0a897 100644 |
--- a/src/ia32/regexp-macro-assembler-ia32.h |
+++ b/src/ia32/regexp-macro-assembler-ia32.h |
@@ -1,4 +1,4 @@ |
-// Copyright 2008-2009 the V8 project authors. All rights reserved. |
+// Copyright 2012 the V8 project authors. All rights reserved. |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
@@ -135,7 +135,11 @@ class RegExpMacroAssemblerIA32: public NativeRegExpMacroAssembler { |
static const int kInputStart = kStartIndex + kPointerSize; |
static const int kInputEnd = kInputStart + kPointerSize; |
static const int kRegisterOutput = kInputEnd + kPointerSize; |
- static const int kStackHighEnd = kRegisterOutput + kPointerSize; |
+ // For the case of global regular expression, we have room to store at least |
+ // one set of capture results. For the case of non-global regexp, we ignore |
+ // this value. |
+ static const int kNumOutputRegisters = kRegisterOutput + kPointerSize; |
+ static const int kStackHighEnd = kNumOutputRegisters + kPointerSize; |
static const int kDirectCall = kStackHighEnd + kPointerSize; |
static const int kIsolate = kDirectCall + kPointerSize; |
// Below the frame pointer - local stack variables. |
@@ -144,7 +148,8 @@ class RegExpMacroAssemblerIA32: public NativeRegExpMacroAssembler { |
static const int kBackup_esi = kFramePointer - kPointerSize; |
static const int kBackup_edi = kBackup_esi - kPointerSize; |
static const int kBackup_ebx = kBackup_edi - kPointerSize; |
- static const int kInputStartMinusOne = kBackup_ebx - kPointerSize; |
+ static const int kSuccessfulCaptures = kBackup_ebx - kPointerSize; |
+ static const int kInputStartMinusOne = kSuccessfulCaptures - kPointerSize; |
// First register address. Following registers are below it on the stack. |
static const int kRegisterZero = kInputStartMinusOne - kPointerSize; |