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..8e359ba235d792c9f483f39ee2cf22c836372aea 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: |
@@ -30,6 +30,7 @@ |
#include "ia32/assembler-ia32.h" |
#include "ia32/assembler-ia32-inl.h" |
+#include "globals.h" |
namespace v8 { |
namespace internal { |
@@ -135,7 +136,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 more |
Erik Corry
2012/05/11 11:01:00
more than one -> at least one
?
Yang
2012/05/16 14:58:47
Done.
|
+ // than 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,13 +149,18 @@ 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; |
// Initial size of code buffer. |
static const size_t kRegExpCodeSize = 1024; |
+ // The highest bit on the output registers count signals success. This |
Erik Corry
2012/05/11 11:01:00
lowest bit?
Yang
2012/05/16 14:58:47
Not even necessary anymore. Removed.
|
+ // is only relevant for global regular expressions. |
+ static const int kGlobalSuccessFlag = 1; |
+ |
// Load a number of characters at the given offset from the |
// current position, into the current-character register. |
void LoadCurrentCharacterUnchecked(int cp_offset, int character_count); |