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

Side by Side Diff: src/mips/deoptimizer-mips.cc

Issue 12211088: MIPS: Add separate flag for --trace-stub-failures (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 10 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 | « 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 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 575 matching lines...) Expand 10 before | Expand all | Expand 10 after
586 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; caller's pc\n", 586 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; caller's pc\n",
587 top_address + output_offset, output_offset, callers_pc); 587 top_address + output_offset, output_offset, callers_pc);
588 } 588 }
589 589
590 // Read caller's FP from the previous frame, and set this frame's FP. 590 // Read caller's FP from the previous frame, and set this frame's FP.
591 output_offset -= kPointerSize; 591 output_offset -= kPointerSize;
592 intptr_t value = output_[frame_index - 1]->GetFp(); 592 intptr_t value = output_[frame_index - 1]->GetFp();
593 output_frame->SetFrameSlot(output_offset, value); 593 output_frame->SetFrameSlot(output_offset, value);
594 intptr_t fp_value = top_address + output_offset; 594 intptr_t fp_value = top_address + output_offset;
595 output_frame->SetFp(fp_value); 595 output_frame->SetFp(fp_value);
596 if (FLAG_trace_deopt) { 596 if (trace_) {
597 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; caller's fp\n", 597 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; caller's fp\n",
598 fp_value, output_offset, value); 598 fp_value, output_offset, value);
599 } 599 }
600 600
601 // The context can be gotten from the previous frame. 601 // The context can be gotten from the previous frame.
602 output_offset -= kPointerSize; 602 output_offset -= kPointerSize;
603 value = output_[frame_index - 1]->GetContext(); 603 value = output_[frame_index - 1]->GetContext();
604 output_frame->SetFrameSlot(output_offset, value); 604 output_frame->SetFrameSlot(output_offset, value);
605 if (FLAG_trace_deopt) { 605 if (trace_) {
606 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; context\n", 606 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; context\n",
607 top_address + output_offset, output_offset, value); 607 top_address + output_offset, output_offset, value);
608 } 608 }
609 609
610 // A marker value is used in place of the function. 610 // A marker value is used in place of the function.
611 output_offset -= kPointerSize; 611 output_offset -= kPointerSize;
612 value = reinterpret_cast<intptr_t>(Smi::FromInt(StackFrame::CONSTRUCT)); 612 value = reinterpret_cast<intptr_t>(Smi::FromInt(StackFrame::CONSTRUCT));
613 output_frame->SetFrameSlot(output_offset, value); 613 output_frame->SetFrameSlot(output_offset, value);
614 if (FLAG_trace_deopt) { 614 if (trace_) {
615 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; function (construct sentinel)\n", 615 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; function (construct sentinel)\n",
616 top_address + output_offset, output_offset, value); 616 top_address + output_offset, output_offset, value);
617 } 617 }
618 618
619 // The output frame reflects a JSConstructStubGeneric frame. 619 // The output frame reflects a JSConstructStubGeneric frame.
620 output_offset -= kPointerSize; 620 output_offset -= kPointerSize;
621 value = reinterpret_cast<intptr_t>(construct_stub); 621 value = reinterpret_cast<intptr_t>(construct_stub);
622 output_frame->SetFrameSlot(output_offset, value); 622 output_frame->SetFrameSlot(output_offset, value);
623 if (FLAG_trace_deopt) { 623 if (trace_) {
624 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; code object\n", 624 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; code object\n",
625 top_address + output_offset, output_offset, value); 625 top_address + output_offset, output_offset, value);
626 } 626 }
627 627
628 // Number of incoming arguments. 628 // Number of incoming arguments.
629 output_offset -= kPointerSize; 629 output_offset -= kPointerSize;
630 value = reinterpret_cast<uint32_t>(Smi::FromInt(height - 1)); 630 value = reinterpret_cast<uint32_t>(Smi::FromInt(height - 1));
631 output_frame->SetFrameSlot(output_offset, value); 631 output_frame->SetFrameSlot(output_offset, value);
632 if (FLAG_trace_deopt) { 632 if (trace_) {
633 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; argc (%d)\n", 633 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; argc (%d)\n",
634 top_address + output_offset, output_offset, value, height - 1); 634 top_address + output_offset, output_offset, value, height - 1);
635 } 635 }
636 636
637 // Constructor function being invoked by the stub. 637 // Constructor function being invoked by the stub.
638 output_offset -= kPointerSize; 638 output_offset -= kPointerSize;
639 value = reinterpret_cast<intptr_t>(function); 639 value = reinterpret_cast<intptr_t>(function);
640 output_frame->SetFrameSlot(output_offset, value); 640 output_frame->SetFrameSlot(output_offset, value);
641 if (FLAG_trace_deopt) { 641 if (trace_) {
642 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; constructor function\n", 642 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; constructor function\n",
643 top_address + output_offset, output_offset, value); 643 top_address + output_offset, output_offset, value);
644 } 644 }
645 645
646 // The newly allocated object was passed as receiver in the artificial 646 // The newly allocated object was passed as receiver in the artificial
647 // constructor stub environment created by HEnvironment::CopyForInlining(). 647 // constructor stub environment created by HEnvironment::CopyForInlining().
648 output_offset -= kPointerSize; 648 output_offset -= kPointerSize;
649 value = output_frame->GetFrameSlot(output_frame_size - kPointerSize); 649 value = output_frame->GetFrameSlot(output_frame_size - kPointerSize);
650 output_frame->SetFrameSlot(output_offset, value); 650 output_frame->SetFrameSlot(output_offset, value);
651 if (FLAG_trace_deopt) { 651 if (trace_) {
652 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; allocated receiver\n", 652 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; allocated receiver\n",
653 top_address + output_offset, output_offset, value); 653 top_address + output_offset, output_offset, value);
654 } 654 }
655 655
656 ASSERT(0 == output_offset); 656 ASSERT(0 == output_offset);
657 657
658 uint32_t pc = reinterpret_cast<uint32_t>( 658 uint32_t pc = reinterpret_cast<uint32_t>(
659 construct_stub->instruction_start() + 659 construct_stub->instruction_start() +
660 isolate_->heap()->construct_stub_deopt_pc_offset()->value()); 660 isolate_->heap()->construct_stub_deopt_pc_offset()->value());
661 output_frame->SetPc(pc); 661 output_frame->SetPc(pc);
662 } 662 }
663 663
664 664
665 void Deoptimizer::DoComputeAccessorStubFrame(TranslationIterator* iterator, 665 void Deoptimizer::DoComputeAccessorStubFrame(TranslationIterator* iterator,
666 int frame_index, 666 int frame_index,
667 bool is_setter_stub_frame) { 667 bool is_setter_stub_frame) {
668 JSFunction* accessor = JSFunction::cast(ComputeLiteral(iterator->Next())); 668 JSFunction* accessor = JSFunction::cast(ComputeLiteral(iterator->Next()));
669 // The receiver (and the implicit return value, if any) are expected in 669 // The receiver (and the implicit return value, if any) are expected in
670 // registers by the LoadIC/StoreIC, so they don't belong to the output stack 670 // registers by the LoadIC/StoreIC, so they don't belong to the output stack
671 // frame. This means that we have to use a height of 0. 671 // frame. This means that we have to use a height of 0.
672 unsigned height = 0; 672 unsigned height = 0;
673 unsigned height_in_bytes = height * kPointerSize; 673 unsigned height_in_bytes = height * kPointerSize;
674 const char* kind = is_setter_stub_frame ? "setter" : "getter"; 674 const char* kind = is_setter_stub_frame ? "setter" : "getter";
675 if (FLAG_trace_deopt) { 675 if (trace_) {
676 PrintF(" translating %s stub => height=%u\n", kind, height_in_bytes); 676 PrintF(" translating %s stub => height=%u\n", kind, height_in_bytes);
677 } 677 }
678 678
679 // We need 5 stack entries from StackFrame::INTERNAL (ra, fp, cp, frame type, 679 // We need 5 stack entries from StackFrame::INTERNAL (ra, fp, cp, frame type,
680 // code object, see MacroAssembler::EnterFrame). For a setter stub frame we 680 // code object, see MacroAssembler::EnterFrame). For a setter stub frame we
681 // need one additional entry for the implicit return value, see 681 // need one additional entry for the implicit return value, see
682 // StoreStubCompiler::CompileStoreViaSetter. 682 // StoreStubCompiler::CompileStoreViaSetter.
683 unsigned fixed_frame_entries = 5 + (is_setter_stub_frame ? 1 : 0); 683 unsigned fixed_frame_entries = 5 + (is_setter_stub_frame ? 1 : 0);
684 unsigned fixed_frame_size = fixed_frame_entries * kPointerSize; 684 unsigned fixed_frame_size = fixed_frame_entries * kPointerSize;
685 unsigned output_frame_size = height_in_bytes + fixed_frame_size; 685 unsigned output_frame_size = height_in_bytes + fixed_frame_size;
(...skipping 12 matching lines...) Expand all
698 // this frame's size. 698 // this frame's size.
699 uint32_t top_address = output_[frame_index - 1]->GetTop() - output_frame_size; 699 uint32_t top_address = output_[frame_index - 1]->GetTop() - output_frame_size;
700 output_frame->SetTop(top_address); 700 output_frame->SetTop(top_address);
701 701
702 unsigned output_offset = output_frame_size; 702 unsigned output_offset = output_frame_size;
703 703
704 // Read caller's PC from the previous frame. 704 // Read caller's PC from the previous frame.
705 output_offset -= kPointerSize; 705 output_offset -= kPointerSize;
706 intptr_t value = output_[frame_index - 1]->GetPc(); 706 intptr_t value = output_[frame_index - 1]->GetPc();
707 output_frame->SetFrameSlot(output_offset, value); 707 output_frame->SetFrameSlot(output_offset, value);
708 if (FLAG_trace_deopt) { 708 if (trace_) {
709 PrintF(" 0x%08" V8PRIxPTR ": [top + %u] <- 0x%08" V8PRIxPTR 709 PrintF(" 0x%08" V8PRIxPTR ": [top + %u] <- 0x%08" V8PRIxPTR
710 " ; caller's pc\n", 710 " ; caller's pc\n",
711 top_address + output_offset, output_offset, value); 711 top_address + output_offset, output_offset, value);
712 } 712 }
713 713
714 // Read caller's FP from the previous frame, and set this frame's FP. 714 // Read caller's FP from the previous frame, and set this frame's FP.
715 output_offset -= kPointerSize; 715 output_offset -= kPointerSize;
716 value = output_[frame_index - 1]->GetFp(); 716 value = output_[frame_index - 1]->GetFp();
717 output_frame->SetFrameSlot(output_offset, value); 717 output_frame->SetFrameSlot(output_offset, value);
718 intptr_t fp_value = top_address + output_offset; 718 intptr_t fp_value = top_address + output_offset;
719 output_frame->SetFp(fp_value); 719 output_frame->SetFp(fp_value);
720 if (FLAG_trace_deopt) { 720 if (trace_) {
721 PrintF(" 0x%08" V8PRIxPTR ": [top + %u] <- 0x%08" V8PRIxPTR 721 PrintF(" 0x%08" V8PRIxPTR ": [top + %u] <- 0x%08" V8PRIxPTR
722 " ; caller's fp\n", 722 " ; caller's fp\n",
723 fp_value, output_offset, value); 723 fp_value, output_offset, value);
724 } 724 }
725 725
726 // The context can be gotten from the previous frame. 726 // The context can be gotten from the previous frame.
727 output_offset -= kPointerSize; 727 output_offset -= kPointerSize;
728 value = output_[frame_index - 1]->GetContext(); 728 value = output_[frame_index - 1]->GetContext();
729 output_frame->SetFrameSlot(output_offset, value); 729 output_frame->SetFrameSlot(output_offset, value);
730 if (FLAG_trace_deopt) { 730 if (trace_) {
731 PrintF(" 0x%08" V8PRIxPTR ": [top + %u] <- 0x%08" V8PRIxPTR 731 PrintF(" 0x%08" V8PRIxPTR ": [top + %u] <- 0x%08" V8PRIxPTR
732 " ; context\n", 732 " ; context\n",
733 top_address + output_offset, output_offset, value); 733 top_address + output_offset, output_offset, value);
734 } 734 }
735 735
736 // A marker value is used in place of the function. 736 // A marker value is used in place of the function.
737 output_offset -= kPointerSize; 737 output_offset -= kPointerSize;
738 value = reinterpret_cast<intptr_t>(Smi::FromInt(StackFrame::INTERNAL)); 738 value = reinterpret_cast<intptr_t>(Smi::FromInt(StackFrame::INTERNAL));
739 output_frame->SetFrameSlot(output_offset, value); 739 output_frame->SetFrameSlot(output_offset, value);
740 if (FLAG_trace_deopt) { 740 if (trace_) {
741 PrintF(" 0x%08" V8PRIxPTR ": [top + %u] <- 0x%08" V8PRIxPTR 741 PrintF(" 0x%08" V8PRIxPTR ": [top + %u] <- 0x%08" V8PRIxPTR
742 " ; function (%s sentinel)\n", 742 " ; function (%s sentinel)\n",
743 top_address + output_offset, output_offset, value, kind); 743 top_address + output_offset, output_offset, value, kind);
744 } 744 }
745 745
746 // Get Code object from accessor stub. 746 // Get Code object from accessor stub.
747 output_offset -= kPointerSize; 747 output_offset -= kPointerSize;
748 Builtins::Name name = is_setter_stub_frame ? 748 Builtins::Name name = is_setter_stub_frame ?
749 Builtins::kStoreIC_Setter_ForDeopt : 749 Builtins::kStoreIC_Setter_ForDeopt :
750 Builtins::kLoadIC_Getter_ForDeopt; 750 Builtins::kLoadIC_Getter_ForDeopt;
751 Code* accessor_stub = isolate_->builtins()->builtin(name); 751 Code* accessor_stub = isolate_->builtins()->builtin(name);
752 value = reinterpret_cast<intptr_t>(accessor_stub); 752 value = reinterpret_cast<intptr_t>(accessor_stub);
753 output_frame->SetFrameSlot(output_offset, value); 753 output_frame->SetFrameSlot(output_offset, value);
754 if (FLAG_trace_deopt) { 754 if (trace_) {
755 PrintF(" 0x%08" V8PRIxPTR ": [top + %u] <- 0x%08" V8PRIxPTR 755 PrintF(" 0x%08" V8PRIxPTR ": [top + %u] <- 0x%08" V8PRIxPTR
756 " ; code object\n", 756 " ; code object\n",
757 top_address + output_offset, output_offset, value); 757 top_address + output_offset, output_offset, value);
758 } 758 }
759 759
760 // Skip receiver. 760 // Skip receiver.
761 Translation::Opcode opcode = 761 Translation::Opcode opcode =
762 static_cast<Translation::Opcode>(iterator->Next()); 762 static_cast<Translation::Opcode>(iterator->Next());
763 iterator->Skip(Translation::NumberOfOperandsFor(opcode)); 763 iterator->Skip(Translation::NumberOfOperandsFor(opcode));
764 764
(...skipping 25 matching lines...) Expand all
790 if (frame_index != 0) { 790 if (frame_index != 0) {
791 function = JSFunction::cast(ComputeLiteral(iterator->Next())); 791 function = JSFunction::cast(ComputeLiteral(iterator->Next()));
792 } else { 792 } else {
793 int closure_id = iterator->Next(); 793 int closure_id = iterator->Next();
794 USE(closure_id); 794 USE(closure_id);
795 ASSERT_EQ(Translation::kSelfLiteralId, closure_id); 795 ASSERT_EQ(Translation::kSelfLiteralId, closure_id);
796 function = function_; 796 function = function_;
797 } 797 }
798 unsigned height = iterator->Next(); 798 unsigned height = iterator->Next();
799 unsigned height_in_bytes = height * kPointerSize; 799 unsigned height_in_bytes = height * kPointerSize;
800 if (FLAG_trace_deopt) { 800 if (trace_) {
801 PrintF(" translating "); 801 PrintF(" translating ");
802 function->PrintName(); 802 function->PrintName();
803 PrintF(" => node=%d, height=%d\n", node_id.ToInt(), height_in_bytes); 803 PrintF(" => node=%d, height=%d\n", node_id.ToInt(), height_in_bytes);
804 } 804 }
805 805
806 // The 'fixed' part of the frame consists of the incoming parameters and 806 // The 'fixed' part of the frame consists of the incoming parameters and
807 // the part described by JavaScriptFrameConstants. 807 // the part described by JavaScriptFrameConstants.
808 unsigned fixed_frame_size = ComputeFixedSize(function); 808 unsigned fixed_frame_size = ComputeFixedSize(function);
809 unsigned input_frame_size = input_->GetFrameSize(); 809 unsigned input_frame_size = input_->GetFrameSize();
810 unsigned output_frame_size = height_in_bytes + fixed_frame_size; 810 unsigned output_frame_size = height_in_bytes + fixed_frame_size;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 // function code and AST id of the bailout. 854 // function code and AST id of the bailout.
855 output_offset -= kPointerSize; 855 output_offset -= kPointerSize;
856 input_offset -= kPointerSize; 856 input_offset -= kPointerSize;
857 intptr_t value; 857 intptr_t value;
858 if (is_bottommost) { 858 if (is_bottommost) {
859 value = input_->GetFrameSlot(input_offset); 859 value = input_->GetFrameSlot(input_offset);
860 } else { 860 } else {
861 value = output_[frame_index - 1]->GetPc(); 861 value = output_[frame_index - 1]->GetPc();
862 } 862 }
863 output_frame->SetFrameSlot(output_offset, value); 863 output_frame->SetFrameSlot(output_offset, value);
864 if (FLAG_trace_deopt) { 864 if (trace_) {
865 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; caller's pc\n", 865 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; caller's pc\n",
866 top_address + output_offset, output_offset, value); 866 top_address + output_offset, output_offset, value);
867 } 867 }
868 868
869 // The caller's frame pointer for the bottommost output frame is the same 869 // The caller's frame pointer for the bottommost output frame is the same
870 // as in the input frame. For all subsequent output frames, it can be 870 // as in the input frame. For all subsequent output frames, it can be
871 // read from the previous one. Also compute and set this frame's frame 871 // read from the previous one. Also compute and set this frame's frame
872 // pointer. 872 // pointer.
873 output_offset -= kPointerSize; 873 output_offset -= kPointerSize;
874 input_offset -= kPointerSize; 874 input_offset -= kPointerSize;
875 if (is_bottommost) { 875 if (is_bottommost) {
876 value = input_->GetFrameSlot(input_offset); 876 value = input_->GetFrameSlot(input_offset);
877 } else { 877 } else {
878 value = output_[frame_index - 1]->GetFp(); 878 value = output_[frame_index - 1]->GetFp();
879 } 879 }
880 output_frame->SetFrameSlot(output_offset, value); 880 output_frame->SetFrameSlot(output_offset, value);
881 intptr_t fp_value = top_address + output_offset; 881 intptr_t fp_value = top_address + output_offset;
882 ASSERT(!is_bottommost || input_->GetRegister(fp.code()) == fp_value); 882 ASSERT(!is_bottommost || input_->GetRegister(fp.code()) == fp_value);
883 output_frame->SetFp(fp_value); 883 output_frame->SetFp(fp_value);
884 if (is_topmost) { 884 if (is_topmost) {
885 output_frame->SetRegister(fp.code(), fp_value); 885 output_frame->SetRegister(fp.code(), fp_value);
886 } 886 }
887 if (FLAG_trace_deopt) { 887 if (trace_) {
888 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; caller's fp\n", 888 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; caller's fp\n",
889 fp_value, output_offset, value); 889 fp_value, output_offset, value);
890 } 890 }
891 891
892 // For the bottommost output frame the context can be gotten from the input 892 // For the bottommost output frame the context can be gotten from the input
893 // frame. For all subsequent output frames it can be gotten from the function 893 // frame. For all subsequent output frames it can be gotten from the function
894 // so long as we don't inline functions that need local contexts. 894 // so long as we don't inline functions that need local contexts.
895 output_offset -= kPointerSize; 895 output_offset -= kPointerSize;
896 input_offset -= kPointerSize; 896 input_offset -= kPointerSize;
897 if (is_bottommost) { 897 if (is_bottommost) {
898 value = input_->GetFrameSlot(input_offset); 898 value = input_->GetFrameSlot(input_offset);
899 } else { 899 } else {
900 value = reinterpret_cast<intptr_t>(function->context()); 900 value = reinterpret_cast<intptr_t>(function->context());
901 } 901 }
902 output_frame->SetFrameSlot(output_offset, value); 902 output_frame->SetFrameSlot(output_offset, value);
903 output_frame->SetContext(value); 903 output_frame->SetContext(value);
904 if (is_topmost) output_frame->SetRegister(cp.code(), value); 904 if (is_topmost) output_frame->SetRegister(cp.code(), value);
905 if (FLAG_trace_deopt) { 905 if (trace_) {
906 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; context\n", 906 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; context\n",
907 top_address + output_offset, output_offset, value); 907 top_address + output_offset, output_offset, value);
908 } 908 }
909 909
910 // The function was mentioned explicitly in the BEGIN_FRAME. 910 // The function was mentioned explicitly in the BEGIN_FRAME.
911 output_offset -= kPointerSize; 911 output_offset -= kPointerSize;
912 input_offset -= kPointerSize; 912 input_offset -= kPointerSize;
913 value = reinterpret_cast<uint32_t>(function); 913 value = reinterpret_cast<uint32_t>(function);
914 // The function for the bottommost output frame should also agree with the 914 // The function for the bottommost output frame should also agree with the
915 // input frame. 915 // input frame.
916 ASSERT(!is_bottommost || input_->GetFrameSlot(input_offset) == value); 916 ASSERT(!is_bottommost || input_->GetFrameSlot(input_offset) == value);
917 output_frame->SetFrameSlot(output_offset, value); 917 output_frame->SetFrameSlot(output_offset, value);
918 if (FLAG_trace_deopt) { 918 if (trace_) {
919 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; function\n", 919 PrintF(" 0x%08x: [top + %d] <- 0x%08x ; function\n",
920 top_address + output_offset, output_offset, value); 920 top_address + output_offset, output_offset, value);
921 } 921 }
922 922
923 // Translate the rest of the frame. 923 // Translate the rest of the frame.
924 for (unsigned i = 0; i < height; ++i) { 924 for (unsigned i = 0; i < height; ++i) {
925 output_offset -= kPointerSize; 925 output_offset -= kPointerSize;
926 DoTranslateCommand(iterator, frame_index, output_offset); 926 DoTranslateCommand(iterator, frame_index, output_offset);
927 } 927 }
928 ASSERT(0 == output_offset); 928 ASSERT(0 == output_offset);
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
1228 } 1228 }
1229 1229
1230 ASSERT_EQ(masm()->SizeOfCodeGeneratedSince(&table_start), 1230 ASSERT_EQ(masm()->SizeOfCodeGeneratedSince(&table_start),
1231 count() * table_entry_size_); 1231 count() * table_entry_size_);
1232 } 1232 }
1233 1233
1234 #undef __ 1234 #undef __
1235 1235
1236 1236
1237 } } // namespace v8::internal 1237 } } // namespace v8::internal
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