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

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

Issue 363313002: 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/x64/code-stubs-x64.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 // Result must now be exception. If there is no pending exception already a 1599
1600 // stack overflow (on the backtrack stack) was detected in RegExp code but 1600 // Result must now be exception.
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.
1603 ExternalReference pending_exception(Isolate::kPendingExceptionAddress, 1601 ExternalReference pending_exception(Isolate::kPendingExceptionAddress,
1604 isolate()); 1602 isolate());
1605 __ mov(edx, Immediate(isolate()->factory()->the_hole_value())); 1603 __ mov(edx, Immediate(isolate()->factory()->the_hole_value()));
1606 __ mov(eax, Operand::StaticVariable(pending_exception)); 1604 __ mov(eax, Operand::StaticVariable(pending_exception));
1607 __ cmp(edx, eax);
1608 __ j(equal, &runtime);
1609 // For exception, throw the exception again.
1610 1605
1611 // Clear the pending exception variable. 1606 // Clear pending exception.
1612 __ mov(Operand::StaticVariable(pending_exception), edx); 1607 __ mov(Operand::StaticVariable(pending_exception), edx);
1613 1608
1614 // Special handling of termination exceptions which are uncatchable 1609 // Special handling of termination exceptions which are uncatchable
1615 // by javascript code. 1610 // by javascript code.
1616 __ cmp(eax, factory->termination_exception()); 1611 __ cmp(eax, factory->termination_exception());
1617 Label throw_termination_exception; 1612 Label throw_termination_exception;
1618 __ j(equal, &throw_termination_exception, Label::kNear); 1613 __ j(equal, &throw_termination_exception, Label::kNear);
1619 1614
1620 // Handle normal exception by following handler chain. 1615 // Handle normal exception by following handler chain.
1621 __ Throw(eax); 1616 __ Throw(eax);
(...skipping 3366 matching lines...) Expand 10 before | Expand all | Expand 10 after
4988 Operand(ebp, 7 * kPointerSize), 4983 Operand(ebp, 7 * kPointerSize),
4989 NULL); 4984 NULL);
4990 } 4985 }
4991 4986
4992 4987
4993 #undef __ 4988 #undef __
4994 4989
4995 } } // namespace v8::internal 4990 } } // namespace v8::internal
4996 4991
4997 #endif // V8_TARGET_ARCH_IA32 4992 #endif // V8_TARGET_ARCH_IA32
OLDNEW
« no previous file with comments | « src/arm64/code-stubs-arm64.cc ('k') | src/x64/code-stubs-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698