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

Side by Side Diff: src/compiler/s390/code-generator-s390.cc

Issue 1799893002: S390: Upstream changes from the past 2 weeks (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 9 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 | src/compiler/s390/instruction-codes-s390.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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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/compiler/code-generator.h" 5 #include "src/compiler/code-generator.h"
6 6
7 #include "src/ast/scopes.h" 7 #include "src/ast/scopes.h"
8 #include "src/compiler/code-generator-impl.h" 8 #include "src/compiler/code-generator-impl.h"
9 #include "src/compiler/gap-resolver.h" 9 #include "src/compiler/gap-resolver.h"
10 #include "src/compiler/node-matchers.h" 10 #include "src/compiler/node-matchers.h"
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 MemOperand MemoryOperand(AddressingMode* mode, size_t first_index = 0) { 85 MemOperand MemoryOperand(AddressingMode* mode, size_t first_index = 0) {
86 return MemoryOperand(mode, &first_index); 86 return MemoryOperand(mode, &first_index);
87 } 87 }
88 88
89 MemOperand ToMemOperand(InstructionOperand* op) const { 89 MemOperand ToMemOperand(InstructionOperand* op) const {
90 DCHECK_NOT_NULL(op); 90 DCHECK_NOT_NULL(op);
91 DCHECK(op->IsStackSlot() || op->IsDoubleStackSlot()); 91 DCHECK(op->IsStackSlot() || op->IsDoubleStackSlot());
92 return SlotToMemOperand(AllocatedOperand::cast(op)->index()); 92 return SlotToMemOperand(AllocatedOperand::cast(op)->index());
93 } 93 }
94 94
95 MemOperand SlotToMemOperand(int slot) { 95 MemOperand SlotToMemOperand(int slot) const {
96 FrameOffset offset = frame_access_state()->GetFrameOffset(slot); 96 FrameOffset offset = frame_access_state()->GetFrameOffset(slot);
97 return MemOperand(offset.from_stack_pointer() ? sp : fp, offset.offset()); 97 return MemOperand(offset.from_stack_pointer() ? sp : fp, offset.offset());
98 } 98 }
99 }; 99 };
100 100
101 static inline bool HasRegisterInput(Instruction* instr, int index) { 101 static inline bool HasRegisterInput(Instruction* instr, int index) {
102 return instr->InputAt(index)->IsRegister(); 102 return instr->InputAt(index)->IsRegister();
103 } 103 }
104 104
105 namespace { 105 namespace {
(...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after
573 if (sp_slot_delta < 0) { 573 if (sp_slot_delta < 0) {
574 __ AddP(sp, sp, Operand(sp_slot_delta * kPointerSize)); 574 __ AddP(sp, sp, Operand(sp_slot_delta * kPointerSize));
575 frame_access_state()->IncreaseSPDelta(-sp_slot_delta); 575 frame_access_state()->IncreaseSPDelta(-sp_slot_delta);
576 } 576 }
577 if (frame()->needs_frame()) { 577 if (frame()->needs_frame()) {
578 __ RestoreFrameStateForTailCall(); 578 __ RestoreFrameStateForTailCall();
579 } 579 }
580 frame_access_state()->SetFrameAccessToSP(); 580 frame_access_state()->SetFrameAccessToSP();
581 } 581 }
582 582
583 void CodeGenerator::AssemblePopArgumentsAdaptorFrame(Register args_reg,
584 Register scratch1,
585 Register scratch2,
586 Register scratch3) {
587 DCHECK(!AreAliased(args_reg, scratch1, scratch2, scratch3));
588 Label done;
589
590 // Check if current frame is an arguments adaptor frame.
591 __ LoadP(scratch1, MemOperand(fp, StandardFrameConstants::kContextOffset));
592 __ CmpSmiLiteral(scratch1, Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR), r0);
593 __ bne(&done);
594
595 // Load arguments count from current arguments adaptor frame (note, it
596 // does not include receiver).
597 Register caller_args_count_reg = scratch1;
598 __ LoadP(caller_args_count_reg,
599 MemOperand(fp, ArgumentsAdaptorFrameConstants::kLengthOffset));
600 __ SmiUntag(caller_args_count_reg);
601
602 ParameterCount callee_args_count(args_reg);
603 __ PrepareForTailCall(callee_args_count, caller_args_count_reg, scratch2,
604 scratch3);
605 __ bind(&done);
606 }
607
583 // Assembles an instruction after register allocation, producing machine code. 608 // Assembles an instruction after register allocation, producing machine code.
584 void CodeGenerator::AssembleArchInstruction(Instruction* instr) { 609 void CodeGenerator::AssembleArchInstruction(Instruction* instr) {
585 S390OperandConverter i(this, instr); 610 S390OperandConverter i(this, instr);
586 ArchOpcode opcode = ArchOpcodeField::decode(instr->opcode()); 611 ArchOpcode opcode = ArchOpcodeField::decode(instr->opcode());
587 612
588 switch (opcode) { 613 switch (opcode) {
589 case kArchCallCodeObject: { 614 case kArchCallCodeObject: {
590 EnsureSpaceForLazyDeopt(); 615 EnsureSpaceForLazyDeopt();
591 if (HasRegisterInput(instr, 0)) { 616 if (HasRegisterInput(instr, 0)) {
592 __ AddP(ip, i.InputRegister(0), 617 __ AddP(ip, i.InputRegister(0),
593 Operand(Code::kHeaderSize - kHeapObjectTag)); 618 Operand(Code::kHeaderSize - kHeapObjectTag));
594 __ Call(ip); 619 __ Call(ip);
595 } else { 620 } else {
596 __ Call(Handle<Code>::cast(i.InputHeapObject(0)), 621 __ Call(Handle<Code>::cast(i.InputHeapObject(0)),
597 RelocInfo::CODE_TARGET); 622 RelocInfo::CODE_TARGET);
598 } 623 }
599 RecordCallPosition(instr); 624 RecordCallPosition(instr);
600 frame_access_state()->ClearSPDelta(); 625 frame_access_state()->ClearSPDelta();
601 break; 626 break;
602 } 627 }
628 case kArchTailCallCodeObjectFromJSFunction:
603 case kArchTailCallCodeObject: { 629 case kArchTailCallCodeObject: {
604 int stack_param_delta = i.InputInt32(instr->InputCount() - 1); 630 int stack_param_delta = i.InputInt32(instr->InputCount() - 1);
605 AssembleDeconstructActivationRecord(stack_param_delta); 631 AssembleDeconstructActivationRecord(stack_param_delta);
632 if (opcode == kArchTailCallCodeObjectFromJSFunction) {
633 AssemblePopArgumentsAdaptorFrame(kJavaScriptCallArgCountRegister,
634 i.TempRegister(0), i.TempRegister(1),
635 i.TempRegister(2));
636 }
606 if (HasRegisterInput(instr, 0)) { 637 if (HasRegisterInput(instr, 0)) {
607 __ AddP(ip, i.InputRegister(0), 638 __ AddP(ip, i.InputRegister(0),
608 Operand(Code::kHeaderSize - kHeapObjectTag)); 639 Operand(Code::kHeaderSize - kHeapObjectTag));
609 __ Jump(ip); 640 __ Jump(ip);
610 } else { 641 } else {
611 // We cannot use the constant pool to load the target since 642 // We cannot use the constant pool to load the target since
612 // we've already restored the caller's frame. 643 // we've already restored the caller's frame.
613 ConstantPoolUnavailableScope constant_pool_unavailable(masm()); 644 ConstantPoolUnavailableScope constant_pool_unavailable(masm());
614 __ Jump(Handle<Code>::cast(i.InputHeapObject(0)), 645 __ Jump(Handle<Code>::cast(i.InputHeapObject(0)),
615 RelocInfo::CODE_TARGET); 646 RelocInfo::CODE_TARGET);
(...skipping 10 matching lines...) Expand all
626 FieldMemOperand(func, JSFunction::kContextOffset)); 657 FieldMemOperand(func, JSFunction::kContextOffset));
627 __ CmpP(cp, kScratchReg); 658 __ CmpP(cp, kScratchReg);
628 __ Assert(eq, kWrongFunctionContext); 659 __ Assert(eq, kWrongFunctionContext);
629 } 660 }
630 __ LoadP(ip, FieldMemOperand(func, JSFunction::kCodeEntryOffset)); 661 __ LoadP(ip, FieldMemOperand(func, JSFunction::kCodeEntryOffset));
631 __ Call(ip); 662 __ Call(ip);
632 RecordCallPosition(instr); 663 RecordCallPosition(instr);
633 frame_access_state()->ClearSPDelta(); 664 frame_access_state()->ClearSPDelta();
634 break; 665 break;
635 } 666 }
667 case kArchTailCallJSFunctionFromJSFunction:
636 case kArchTailCallJSFunction: { 668 case kArchTailCallJSFunction: {
637 Register func = i.InputRegister(0); 669 Register func = i.InputRegister(0);
638 if (FLAG_debug_code) { 670 if (FLAG_debug_code) {
639 // Check the function's context matches the context argument. 671 // Check the function's context matches the context argument.
640 __ LoadP(kScratchReg, 672 __ LoadP(kScratchReg,
641 FieldMemOperand(func, JSFunction::kContextOffset)); 673 FieldMemOperand(func, JSFunction::kContextOffset));
642 __ CmpP(cp, kScratchReg); 674 __ CmpP(cp, kScratchReg);
643 __ Assert(eq, kWrongFunctionContext); 675 __ Assert(eq, kWrongFunctionContext);
644 } 676 }
645 int stack_param_delta = i.InputInt32(instr->InputCount() - 1); 677 int stack_param_delta = i.InputInt32(instr->InputCount() - 1);
646 AssembleDeconstructActivationRecord(stack_param_delta); 678 AssembleDeconstructActivationRecord(stack_param_delta);
679 if (opcode == kArchTailCallJSFunctionFromJSFunction) {
680 AssemblePopArgumentsAdaptorFrame(kJavaScriptCallArgCountRegister,
681 i.TempRegister(0), i.TempRegister(1),
682 i.TempRegister(2));
683 }
647 __ LoadP(ip, FieldMemOperand(func, JSFunction::kCodeEntryOffset)); 684 __ LoadP(ip, FieldMemOperand(func, JSFunction::kCodeEntryOffset));
648 __ Jump(ip); 685 __ Jump(ip);
649 frame_access_state()->ClearSPDelta(); 686 frame_access_state()->ClearSPDelta();
650 break; 687 break;
651 } 688 }
652 case kArchPrepareCallCFunction: { 689 case kArchPrepareCallCFunction: {
653 int const num_parameters = MiscField::decode(instr->opcode()); 690 int const num_parameters = MiscField::decode(instr->opcode());
654 __ PrepareCallCFunction(num_parameters, kScratchReg); 691 __ PrepareCallCFunction(num_parameters, kScratchReg);
655 // Frame alignment requires using FP-relative frame addressing. 692 // Frame alignment requires using FP-relative frame addressing.
656 frame_access_state()->SetFrameAccessToFP(); 693 frame_access_state()->SetFrameAccessToFP();
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
799 } 836 }
800 #if V8_TARGET_ARCH_S390X 837 #if V8_TARGET_ARCH_S390X
801 __ lgfr(i.OutputRegister(0), i.OutputRegister(0)); 838 __ lgfr(i.OutputRegister(0), i.OutputRegister(0));
802 #endif 839 #endif
803 break; 840 break;
804 #if V8_TARGET_ARCH_S390X 841 #if V8_TARGET_ARCH_S390X
805 case kS390_ShiftRight64: 842 case kS390_ShiftRight64:
806 ASSEMBLE_BINOP(srlg, srlg); 843 ASSEMBLE_BINOP(srlg, srlg);
807 break; 844 break;
808 #endif 845 #endif
809 case kS390_ShiftRightAlg32: 846 case kS390_ShiftRightArith32:
810 if (HasRegisterInput(instr, 1)) { 847 if (HasRegisterInput(instr, 1)) {
811 if (i.OutputRegister().is(i.InputRegister(1))) { 848 if (i.OutputRegister().is(i.InputRegister(1))) {
812 __ LoadRR(kScratchReg, i.InputRegister(1)); 849 __ LoadRR(kScratchReg, i.InputRegister(1));
813 __ ShiftRightArith(i.OutputRegister(), i.InputRegister(0), 850 __ ShiftRightArith(i.OutputRegister(), i.InputRegister(0),
814 kScratchReg); 851 kScratchReg);
815 } else { 852 } else {
816 ASSEMBLE_BINOP(ShiftRightArith, ShiftRightArith); 853 ASSEMBLE_BINOP(ShiftRightArith, ShiftRightArith);
817 } 854 }
818 } else { 855 } else {
819 ASSEMBLE_BINOP(ShiftRightArith, ShiftRightArith); 856 ASSEMBLE_BINOP(ShiftRightArith, ShiftRightArith);
820 } 857 }
821 break; 858 break;
822 #if V8_TARGET_ARCH_S390X 859 #if V8_TARGET_ARCH_S390X
823 case kS390_ShiftRightAlg64: 860 case kS390_ShiftRightArith64:
824 ASSEMBLE_BINOP(srag, srag); 861 ASSEMBLE_BINOP(srag, srag);
825 break; 862 break;
826 #endif 863 #endif
864 #if !V8_TARGET_ARCH_S390X
865 case kS390_ShiftLeftPair:
866 if (instr->InputAt(2)->IsImmediate()) {
867 __ ShiftLeftPair(i.OutputRegister(0), i.OutputRegister(1),
868 i.InputRegister(0), i.InputRegister(1),
869 i.InputInt32(2));
870 } else {
871 __ ShiftLeftPair(i.OutputRegister(0), i.OutputRegister(1),
872 i.InputRegister(0), i.InputRegister(1), kScratchReg,
873 i.InputRegister(2));
874 }
875 break;
876 case kS390_ShiftRightPair:
877 if (instr->InputAt(2)->IsImmediate()) {
878 __ ShiftRightPair(i.OutputRegister(0), i.OutputRegister(1),
879 i.InputRegister(0), i.InputRegister(1),
880 i.InputInt32(2));
881 } else {
882 __ ShiftRightPair(i.OutputRegister(0), i.OutputRegister(1),
883 i.InputRegister(0), i.InputRegister(1), kScratchReg,
884 i.InputRegister(2));
885 }
886 break;
887 case kS390_ShiftRightArithPair:
888 if (instr->InputAt(2)->IsImmediate()) {
889 __ ShiftRightArithPair(i.OutputRegister(0), i.OutputRegister(1),
890 i.InputRegister(0), i.InputRegister(1),
891 i.InputInt32(2));
892 } else {
893 __ ShiftRightArithPair(i.OutputRegister(0), i.OutputRegister(1),
894 i.InputRegister(0), i.InputRegister(1),
895 kScratchReg, i.InputRegister(2));
896 }
897 break;
898 #endif
827 case kS390_RotRight32: 899 case kS390_RotRight32:
828 if (HasRegisterInput(instr, 1)) { 900 if (HasRegisterInput(instr, 1)) {
829 __ LoadComplementRR(kScratchReg, i.InputRegister(1)); 901 __ LoadComplementRR(kScratchReg, i.InputRegister(1));
830 __ rll(i.OutputRegister(), i.InputRegister(0), kScratchReg); 902 __ rll(i.OutputRegister(), i.InputRegister(0), kScratchReg);
831 } else { 903 } else {
832 __ rll(i.OutputRegister(), i.InputRegister(0), 904 __ rll(i.OutputRegister(), i.InputRegister(0),
833 Operand(32 - i.InputInt32(1))); 905 Operand(32 - i.InputInt32(1)));
834 } 906 }
835 break; 907 break;
836 #if V8_TARGET_ARCH_S390X 908 #if V8_TARGET_ARCH_S390X
(...skipping 14 matching lines...) Expand all
851 break; 923 break;
852 case kS390_RotLeftAndMask32: 924 case kS390_RotLeftAndMask32:
853 if (CpuFeatures::IsSupported(GENERAL_INSTR_EXT)) { 925 if (CpuFeatures::IsSupported(GENERAL_INSTR_EXT)) {
854 int shiftAmount = i.InputInt32(1); 926 int shiftAmount = i.InputInt32(1);
855 int endBit = 63 - i.InputInt32(3); 927 int endBit = 63 - i.InputInt32(3);
856 int startBit = 63 - i.InputInt32(2); 928 int startBit = 63 - i.InputInt32(2);
857 __ rll(i.OutputRegister(), i.InputRegister(0), Operand(shiftAmount)); 929 __ rll(i.OutputRegister(), i.InputRegister(0), Operand(shiftAmount));
858 __ risbg(i.OutputRegister(), i.OutputRegister(), Operand(startBit), 930 __ risbg(i.OutputRegister(), i.OutputRegister(), Operand(startBit),
859 Operand(endBit), Operand::Zero(), true); 931 Operand(endBit), Operand::Zero(), true);
860 } else { 932 } else {
861 UNIMPLEMENTED(); 933 int shiftAmount = i.InputInt32(1);
934 int clearBitLeft = 63 - i.InputInt32(2);
935 int clearBitRight = i.InputInt32(3);
936 __ rll(i.OutputRegister(), i.InputRegister(0), Operand(shiftAmount));
937 __ sllg(i.OutputRegister(), i.OutputRegister(), Operand(clearBitLeft));
938 __ srlg(i.OutputRegister(), i.OutputRegister(),
939 Operand((clearBitLeft + clearBitRight)));
940 __ sllg(i.OutputRegister(), i.OutputRegister(), Operand(clearBitRight));
862 } 941 }
863 break; 942 break;
864 #if V8_TARGET_ARCH_S390X 943 #if V8_TARGET_ARCH_S390X
865 case kS390_RotLeftAndClear64: 944 case kS390_RotLeftAndClear64:
866 UNIMPLEMENTED(); // Find correct instruction 945 UNIMPLEMENTED(); // Find correct instruction
867 break; 946 break;
868 case kS390_RotLeftAndClearLeft64: 947 case kS390_RotLeftAndClearLeft64:
869 if (CpuFeatures::IsSupported(GENERAL_INSTR_EXT)) { 948 if (CpuFeatures::IsSupported(GENERAL_INSTR_EXT)) {
870 int shiftAmount = i.InputInt32(1); 949 int shiftAmount = i.InputInt32(1);
871 int endBit = 63; 950 int endBit = 63;
872 int startBit = 63 - i.InputInt32(2); 951 int startBit = 63 - i.InputInt32(2);
873 __ risbg(i.OutputRegister(), i.InputRegister(0), Operand(startBit), 952 __ risbg(i.OutputRegister(), i.InputRegister(0), Operand(startBit),
874 Operand(endBit), Operand(shiftAmount), true); 953 Operand(endBit), Operand(shiftAmount), true);
875 } else { 954 } else {
876 UNIMPLEMENTED(); 955 int shiftAmount = i.InputInt32(1);
956 int clearBit = 63 - i.InputInt32(2);
957 __ rllg(i.OutputRegister(), i.InputRegister(0), Operand(shiftAmount));
958 __ sllg(i.OutputRegister(), i.OutputRegister(), Operand(clearBit));
959 __ srlg(i.OutputRegister(), i.OutputRegister(), Operand(clearBit));
877 } 960 }
878 break; 961 break;
879 case kS390_RotLeftAndClearRight64: 962 case kS390_RotLeftAndClearRight64:
880 if (CpuFeatures::IsSupported(GENERAL_INSTR_EXT)) { 963 if (CpuFeatures::IsSupported(GENERAL_INSTR_EXT)) {
881 int shiftAmount = i.InputInt32(1); 964 int shiftAmount = i.InputInt32(1);
882 int endBit = 63 - i.InputInt32(2); 965 int endBit = 63 - i.InputInt32(2);
883 int startBit = 0; 966 int startBit = 0;
884 __ risbg(i.OutputRegister(), i.InputRegister(0), Operand(startBit), 967 __ risbg(i.OutputRegister(), i.InputRegister(0), Operand(startBit),
885 Operand(endBit), Operand(shiftAmount), true); 968 Operand(endBit), Operand(shiftAmount), true);
886 } else { 969 } else {
887 UNIMPLEMENTED(); 970 int shiftAmount = i.InputInt32(1);
971 int clearBit = i.InputInt32(2);
972 __ rllg(i.OutputRegister(), i.InputRegister(0), Operand(shiftAmount));
973 __ srlg(i.OutputRegister(), i.OutputRegister(), Operand(clearBit));
974 __ sllg(i.OutputRegister(), i.OutputRegister(), Operand(clearBit));
888 } 975 }
889 break; 976 break;
890 #endif 977 #endif
891 case kS390_Add: 978 case kS390_Add:
892 #if V8_TARGET_ARCH_S390X 979 #if V8_TARGET_ARCH_S390X
893 if (FlagsModeField::decode(instr->opcode()) != kFlags_none) { 980 if (FlagsModeField::decode(instr->opcode()) != kFlags_none) {
894 ASSEMBLE_ADD_WITH_OVERFLOW(); 981 ASSEMBLE_ADD_WITH_OVERFLOW();
895 } else { 982 } else {
896 #endif 983 #endif
897 ASSEMBLE_BINOP(AddP, AddP); 984 ASSEMBLE_BINOP(AddP, AddP);
(...skipping 747 matching lines...) Expand 10 before | Expand all | Expand 10 after
1645 isolate(), deoptimization_id, bailout_type); 1732 isolate(), deoptimization_id, bailout_type);
1646 // TODO(turbofan): We should be able to generate better code by sharing the 1733 // TODO(turbofan): We should be able to generate better code by sharing the
1647 // actual final call site and just bl'ing to it here, similar to what we do 1734 // actual final call site and just bl'ing to it here, similar to what we do
1648 // in the lithium backend. 1735 // in the lithium backend.
1649 __ Call(deopt_entry, RelocInfo::RUNTIME_ENTRY); 1736 __ Call(deopt_entry, RelocInfo::RUNTIME_ENTRY);
1650 } 1737 }
1651 1738
1652 void CodeGenerator::AssemblePrologue() { 1739 void CodeGenerator::AssemblePrologue() {
1653 CallDescriptor* descriptor = linkage()->GetIncomingDescriptor(); 1740 CallDescriptor* descriptor = linkage()->GetIncomingDescriptor();
1654 1741
1655 if (descriptor->IsCFunctionCall()) { 1742 if (frame()->needs_frame()) {
1656 __ Push(r14, fp); 1743 if (descriptor->IsCFunctionCall()) {
1657 __ LoadRR(fp, sp); 1744 __ Push(r14, fp);
1658 } else if (descriptor->IsJSFunctionCall()) { 1745 __ LoadRR(fp, sp);
1659 __ Prologue(this->info()->GeneratePreagedPrologue(), ip); 1746 } else if (descriptor->IsJSFunctionCall()) {
1660 } else if (frame()->needs_frame()) { 1747 __ Prologue(this->info()->GeneratePreagedPrologue(), ip);
1661 if (!ABI_CALL_VIA_IP && info()->output_code_kind() == Code::WASM_FUNCTION) {
1662 // TODO(mbrandy): Restrict only to the wasm wrapper case.
1663 __ StubPrologue();
1664 } else { 1748 } else {
1665 __ StubPrologue(ip); 1749 StackFrame::Type type = info()->GetOutputStackFrameType();
1750 if (!ABI_CALL_VIA_IP &&
1751 info()->output_code_kind() == Code::WASM_FUNCTION) {
1752 // TODO(mbrandy): Restrict only to the wasm wrapper case.
1753 __ StubPrologue(type);
1754 } else {
1755 __ StubPrologue(type, ip);
1756 }
1666 } 1757 }
1667 } else { 1758 } else {
1668 frame()->SetElidedFrameSizeInSlots(0); 1759 frame()->SetElidedFrameSizeInSlots(0);
1669 } 1760 }
1670 frame_access_state()->SetFrameAccessToDefault(); 1761 frame_access_state()->SetFrameAccessToDefault();
1671 1762
1672 int stack_shrink_slots = frame()->GetSpillSlotCount(); 1763 int stack_shrink_slots = frame()->GetSpillSlotCount();
1673 if (info()->is_osr()) { 1764 if (info()->is_osr()) {
1674 // TurboFan OSR-compiled functions cannot be entered directly. 1765 // TurboFan OSR-compiled functions cannot be entered directly.
1675 __ Abort(kShouldNotDirectlyEnterOsrFunction); 1766 __ Abort(kShouldNotDirectlyEnterOsrFunction);
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
1947 padding_size -= 2; 2038 padding_size -= 2;
1948 } 2039 }
1949 } 2040 }
1950 } 2041 }
1951 2042
1952 #undef __ 2043 #undef __
1953 2044
1954 } // namespace compiler 2045 } // namespace compiler
1955 } // namespace internal 2046 } // namespace internal
1956 } // namespace v8 2047 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | src/compiler/s390/instruction-codes-s390.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698