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

Side by Side Diff: src/mips/code-stubs-mips.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/ia32/code-stubs-ia32.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_MIPS 7 #if V8_TARGET_ARCH_MIPS
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 2652 matching lines...) Expand 10 before | Expand all | Expand 10 after
2663 // last_match_info_elements: Last match info elements (callee saved) 2663 // last_match_info_elements: Last match info elements (callee saved)
2664 // Check the result. 2664 // Check the result.
2665 Label success; 2665 Label success;
2666 __ Branch(&success, eq, v0, Operand(1)); 2666 __ Branch(&success, eq, v0, Operand(1));
2667 // We expect exactly one result since we force the called regexp to behave 2667 // We expect exactly one result since we force the called regexp to behave
2668 // as non-global. 2668 // as non-global.
2669 Label failure; 2669 Label failure;
2670 __ Branch(&failure, eq, v0, Operand(NativeRegExpMacroAssembler::FAILURE)); 2670 __ Branch(&failure, eq, v0, Operand(NativeRegExpMacroAssembler::FAILURE));
2671 // If not exception it can only be retry. Handle that in the runtime system. 2671 // If not exception it can only be retry. Handle that in the runtime system.
2672 __ Branch(&runtime, ne, v0, Operand(NativeRegExpMacroAssembler::EXCEPTION)); 2672 __ Branch(&runtime, ne, v0, Operand(NativeRegExpMacroAssembler::EXCEPTION));
2673 2673 // Result must now be exception. If there is no pending exception already a
2674 // Result must now be exception. 2674 // stack overflow (on the backtrack stack) was detected in RegExp code but
2675 // haven't created the exception yet. Handle that in the runtime system.
2676 // TODO(592): Rerunning the RegExp to get the stack overflow exception.
2675 __ li(a1, Operand(isolate()->factory()->the_hole_value())); 2677 __ li(a1, Operand(isolate()->factory()->the_hole_value()));
2676 __ li(a2, Operand(ExternalReference(Isolate::kPendingExceptionAddress, 2678 __ li(a2, Operand(ExternalReference(Isolate::kPendingExceptionAddress,
2677 isolate()))); 2679 isolate())));
2678 __ lw(v0, MemOperand(a2, 0)); 2680 __ lw(v0, MemOperand(a2, 0));
2681 __ Branch(&runtime, eq, v0, Operand(a1));
2682
2679 __ sw(a1, MemOperand(a2, 0)); // Clear pending exception. 2683 __ sw(a1, MemOperand(a2, 0)); // Clear pending exception.
2680 2684
2681 // Check if the exception is a termination. If so, throw as uncatchable. 2685 // Check if the exception is a termination. If so, throw as uncatchable.
2682 __ LoadRoot(a0, Heap::kTerminationExceptionRootIndex); 2686 __ LoadRoot(a0, Heap::kTerminationExceptionRootIndex);
2683 Label termination_exception; 2687 Label termination_exception;
2684 __ Branch(&termination_exception, eq, v0, Operand(a0)); 2688 __ Branch(&termination_exception, eq, v0, Operand(a0));
2685 2689
2686 __ Throw(v0); 2690 __ Throw(v0);
2687 2691
2688 __ bind(&termination_exception); 2692 __ bind(&termination_exception);
(...skipping 2606 matching lines...) Expand 10 before | Expand all | Expand 10 after
5295 MemOperand(fp, 6 * kPointerSize), 5299 MemOperand(fp, 6 * kPointerSize),
5296 NULL); 5300 NULL);
5297 } 5301 }
5298 5302
5299 5303
5300 #undef __ 5304 #undef __
5301 5305
5302 } } // namespace v8::internal 5306 } } // namespace v8::internal
5303 5307
5304 #endif // V8_TARGET_ARCH_MIPS 5308 #endif // V8_TARGET_ARCH_MIPS
OLDNEW
« no previous file with comments | « src/ia32/code-stubs-ia32.cc ('k') | src/x64/code-stubs-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698