Index: src/regexp-macro-assembler-irregexp.cc |
=================================================================== |
--- src/regexp-macro-assembler-irregexp.cc (revision 1141) |
+++ src/regexp-macro-assembler-irregexp.cc (working copy) |
@@ -84,6 +84,8 @@ |
void RegExpMacroAssemblerIrregexp::PopRegister(int register_index) { |
+ ASSERT(register_index >= 0); |
+ ASSERT(register_index <= kMaxRegister); |
Emit(BC_POP_REGISTER, register_index); |
} |
@@ -92,6 +94,7 @@ |
int register_index, |
StackCheckFlag check_stack_limit) { |
ASSERT(register_index >= 0); |
+ ASSERT(register_index <= kMaxRegister); |
Emit(BC_PUSH_REGISTER, register_index); |
} |
@@ -99,6 +102,7 @@ |
void RegExpMacroAssemblerIrregexp::WriteCurrentPositionToRegister( |
int register_index, int cp_offset) { |
ASSERT(register_index >= 0); |
+ ASSERT(register_index <= kMaxRegister); |
Emit(BC_SET_REGISTER_TO_CP, register_index); |
Emit32(cp_offset); // Current position offset. |
} |
@@ -112,6 +116,7 @@ |
void RegExpMacroAssemblerIrregexp::ReadCurrentPositionFromRegister( |
int register_index) { |
ASSERT(register_index >= 0); |
+ ASSERT(register_index <= kMaxRegister); |
Emit(BC_SET_CP_TO_REGISTER, register_index); |
} |
@@ -119,6 +124,7 @@ |
void RegExpMacroAssemblerIrregexp::WriteStackPointerToRegister( |
int register_index) { |
ASSERT(register_index >= 0); |
+ ASSERT(register_index <= kMaxRegister); |
Emit(BC_SET_REGISTER_TO_SP, register_index); |
} |
@@ -126,12 +132,14 @@ |
void RegExpMacroAssemblerIrregexp::ReadStackPointerFromRegister( |
int register_index) { |
ASSERT(register_index >= 0); |
+ ASSERT(register_index <= kMaxRegister); |
Emit(BC_SET_SP_TO_REGISTER, register_index); |
} |
void RegExpMacroAssemblerIrregexp::SetRegister(int register_index, int to) { |
ASSERT(register_index >= 0); |
+ ASSERT(register_index <= kMaxRegister); |
Emit(BC_SET_REGISTER, register_index); |
Emit32(to); |
} |
@@ -139,6 +147,7 @@ |
void RegExpMacroAssemblerIrregexp::AdvanceRegister(int register_index, int by) { |
ASSERT(register_index >= 0); |
+ ASSERT(register_index <= kMaxRegister); |
Emit(BC_ADVANCE_REGISTER, register_index); |
Emit32(by); |
} |
@@ -182,6 +191,8 @@ |
void RegExpMacroAssemblerIrregexp::AdvanceCurrentPosition(int by) { |
+ ASSERT(by >= kMinCPOffset); |
+ ASSERT(by <= kMaxCPOffset); |
Emit(BC_ADVANCE_CP, by); |
} |
@@ -197,6 +208,8 @@ |
Label* on_failure, |
bool check_bounds, |
int characters) { |
+ ASSERT(cp_offset >= kMinCPOffset); |
+ ASSERT(cp_offset <= kMaxCPOffset); |
int bytecode; |
if (check_bounds) { |
if (characters == 4) { |
@@ -315,6 +328,8 @@ |
void RegExpMacroAssemblerIrregexp::CheckNotBackReference(int start_reg, |
Label* on_not_equal) { |
+ ASSERT(start_reg >= 0); |
+ ASSERT(start_reg <= kMaxRegister); |
Emit(BC_CHECK_NOT_BACK_REF, start_reg); |
EmitOrLink(on_not_equal); |
} |
@@ -323,6 +338,8 @@ |
void RegExpMacroAssemblerIrregexp::CheckNotBackReferenceIgnoreCase( |
int start_reg, |
Label* on_not_equal) { |
+ ASSERT(start_reg >= 0); |
+ ASSERT(start_reg <= kMaxRegister); |
Emit(BC_CHECK_NOT_BACK_REF_NO_CASE, start_reg); |
EmitOrLink(on_not_equal); |
} |
@@ -331,6 +348,8 @@ |
void RegExpMacroAssemblerIrregexp::CheckNotRegistersEqual(int reg1, |
int reg2, |
Label* on_not_equal) { |
+ ASSERT(reg1 >= 0); |
+ ASSERT(reg1 <= kMaxRegister); |
Emit(BC_CHECK_NOT_REGS_EQUAL, reg1); |
Emit32(reg2); |
EmitOrLink(on_not_equal); |
@@ -373,6 +392,8 @@ |
int cp_offset, |
Label* on_failure, |
bool check_end_of_string) { |
+ ASSERT(cp_offset >= kMinCPOffset); |
+ ASSERT(cp_offset + str.length() - 1 <= kMaxCPOffset); |
// It is vital that this loop is backwards due to the unchecked character |
// load below. |
for (int i = str.length() - 1; i >= 0; i--) { |
@@ -391,7 +412,8 @@ |
void RegExpMacroAssemblerIrregexp::IfRegisterLT(int register_index, |
int comparand, |
Label* on_less_than) { |
- ASSERT(comparand >= 0 && comparand <= 65535); |
+ ASSERT(register_index >= 0); |
+ ASSERT(register_index <= kMaxRegister); |
Emit(BC_CHECK_REGISTER_LT, register_index); |
Emit32(comparand); |
EmitOrLink(on_less_than); |
@@ -401,7 +423,8 @@ |
void RegExpMacroAssemblerIrregexp::IfRegisterGE(int register_index, |
int comparand, |
Label* on_greater_or_equal) { |
- ASSERT(comparand >= 0 && comparand <= 65535); |
+ ASSERT(register_index >= 0); |
+ ASSERT(register_index <= kMaxRegister); |
Emit(BC_CHECK_REGISTER_GE, register_index); |
Emit32(comparand); |
EmitOrLink(on_greater_or_equal); |
@@ -410,6 +433,8 @@ |
void RegExpMacroAssemblerIrregexp::IfRegisterEqPos(int register_index, |
Label* on_eq) { |
+ ASSERT(register_index >= 0); |
+ ASSERT(register_index <= kMaxRegister); |
Emit(BC_CHECK_REGISTER_EQ_POS, register_index); |
EmitOrLink(on_eq); |
} |