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

Side by Side Diff: src/compiler/instruction-selector.h

Issue 1259203002: [turbofan] Implement tail calls with differing stack parameter counts (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix bugs in frameless tail calls Created 5 years, 4 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
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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 #ifndef V8_COMPILER_INSTRUCTION_SELECTOR_H_ 5 #ifndef V8_COMPILER_INSTRUCTION_SELECTOR_H_
6 #define V8_COMPILER_INSTRUCTION_SELECTOR_H_ 6 #define V8_COMPILER_INSTRUCTION_SELECTOR_H_
7 7
8 #include <map> 8 #include <map>
9 9
10 #include "src/compiler/common-operator.h" 10 #include "src/compiler/common-operator.h"
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 void VisitConstant(Node* node); 203 void VisitConstant(Node* node);
204 void VisitCall(Node* call, BasicBlock* handler = nullptr); 204 void VisitCall(Node* call, BasicBlock* handler = nullptr);
205 void VisitTailCall(Node* call); 205 void VisitTailCall(Node* call);
206 void VisitGoto(BasicBlock* target); 206 void VisitGoto(BasicBlock* target);
207 void VisitBranch(Node* input, BasicBlock* tbranch, BasicBlock* fbranch); 207 void VisitBranch(Node* input, BasicBlock* tbranch, BasicBlock* fbranch);
208 void VisitSwitch(Node* node, const SwitchInfo& sw); 208 void VisitSwitch(Node* node, const SwitchInfo& sw);
209 void VisitDeoptimize(Node* value); 209 void VisitDeoptimize(Node* value);
210 void VisitReturn(Node* value); 210 void VisitReturn(Node* value);
211 void VisitThrow(Node* value); 211 void VisitThrow(Node* value);
212 212
213 bool EmitTailCallSetup(Node* call, CallBuffer* buffer,
214 InstructionCode* opcode);
215
213 // =========================================================================== 216 // ===========================================================================
214 217
215 Schedule* schedule() const { return schedule_; } 218 Schedule* schedule() const { return schedule_; }
216 Linkage* linkage() const { return linkage_; } 219 Linkage* linkage() const { return linkage_; }
217 InstructionSequence* sequence() const { return sequence_; } 220 InstructionSequence* sequence() const { return sequence_; }
218 Zone* instruction_zone() const { return sequence()->zone(); } 221 Zone* instruction_zone() const { return sequence()->zone(); }
219 Zone* zone() const { return zone_; } 222 Zone* zone() const { return zone_; }
220 223
221 // =========================================================================== 224 // ===========================================================================
222 225
223 Zone* const zone_; 226 Zone* const zone_;
224 Linkage* const linkage_; 227 Linkage* const linkage_;
225 InstructionSequence* const sequence_; 228 InstructionSequence* const sequence_;
226 SourcePositionTable* const source_positions_; 229 SourcePositionTable* const source_positions_;
227 SourcePositionMode const source_position_mode_; 230 SourcePositionMode const source_position_mode_;
228 Features features_; 231 Features features_;
229 Schedule* const schedule_; 232 Schedule* const schedule_;
230 BasicBlock* current_block_; 233 BasicBlock* current_block_;
231 ZoneVector<Instruction*> instructions_; 234 ZoneVector<Instruction*> instructions_;
232 BoolVector defined_; 235 BoolVector defined_;
233 BoolVector used_; 236 BoolVector used_;
234 IntVector virtual_registers_; 237 IntVector virtual_registers_;
235 }; 238 };
236 239
237 } // namespace compiler 240 } // namespace compiler
238 } // namespace internal 241 } // namespace internal
239 } // namespace v8 242 } // namespace v8
240 243
241 #endif // V8_COMPILER_INSTRUCTION_SELECTOR_H_ 244 #endif // V8_COMPILER_INSTRUCTION_SELECTOR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698