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

Side by Side Diff: src/mips64/builtins-mips64.cc

Issue 1869343003: MIPS64: Fix '[generators] Decouple generator resume from fullcodegen.' (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 8 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
« no previous file with comments | « no previous file | no next file » | 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 #if V8_TARGET_ARCH_MIPS64 5 #if V8_TARGET_ARCH_MIPS64
6 6
7 #include "src/codegen.h" 7 #include "src/codegen.h"
8 #include "src/debug/debug.h" 8 #include "src/debug/debug.h"
9 #include "src/deoptimizer.h" 9 #include "src/deoptimizer.h"
10 #include "src/full-codegen/full-codegen.h" 10 #include "src/full-codegen/full-codegen.h"
(...skipping 700 matching lines...) Expand 10 before | Expand all | Expand 10 after
711 711
712 // Flood function if we are stepping. 712 // Flood function if we are stepping.
713 Label skip_flooding; 713 Label skip_flooding;
714 ExternalReference step_in_enabled = 714 ExternalReference step_in_enabled =
715 ExternalReference::debug_step_in_enabled_address(masm->isolate()); 715 ExternalReference::debug_step_in_enabled_address(masm->isolate());
716 __ li(t1, Operand(step_in_enabled)); 716 __ li(t1, Operand(step_in_enabled));
717 __ lb(t1, MemOperand(t1)); 717 __ lb(t1, MemOperand(t1));
718 __ Branch(&skip_flooding, eq, t1, Operand(zero_reg)); 718 __ Branch(&skip_flooding, eq, t1, Operand(zero_reg));
719 { 719 {
720 FrameScope scope(masm, StackFrame::INTERNAL); 720 FrameScope scope(masm, StackFrame::INTERNAL);
721 __ Push(a1, a2, t0); 721 __ Push(a1, a2, a4);
722 __ CallRuntime(Runtime::kDebugPrepareStepInIfStepping); 722 __ CallRuntime(Runtime::kDebugPrepareStepInIfStepping);
723 __ Pop(a1, a2); 723 __ Pop(a1, a2);
724 __ ld(t0, FieldMemOperand(a1, JSGeneratorObject::kFunctionOffset)); 724 __ ld(a4, FieldMemOperand(a1, JSGeneratorObject::kFunctionOffset));
725 } 725 }
726 __ bind(&skip_flooding); 726 __ bind(&skip_flooding);
727 727
728 // Push receiver. 728 // Push receiver.
729 __ ld(a5, FieldMemOperand(a1, JSGeneratorObject::kReceiverOffset)); 729 __ ld(a5, FieldMemOperand(a1, JSGeneratorObject::kReceiverOffset));
730 __ Push(a5); 730 __ Push(a5);
731 731
732 // ----------- S t a t e ------------- 732 // ----------- S t a t e -------------
733 // -- a1 : the JSGeneratorObject to resume 733 // -- a1 : the JSGeneratorObject to resume
734 // -- a2 : the resume mode (tagged) 734 // -- a2 : the resume mode (tagged)
(...skipping 25 matching lines...) Expand all
760 FrameScope scope(masm, StackFrame::MANUAL); 760 FrameScope scope(masm, StackFrame::MANUAL);
761 __ Push(ra, fp); 761 __ Push(ra, fp);
762 __ Move(fp, sp); 762 __ Move(fp, sp);
763 __ Push(cp, a4); 763 __ Push(cp, a4);
764 764
765 // Restore the operand stack. 765 // Restore the operand stack.
766 __ ld(a0, FieldMemOperand(a1, JSGeneratorObject::kOperandStackOffset)); 766 __ ld(a0, FieldMemOperand(a1, JSGeneratorObject::kOperandStackOffset));
767 __ ld(a3, FieldMemOperand(a0, FixedArray::kLengthOffset)); 767 __ ld(a3, FieldMemOperand(a0, FixedArray::kLengthOffset));
768 __ SmiUntag(a3); 768 __ SmiUntag(a3);
769 __ Daddu(a0, a0, Operand(FixedArray::kHeaderSize - kHeapObjectTag)); 769 __ Daddu(a0, a0, Operand(FixedArray::kHeaderSize - kHeapObjectTag));
770 __ Lsa(a3, a0, a3, kPointerSizeLog2); 770 __ Dlsa(a3, a0, a3, kPointerSizeLog2);
771 { 771 {
772 Label done_loop, loop; 772 Label done_loop, loop;
773 __ bind(&loop); 773 __ bind(&loop);
774 __ Branch(&done_loop, eq, a0, Operand(a3)); 774 __ Branch(&done_loop, eq, a0, Operand(a3));
775 __ ld(a5, MemOperand(a0)); 775 __ ld(a5, MemOperand(a0));
776 __ Push(a5); 776 __ Push(a5);
777 __ Branch(USE_DELAY_SLOT, &loop); 777 __ Branch(USE_DELAY_SLOT, &loop);
778 __ daddiu(a0, a0, kPointerSize); // In delay slot. 778 __ daddiu(a0, a0, kPointerSize); // In delay slot.
779 __ bind(&done_loop); 779 __ bind(&done_loop);
780 } 780 }
(...skipping 1920 matching lines...) Expand 10 before | Expand all | Expand 10 after
2701 } 2701 }
2702 } 2702 }
2703 2703
2704 2704
2705 #undef __ 2705 #undef __
2706 2706
2707 } // namespace internal 2707 } // namespace internal
2708 } // namespace v8 2708 } // namespace v8
2709 2709
2710 #endif // V8_TARGET_ARCH_MIPS64 2710 #endif // V8_TARGET_ARCH_MIPS64
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698