Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(103)

Side by Side Diff: src/ia32/code-stubs-ia32.cc

Issue 369063005: Revert "Remove unnecessary check in RegExpExecStub." (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/arm64/code-stubs-arm64.cc ('k') | src/mips/code-stubs-mips.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #if V8_TARGET_ARCH_IA32 7 #if V8_TARGET_ARCH_IA32
8 8
9 #include "src/bootstrapper.h" 9 #include "src/bootstrapper.h"
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
(...skipping 1578 matching lines...) Expand 10 before | Expand all | Expand 10 after
1589 __ cmp(eax, 1); 1589 __ cmp(eax, 1);
1590 // We expect exactly one result since we force the called regexp to behave 1590 // We expect exactly one result since we force the called regexp to behave
1591 // as non-global. 1591 // as non-global.
1592 __ j(equal, &success); 1592 __ j(equal, &success);
1593 Label failure; 1593 Label failure;
1594 __ cmp(eax, NativeRegExpMacroAssembler::FAILURE); 1594 __ cmp(eax, NativeRegExpMacroAssembler::FAILURE);
1595 __ j(equal, &failure); 1595 __ j(equal, &failure);
1596 __ cmp(eax, NativeRegExpMacroAssembler::EXCEPTION); 1596 __ cmp(eax, NativeRegExpMacroAssembler::EXCEPTION);
1597 // If not exception it can only be retry. Handle that in the runtime system. 1597 // If not exception it can only be retry. Handle that in the runtime system.
1598 __ j(not_equal, &runtime); 1598 __ j(not_equal, &runtime);
1599 1599 // Result must now be exception. If there is no pending exception already a
1600 // Result must now be exception. 1600 // stack overflow (on the backtrack stack) was detected in RegExp code but
1601 // haven't created the exception yet. Handle that in the runtime system.
1602 // TODO(592): Rerunning the RegExp to get the stack overflow exception.
1601 ExternalReference pending_exception(Isolate::kPendingExceptionAddress, 1603 ExternalReference pending_exception(Isolate::kPendingExceptionAddress,
1602 isolate()); 1604 isolate());
1603 __ mov(edx, Immediate(isolate()->factory()->the_hole_value())); 1605 __ mov(edx, Immediate(isolate()->factory()->the_hole_value()));
1604 __ mov(eax, Operand::StaticVariable(pending_exception)); 1606 __ mov(eax, Operand::StaticVariable(pending_exception));
1607 __ cmp(edx, eax);
1608 __ j(equal, &runtime);
1609 // For exception, throw the exception again.
1605 1610
1606 // Clear pending exception. 1611 // Clear the pending exception variable.
1607 __ mov(Operand::StaticVariable(pending_exception), edx); 1612 __ mov(Operand::StaticVariable(pending_exception), edx);
1608 1613
1609 // Special handling of termination exceptions which are uncatchable 1614 // Special handling of termination exceptions which are uncatchable
1610 // by javascript code. 1615 // by javascript code.
1611 __ cmp(eax, factory->termination_exception()); 1616 __ cmp(eax, factory->termination_exception());
1612 Label throw_termination_exception; 1617 Label throw_termination_exception;
1613 __ j(equal, &throw_termination_exception, Label::kNear); 1618 __ j(equal, &throw_termination_exception, Label::kNear);
1614 1619
1615 // Handle normal exception by following handler chain. 1620 // Handle normal exception by following handler chain.
1616 __ Throw(eax); 1621 __ Throw(eax);
(...skipping 3366 matching lines...) Expand 10 before | Expand all | Expand 10 after
4983 Operand(ebp, 7 * kPointerSize), 4988 Operand(ebp, 7 * kPointerSize),
4984 NULL); 4989 NULL);
4985 } 4990 }
4986 4991
4987 4992
4988 #undef __ 4993 #undef __
4989 4994
4990 } } // namespace v8::internal 4995 } } // namespace v8::internal
4991 4996
4992 #endif // V8_TARGET_ARCH_IA32 4997 #endif // V8_TARGET_ARCH_IA32
OLDNEW
« no previous file with comments | « src/arm64/code-stubs-arm64.cc ('k') | src/mips/code-stubs-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698