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

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

Issue 1147503002: MIPS64: Improve long branches utilizing code range. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fixed typo, addressed stale comment. Created 5 years, 6 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 | « src/mips64/assembler-mips64.h ('k') | src/mips64/assembler-mips64-inl.h » ('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 (c) 1994-2006 Sun Microsystems Inc. 1 // Copyright (c) 1994-2006 Sun Microsystems Inc.
2 // All Rights Reserved. 2 // All Rights Reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are 5 // modification, are permitted provided that the following conditions are
6 // met: 6 // met:
7 // 7 //
8 // - Redistributions of source code must retain the above copyright notice, 8 // - Redistributions of source code must retain the above copyright notice,
9 // this list of conditions and the following disclaimer. 9 // this list of conditions and the following disclaimer.
10 // 10 //
(...skipping 619 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 if ((instr & ~kImm16Mask) == 0) { 630 if ((instr & ~kImm16Mask) == 0) {
631 // Emitted label constant, not part of a branch. 631 // Emitted label constant, not part of a branch.
632 if (instr == 0) { 632 if (instr == 0) {
633 return kEndOfChain; 633 return kEndOfChain;
634 } else { 634 } else {
635 int32_t imm18 =((instr & static_cast<int32_t>(kImm16Mask)) << 16) >> 14; 635 int32_t imm18 =((instr & static_cast<int32_t>(kImm16Mask)) << 16) >> 14;
636 return (imm18 + pos); 636 return (imm18 + pos);
637 } 637 }
638 } 638 }
639 // Check we have a branch or jump instruction. 639 // Check we have a branch or jump instruction.
640 DCHECK(IsBranch(instr) || IsLui(instr)); 640 DCHECK(IsBranch(instr) || IsJ(instr) || IsJal(instr) || IsLui(instr));
641 // Do NOT change this to <<2. We rely on arithmetic shifts here, assuming 641 // Do NOT change this to <<2. We rely on arithmetic shifts here, assuming
642 // the compiler uses arithmetic shifts for signed integers. 642 // the compiler uses arithmetic shifts for signed integers.
643 if (IsBranch(instr)) { 643 if (IsBranch(instr)) {
644 int32_t imm18 = ((instr & static_cast<int32_t>(kImm16Mask)) << 16) >> 14; 644 int32_t imm18 = ((instr & static_cast<int32_t>(kImm16Mask)) << 16) >> 14;
645 if (imm18 == kEndOfChain) { 645 if (imm18 == kEndOfChain) {
646 // EndOfChain sentinel is returned directly, not relative to pc or pos. 646 // EndOfChain sentinel is returned directly, not relative to pc or pos.
647 return kEndOfChain; 647 return kEndOfChain;
648 } else { 648 } else {
649 return pos + kBranchPCOffset + imm18; 649 return pos + kBranchPCOffset + imm18;
650 } 650 }
(...skipping 15 matching lines...) Expand all
666 // EndOfChain sentinel is returned directly, not relative to pc or pos. 666 // EndOfChain sentinel is returned directly, not relative to pc or pos.
667 return kEndOfChain; 667 return kEndOfChain;
668 } else { 668 } else {
669 uint64_t instr_address = reinterpret_cast<int64_t>(buffer_ + pos); 669 uint64_t instr_address = reinterpret_cast<int64_t>(buffer_ + pos);
670 DCHECK(instr_address - imm < INT_MAX); 670 DCHECK(instr_address - imm < INT_MAX);
671 int delta = static_cast<int>(instr_address - imm); 671 int delta = static_cast<int>(instr_address - imm);
672 DCHECK(pos > delta); 672 DCHECK(pos > delta);
673 return pos - delta; 673 return pos - delta;
674 } 674 }
675 } else { 675 } else {
676 UNREACHABLE(); 676 DCHECK(IsJ(instr) || IsJal(instr));
677 return 0; 677 int32_t imm28 = (instr & static_cast<int32_t>(kImm26Mask)) << 2;
678 if (imm28 == kEndOfJumpChain) {
679 // EndOfChain sentinel is returned directly, not relative to pc or pos.
680 return kEndOfChain;
681 } else {
682 uint64_t instr_address = reinterpret_cast<int64_t>(buffer_ + pos);
683 instr_address &= kImm28Mask;
684 int delta = static_cast<int>(instr_address - imm28);
685 DCHECK(pos > delta);
686 return pos - delta;
687 }
678 } 688 }
679 } 689 }
680 690
681 691
682 void Assembler::target_at_put(int pos, int target_pos, bool is_internal) { 692 void Assembler::target_at_put(int pos, int target_pos, bool is_internal) {
683 if (is_internal) { 693 if (is_internal) {
684 uint64_t imm = reinterpret_cast<uint64_t>(buffer_) + target_pos; 694 uint64_t imm = reinterpret_cast<uint64_t>(buffer_) + target_pos;
685 *reinterpret_cast<uint64_t*>(buffer_ + pos) = imm; 695 *reinterpret_cast<uint64_t*>(buffer_ + pos) = imm;
686 return; 696 return;
687 } 697 }
688 Instr instr = instr_at(pos); 698 Instr instr = instr_at(pos);
689 if ((instr & ~kImm16Mask) == 0) { 699 if ((instr & ~kImm16Mask) == 0) {
690 DCHECK(target_pos == kEndOfChain || target_pos >= 0); 700 DCHECK(target_pos == kEndOfChain || target_pos >= 0);
691 // Emitted label constant, not part of a branch. 701 // Emitted label constant, not part of a branch.
692 // Make label relative to Code* of generated Code object. 702 // Make label relative to Code* of generated Code object.
693 instr_at_put(pos, target_pos + (Code::kHeaderSize - kHeapObjectTag)); 703 instr_at_put(pos, target_pos + (Code::kHeaderSize - kHeapObjectTag));
694 return; 704 return;
695 } 705 }
696 706
697 DCHECK(IsBranch(instr) || IsLui(instr)); 707 DCHECK(IsBranch(instr) || IsJ(instr) || IsJal(instr) || IsLui(instr));
698 if (IsBranch(instr)) { 708 if (IsBranch(instr)) {
699 int32_t imm18 = target_pos - (pos + kBranchPCOffset); 709 int32_t imm18 = target_pos - (pos + kBranchPCOffset);
700 DCHECK((imm18 & 3) == 0); 710 DCHECK((imm18 & 3) == 0);
701 711
702 instr &= ~kImm16Mask; 712 instr &= ~kImm16Mask;
703 int32_t imm16 = imm18 >> 2; 713 int32_t imm16 = imm18 >> 2;
704 DCHECK(is_int16(imm16)); 714 DCHECK(is_int16(imm16));
705 715
706 instr_at_put(pos, instr | (imm16 & kImm16Mask)); 716 instr_at_put(pos, instr | (imm16 & kImm16Mask));
707 } else if (IsLui(instr)) { 717 } else if (IsLui(instr)) {
(...skipping 10 matching lines...) Expand all
718 instr_ori &= ~kImm16Mask; 728 instr_ori &= ~kImm16Mask;
719 instr_ori2 &= ~kImm16Mask; 729 instr_ori2 &= ~kImm16Mask;
720 730
721 instr_at_put(pos + 0 * Assembler::kInstrSize, 731 instr_at_put(pos + 0 * Assembler::kInstrSize,
722 instr_lui | ((imm >> 32) & kImm16Mask)); 732 instr_lui | ((imm >> 32) & kImm16Mask));
723 instr_at_put(pos + 1 * Assembler::kInstrSize, 733 instr_at_put(pos + 1 * Assembler::kInstrSize,
724 instr_ori | ((imm >> 16) & kImm16Mask)); 734 instr_ori | ((imm >> 16) & kImm16Mask));
725 instr_at_put(pos + 3 * Assembler::kInstrSize, 735 instr_at_put(pos + 3 * Assembler::kInstrSize,
726 instr_ori2 | (imm & kImm16Mask)); 736 instr_ori2 | (imm & kImm16Mask));
727 } else { 737 } else {
728 UNREACHABLE(); 738 DCHECK(IsJ(instr) || IsJal(instr));
739 uint64_t imm28 = reinterpret_cast<uint64_t>(buffer_) + target_pos;
740 imm28 &= kImm28Mask;
741 DCHECK((imm28 & 3) == 0);
742
743 instr &= ~kImm26Mask;
744 uint32_t imm26 = imm28 >> 2;
745 DCHECK(is_uint26(imm26));
746
747 instr_at_put(pos, instr | (imm26 & kImm26Mask));
729 } 748 }
730 } 749 }
731 750
732 751
733 void Assembler::print(Label* L) { 752 void Assembler::print(Label* L) {
734 if (L->is_unused()) { 753 if (L->is_unused()) {
735 PrintF("unused label\n"); 754 PrintF("unused label\n");
736 } else if (L->is_bound()) { 755 } else if (L->is_bound()) {
737 PrintF("bound label to %d\n", L->pos()); 756 PrintF("bound label to %d\n", L->pos());
738 } else if (L->is_linked()) { 757 } else if (L->is_linked()) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
780 trampoline_pos = get_trampoline_entry(fixup_pos); 799 trampoline_pos = get_trampoline_entry(fixup_pos);
781 CHECK(trampoline_pos != kInvalidSlotPos); 800 CHECK(trampoline_pos != kInvalidSlotPos);
782 } 801 }
783 DCHECK((trampoline_pos - fixup_pos) <= kMaxBranchOffset); 802 DCHECK((trampoline_pos - fixup_pos) <= kMaxBranchOffset);
784 target_at_put(fixup_pos, trampoline_pos, false); 803 target_at_put(fixup_pos, trampoline_pos, false);
785 fixup_pos = trampoline_pos; 804 fixup_pos = trampoline_pos;
786 dist = pos - fixup_pos; 805 dist = pos - fixup_pos;
787 } 806 }
788 target_at_put(fixup_pos, pos, false); 807 target_at_put(fixup_pos, pos, false);
789 } else { 808 } else {
790 DCHECK(IsJ(instr) || IsLui(instr) || IsEmittedConstant(instr)); 809 DCHECK(IsJ(instr) || IsJal(instr) || IsLui(instr) ||
810 IsEmittedConstant(instr));
791 target_at_put(fixup_pos, pos, false); 811 target_at_put(fixup_pos, pos, false);
792 } 812 }
793 } 813 }
794 L->bind_to(pos); 814 L->bind_to(pos);
795 815
796 // Keep track of the last bound label so we don't eliminate any instructions 816 // Keep track of the last bound label so we don't eliminate any instructions
797 // before a bound label. 817 // before a bound label.
798 if (pos > last_bound_pos_) 818 if (pos > last_bound_pos_)
799 last_bound_pos_ = pos; 819 last_bound_pos_ = pos;
800 } 820 }
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
977 target_pos = L->pos(); 997 target_pos = L->pos();
978 } else { 998 } else {
979 if (L->is_linked()) { 999 if (L->is_linked()) {
980 target_pos = L->pos(); // L's link. 1000 target_pos = L->pos(); // L's link.
981 L->link_to(pc_offset()); 1001 L->link_to(pc_offset());
982 } else { 1002 } else {
983 L->link_to(pc_offset()); 1003 L->link_to(pc_offset());
984 return kEndOfJumpChain; 1004 return kEndOfJumpChain;
985 } 1005 }
986 } 1006 }
987
988 uint64_t imm = reinterpret_cast<uint64_t>(buffer_) + target_pos; 1007 uint64_t imm = reinterpret_cast<uint64_t>(buffer_) + target_pos;
989 DCHECK((imm & 3) == 0); 1008 DCHECK((imm & 3) == 0);
990 1009
991 return imm; 1010 return imm;
992 } 1011 }
993 1012
994 1013
995 int32_t Assembler::branch_offset(Label* L, bool jump_elimination_allowed) { 1014 int32_t Assembler::branch_offset(Label* L, bool jump_elimination_allowed) {
996 int32_t target_pos; 1015 int32_t target_pos;
997 if (L->is_bound()) { 1016 if (L->is_bound()) {
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
1352 DCHECK(kArchVariant == kMips64r6); 1371 DCHECK(kArchVariant == kMips64r6);
1353 DCHECK(!(rs.is(zero_reg))); 1372 DCHECK(!(rs.is(zero_reg)));
1354 Instr instr = BNEZC | (rs.code() << kRsShift) | offset; 1373 Instr instr = BNEZC | (rs.code() << kRsShift) | offset;
1355 emit(instr); 1374 emit(instr);
1356 } 1375 }
1357 1376
1358 1377
1359 void Assembler::j(int64_t target) { 1378 void Assembler::j(int64_t target) {
1360 #if DEBUG 1379 #if DEBUG
1361 // Get pc of delay slot. 1380 // Get pc of delay slot.
1362 uint64_t ipc = reinterpret_cast<uint64_t>(pc_ + 1 * kInstrSize); 1381 if (target != kEndOfJumpChain) {
1363 bool in_range = (ipc ^ static_cast<uint64_t>(target) >> 1382 uint64_t ipc = reinterpret_cast<uint64_t>(pc_ + 1 * kInstrSize);
1364 (kImm26Bits + kImmFieldShift)) == 0; 1383 bool in_range = ((ipc ^ static_cast<uint64_t>(target)) >>
1365 DCHECK(in_range && ((target & 3) == 0)); 1384 (kImm26Bits + kImmFieldShift)) == 0;
1385 DCHECK(in_range && ((target & 3) == 0));
1386 }
1366 #endif 1387 #endif
1367 GenInstrJump(J, target >> 2); 1388 GenInstrJump(J, (target >> 2) & kImm26Mask);
1368 } 1389 }
1369 1390
1370 1391
1371 void Assembler::jr(Register rs) { 1392 void Assembler::jr(Register rs) {
1372 if (kArchVariant != kMips64r6) { 1393 if (kArchVariant != kMips64r6) {
1373 BlockTrampolinePoolScope block_trampoline_pool(this); 1394 BlockTrampolinePoolScope block_trampoline_pool(this);
1374 if (rs.is(ra)) { 1395 if (rs.is(ra)) {
1375 positions_recorder()->WriteRecordedPositions(); 1396 positions_recorder()->WriteRecordedPositions();
1376 } 1397 }
1377 GenInstrRegister(SPECIAL, rs, zero_reg, zero_reg, 0, JR); 1398 GenInstrRegister(SPECIAL, rs, zero_reg, zero_reg, 0, JR);
1378 BlockTrampolinePoolFor(1); // For associated delay slot. 1399 BlockTrampolinePoolFor(1); // For associated delay slot.
1379 } else { 1400 } else {
1380 jalr(rs, zero_reg); 1401 jalr(rs, zero_reg);
1381 } 1402 }
1382 } 1403 }
1383 1404
1384 1405
1385 void Assembler::jal(int64_t target) { 1406 void Assembler::jal(int64_t target) {
1386 #ifdef DEBUG 1407 #ifdef DEBUG
1387 // Get pc of delay slot. 1408 // Get pc of delay slot.
1388 uint64_t ipc = reinterpret_cast<uint64_t>(pc_ + 1 * kInstrSize); 1409 if (target != kEndOfJumpChain) {
1389 bool in_range = (ipc ^ static_cast<uint64_t>(target) >> 1410 uint64_t ipc = reinterpret_cast<uint64_t>(pc_ + 1 * kInstrSize);
1390 (kImm26Bits + kImmFieldShift)) == 0; 1411 bool in_range = ((ipc ^ static_cast<uint64_t>(target)) >>
1391 DCHECK(in_range && ((target & 3) == 0)); 1412 (kImm26Bits + kImmFieldShift)) == 0;
1413 DCHECK(in_range && ((target & 3) == 0));
1414 }
1392 #endif 1415 #endif
1393 positions_recorder()->WriteRecordedPositions(); 1416 positions_recorder()->WriteRecordedPositions();
1394 GenInstrJump(JAL, target >> 2); 1417 GenInstrJump(JAL, (target >> 2) & kImm26Mask);
1395 } 1418 }
1396 1419
1397 1420
1398 void Assembler::jalr(Register rs, Register rd) { 1421 void Assembler::jalr(Register rs, Register rd) {
1399 BlockTrampolinePoolScope block_trampoline_pool(this); 1422 BlockTrampolinePoolScope block_trampoline_pool(this);
1400 positions_recorder()->WriteRecordedPositions(); 1423 positions_recorder()->WriteRecordedPositions();
1401 GenInstrRegister(SPECIAL, rs, zero_reg, rd, 0, JALR); 1424 GenInstrRegister(SPECIAL, rs, zero_reg, rd, 0, JALR);
1402 BlockTrampolinePoolFor(1); // For associated delay slot. 1425 BlockTrampolinePoolFor(1); // For associated delay slot.
1403 } 1426 }
1404 1427
(...skipping 1352 matching lines...) Expand 10 before | Expand all | Expand 10 after
2757 if (RelocInfo::IsInternalReference(rmode)) { 2780 if (RelocInfo::IsInternalReference(rmode)) {
2758 int64_t* p = reinterpret_cast<int64_t*>(pc); 2781 int64_t* p = reinterpret_cast<int64_t*>(pc);
2759 if (*p == kEndOfJumpChain) { 2782 if (*p == kEndOfJumpChain) {
2760 return 0; // Number of instructions patched. 2783 return 0; // Number of instructions patched.
2761 } 2784 }
2762 *p += pc_delta; 2785 *p += pc_delta;
2763 return 2; // Number of instructions patched. 2786 return 2; // Number of instructions patched.
2764 } 2787 }
2765 Instr instr = instr_at(pc); 2788 Instr instr = instr_at(pc);
2766 DCHECK(RelocInfo::IsInternalReferenceEncoded(rmode)); 2789 DCHECK(RelocInfo::IsInternalReferenceEncoded(rmode));
2790 DCHECK(IsJ(instr) || IsLui(instr) || IsJal(instr));
2767 if (IsLui(instr)) { 2791 if (IsLui(instr)) {
2768 Instr instr_lui = instr_at(pc + 0 * Assembler::kInstrSize); 2792 Instr instr_lui = instr_at(pc + 0 * Assembler::kInstrSize);
2769 Instr instr_ori = instr_at(pc + 1 * Assembler::kInstrSize); 2793 Instr instr_ori = instr_at(pc + 1 * Assembler::kInstrSize);
2770 Instr instr_ori2 = instr_at(pc + 3 * Assembler::kInstrSize); 2794 Instr instr_ori2 = instr_at(pc + 3 * Assembler::kInstrSize);
2771 DCHECK(IsOri(instr_ori)); 2795 DCHECK(IsOri(instr_ori));
2772 DCHECK(IsOri(instr_ori2)); 2796 DCHECK(IsOri(instr_ori2));
2773 // TODO(plind): symbolic names for the shifts. 2797 // TODO(plind): symbolic names for the shifts.
2774 int64_t imm = (instr_lui & static_cast<int64_t>(kImm16Mask)) << 48; 2798 int64_t imm = (instr_lui & static_cast<int64_t>(kImm16Mask)) << 48;
2775 imm |= (instr_ori & static_cast<int64_t>(kImm16Mask)) << 32; 2799 imm |= (instr_ori & static_cast<int64_t>(kImm16Mask)) << 32;
2776 imm |= (instr_ori2 & static_cast<int64_t>(kImm16Mask)) << 16; 2800 imm |= (instr_ori2 & static_cast<int64_t>(kImm16Mask)) << 16;
(...skipping 11 matching lines...) Expand all
2788 instr_ori2 &= ~kImm16Mask; 2812 instr_ori2 &= ~kImm16Mask;
2789 2813
2790 instr_at_put(pc + 0 * Assembler::kInstrSize, 2814 instr_at_put(pc + 0 * Assembler::kInstrSize,
2791 instr_lui | ((imm >> 32) & kImm16Mask)); 2815 instr_lui | ((imm >> 32) & kImm16Mask));
2792 instr_at_put(pc + 1 * Assembler::kInstrSize, 2816 instr_at_put(pc + 1 * Assembler::kInstrSize,
2793 instr_ori | (imm >> 16 & kImm16Mask)); 2817 instr_ori | (imm >> 16 & kImm16Mask));
2794 instr_at_put(pc + 3 * Assembler::kInstrSize, 2818 instr_at_put(pc + 3 * Assembler::kInstrSize,
2795 instr_ori2 | (imm & kImm16Mask)); 2819 instr_ori2 | (imm & kImm16Mask));
2796 return 4; // Number of instructions patched. 2820 return 4; // Number of instructions patched.
2797 } else { 2821 } else {
2798 UNREACHABLE(); 2822 uint32_t imm28 = (instr & static_cast<int32_t>(kImm26Mask)) << 2;
2799 return 0; // Number of instructions patched. 2823 if (static_cast<int32_t>(imm28) == kEndOfJumpChain) {
2824 return 0; // Number of instructions patched.
2825 }
2826
2827 imm28 += pc_delta;
2828 imm28 &= kImm28Mask;
2829 DCHECK((imm28 & 3) == 0);
2830
2831 instr &= ~kImm26Mask;
2832 uint32_t imm26 = imm28 >> 2;
2833 DCHECK(is_uint26(imm26));
2834
2835 instr_at_put(pc, instr | (imm26 & kImm26Mask));
2836 return 1; // Number of instructions patched.
2800 } 2837 }
2801 } 2838 }
2802 2839
2803 2840
2804 void Assembler::GrowBuffer() { 2841 void Assembler::GrowBuffer() {
2805 if (!own_buffer_) FATAL("external code buffer is too small"); 2842 if (!own_buffer_) FATAL("external code buffer is too small");
2806 2843
2807 // Compute new buffer size. 2844 // Compute new buffer size.
2808 CodeDesc desc; // The new buffer. 2845 CodeDesc desc; // The new buffer.
2809 if (buffer_size_ < 1 * MB) { 2846 if (buffer_size_ < 1 * MB) {
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
2951 2988
2952 int pool_start = pc_offset(); 2989 int pool_start = pc_offset();
2953 for (int i = 0; i < unbound_labels_count_; i++) { 2990 for (int i = 0; i < unbound_labels_count_; i++) {
2954 uint64_t imm64; 2991 uint64_t imm64;
2955 imm64 = jump_address(&after_pool); 2992 imm64 = jump_address(&after_pool);
2956 { BlockGrowBufferScope block_buf_growth(this); 2993 { BlockGrowBufferScope block_buf_growth(this);
2957 // Buffer growth (and relocation) must be blocked for internal 2994 // Buffer growth (and relocation) must be blocked for internal
2958 // references until associated instructions are emitted and available 2995 // references until associated instructions are emitted and available
2959 // to be patched. 2996 // to be patched.
2960 RecordRelocInfo(RelocInfo::INTERNAL_REFERENCE_ENCODED); 2997 RecordRelocInfo(RelocInfo::INTERNAL_REFERENCE_ENCODED);
2961 // TODO(plind): Verify this, presume I cannot use macro-assembler 2998 j(imm64);
2962 // here.
2963 lui(at, (imm64 >> 32) & kImm16Mask);
2964 ori(at, at, (imm64 >> 16) & kImm16Mask);
2965 dsll(at, at, 16);
2966 ori(at, at, imm64 & kImm16Mask);
2967 } 2999 }
2968 jr(at);
2969 nop(); 3000 nop();
2970 } 3001 }
2971 bind(&after_pool); 3002 bind(&after_pool);
2972 trampoline_ = Trampoline(pool_start, unbound_labels_count_); 3003 trampoline_ = Trampoline(pool_start, unbound_labels_count_);
2973 3004
2974 trampoline_emitted_ = true; 3005 trampoline_emitted_ = true;
2975 // As we are only going to emit trampoline once, we need to prevent any 3006 // As we are only going to emit trampoline once, we need to prevent any
2976 // further emission. 3007 // further emission.
2977 next_buffer_check_ = kMaxInt; 3008 next_buffer_check_ = kMaxInt;
2978 } 3009 }
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
3080 void Assembler::PopulateConstantPool(ConstantPoolArray* constant_pool) { 3111 void Assembler::PopulateConstantPool(ConstantPoolArray* constant_pool) {
3081 // No out-of-line constant pool support. 3112 // No out-of-line constant pool support.
3082 DCHECK(!FLAG_enable_ool_constant_pool); 3113 DCHECK(!FLAG_enable_ool_constant_pool);
3083 return; 3114 return;
3084 } 3115 }
3085 3116
3086 3117
3087 } } // namespace v8::internal 3118 } } // namespace v8::internal
3088 3119
3089 #endif // V8_TARGET_ARCH_MIPS64 3120 #endif // V8_TARGET_ARCH_MIPS64
OLDNEW
« no previous file with comments | « src/mips64/assembler-mips64.h ('k') | src/mips64/assembler-mips64-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698