Index: src/ia32/regexp-macro-assembler-ia32.cc |
diff --git a/src/ia32/regexp-macro-assembler-ia32.cc b/src/ia32/regexp-macro-assembler-ia32.cc |
index bc8107633e4fd0b363bc34050b6e240629b700e1..39374eed5d3288c36a667d978af5c26368c0f8c3 100644 |
--- a/src/ia32/regexp-macro-assembler-ia32.cc |
+++ b/src/ia32/regexp-macro-assembler-ia32.cc |
@@ -337,8 +337,9 @@ void RegExpMacroAssemblerIA32::CheckNotBackReferenceIgnoreCase( |
__ add(edx, Operand(esi)); |
__ mov(Operand(esp, 0 * kPointerSize), edx); |
- Address function_address = FUNCTION_ADDR(&CaseInsensitiveCompareUC16); |
- CallCFunction(function_address, argument_count); |
+ ExternalReference compare = |
+ ExternalReference::re_case_insensitive_compare_uc16(); |
+ CallCFunction(compare, argument_count); |
// Pop original values before reacting on result value. |
__ pop(ebx); |
__ pop(backtrack_stackpointer()); |
@@ -745,7 +746,8 @@ Handle<Object> RegExpMacroAssemblerIA32::GetCode(Handle<String> source) { |
__ lea(eax, Operand(ebp, kStackHighEnd)); |
__ mov(Operand(esp, 1 * kPointerSize), eax); |
__ mov(Operand(esp, 0 * kPointerSize), backtrack_stackpointer()); |
- CallCFunction(FUNCTION_ADDR(&GrowStack), num_arguments); |
+ ExternalReference grow_stack = ExternalReference::re_grow_stack(); |
+ CallCFunction(grow_stack, num_arguments); |
// If return NULL, we have failed to grow the stack, and |
// must exit with a stack-overflow exception. |
__ or_(eax, Operand(eax)); |
@@ -913,7 +915,9 @@ void RegExpMacroAssemblerIA32::CallCheckStackGuardState(Register scratch) { |
// Next address on the stack (will be address of return address). |
__ lea(eax, Operand(esp, -kPointerSize)); |
__ mov(Operand(esp, 0 * kPointerSize), eax); |
- CallCFunction(FUNCTION_ADDR(&CheckStackGuardState), num_arguments); |
+ ExternalReference check_stack_guard = |
+ ExternalReference::re_check_stack_guard_state(); |
+ CallCFunction(check_stack_guard, num_arguments); |
} |
@@ -996,22 +1000,6 @@ int RegExpMacroAssemblerIA32::CheckStackGuardState(Address* return_address, |
} |
-Address RegExpMacroAssemblerIA32::GrowStack(Address stack_pointer, |
- Address* stack_base) { |
- size_t size = RegExpStack::stack_capacity(); |
- Address old_stack_base = RegExpStack::stack_base(); |
- ASSERT(old_stack_base == *stack_base); |
- ASSERT(stack_pointer <= old_stack_base); |
- ASSERT(static_cast<size_t>(old_stack_base - stack_pointer) <= size); |
- Address new_stack_base = RegExpStack::EnsureCapacity(size * 2); |
- if (new_stack_base == NULL) { |
- return NULL; |
- } |
- *stack_base = new_stack_base; |
- return new_stack_base - (old_stack_base - stack_pointer); |
-} |
- |
- |
Operand RegExpMacroAssemblerIA32::register_location(int register_index) { |
ASSERT(register_index < (1<<30)); |
if (num_registers_ <= register_index) { |
@@ -1135,9 +1123,9 @@ void RegExpMacroAssemblerIA32::FrameAlign(int num_arguments, Register scratch) { |
} |
-void RegExpMacroAssemblerIA32::CallCFunction(Address function_address, |
+void RegExpMacroAssemblerIA32::CallCFunction(ExternalReference function, |
int num_arguments) { |
- __ mov(Operand(eax), Immediate(reinterpret_cast<int32_t>(function_address))); |
+ __ mov(Operand(eax), Immediate(function)); |
__ call(Operand(eax)); |
if (OS::ActivationFrameAlignment() != 0) { |
__ mov(esp, Operand(esp, num_arguments * kPointerSize)); |
@@ -1172,6 +1160,10 @@ void RegExpMacroAssemblerIA32::LoadCurrentCharacterUnchecked(int cp_offset, |
} |
+void RegExpCEntryStub::Generate(MacroAssembler* masm_) { |
+ __ int3(); // Unused on ia32. |
+} |
+ |
#undef __ |
#endif // V8_NATIVE_REGEXP |