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

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

Issue 2683203002: Revert of [compiler] Pass deoptimization_kind through DeoptimizeParameters and FlagsContinuation (Closed)
Patch Set: Created 3 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
« no previous file with comments | « src/compiler/instruction-selector.cc ('k') | src/compiler/mips/code-generator-mips.cc » ('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 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_IMPL_H_ 5 #ifndef V8_COMPILER_INSTRUCTION_SELECTOR_IMPL_H_
6 #define V8_COMPILER_INSTRUCTION_SELECTOR_IMPL_H_ 6 #define V8_COMPILER_INSTRUCTION_SELECTOR_IMPL_H_
7 7
8 #include "src/compiler/instruction-selector.h" 8 #include "src/compiler/instruction-selector.h"
9 #include "src/compiler/instruction.h" 9 #include "src/compiler/instruction.h"
10 #include "src/compiler/linkage.h" 10 #include "src/compiler/linkage.h"
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 : mode_(kFlags_branch), 343 : mode_(kFlags_branch),
344 condition_(condition), 344 condition_(condition),
345 true_block_(true_block), 345 true_block_(true_block),
346 false_block_(false_block) { 346 false_block_(false_block) {
347 DCHECK_NOT_NULL(true_block); 347 DCHECK_NOT_NULL(true_block);
348 DCHECK_NOT_NULL(false_block); 348 DCHECK_NOT_NULL(false_block);
349 } 349 }
350 350
351 // Creates a new flags continuation for an eager deoptimization exit. 351 // Creates a new flags continuation for an eager deoptimization exit.
352 static FlagsContinuation ForDeoptimize(FlagsCondition condition, 352 static FlagsContinuation ForDeoptimize(FlagsCondition condition,
353 DeoptimizeKind kind,
354 DeoptimizeReason reason, 353 DeoptimizeReason reason,
355 Node* frame_state) { 354 Node* frame_state) {
356 return FlagsContinuation(condition, kind, reason, frame_state); 355 return FlagsContinuation(condition, reason, frame_state);
357 } 356 }
358 357
359 // Creates a new flags continuation for a boolean value. 358 // Creates a new flags continuation for a boolean value.
360 static FlagsContinuation ForSet(FlagsCondition condition, Node* result) { 359 static FlagsContinuation ForSet(FlagsCondition condition, Node* result) {
361 return FlagsContinuation(condition, result); 360 return FlagsContinuation(condition, result);
362 } 361 }
363 362
364 // Creates a new flags continuation for a wasm trap. 363 // Creates a new flags continuation for a wasm trap.
365 static FlagsContinuation ForTrap(FlagsCondition condition, 364 static FlagsContinuation ForTrap(FlagsCondition condition,
366 Runtime::FunctionId trap_id, Node* result) { 365 Runtime::FunctionId trap_id, Node* result) {
367 return FlagsContinuation(condition, trap_id, result); 366 return FlagsContinuation(condition, trap_id, result);
368 } 367 }
369 368
370 bool IsNone() const { return mode_ == kFlags_none; } 369 bool IsNone() const { return mode_ == kFlags_none; }
371 bool IsBranch() const { return mode_ == kFlags_branch; } 370 bool IsBranch() const { return mode_ == kFlags_branch; }
372 bool IsDeoptimize() const { return mode_ == kFlags_deoptimize; } 371 bool IsDeoptimize() const { return mode_ == kFlags_deoptimize; }
373 bool IsSet() const { return mode_ == kFlags_set; } 372 bool IsSet() const { return mode_ == kFlags_set; }
374 bool IsTrap() const { return mode_ == kFlags_trap; } 373 bool IsTrap() const { return mode_ == kFlags_trap; }
375 FlagsCondition condition() const { 374 FlagsCondition condition() const {
376 DCHECK(!IsNone()); 375 DCHECK(!IsNone());
377 return condition_; 376 return condition_;
378 } 377 }
379 DeoptimizeKind kind() const {
380 DCHECK(IsDeoptimize());
381 return kind_;
382 }
383 DeoptimizeReason reason() const { 378 DeoptimizeReason reason() const {
384 DCHECK(IsDeoptimize()); 379 DCHECK(IsDeoptimize());
385 return reason_; 380 return reason_;
386 } 381 }
387 Node* frame_state() const { 382 Node* frame_state() const {
388 DCHECK(IsDeoptimize()); 383 DCHECK(IsDeoptimize());
389 return frame_state_or_result_; 384 return frame_state_or_result_;
390 } 385 }
391 Node* result() const { 386 Node* result() const {
392 DCHECK(IsSet()); 387 DCHECK(IsSet());
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 // Encodes this flags continuation into the given opcode. 441 // Encodes this flags continuation into the given opcode.
447 InstructionCode Encode(InstructionCode opcode) { 442 InstructionCode Encode(InstructionCode opcode) {
448 opcode |= FlagsModeField::encode(mode_); 443 opcode |= FlagsModeField::encode(mode_);
449 if (mode_ != kFlags_none) { 444 if (mode_ != kFlags_none) {
450 opcode |= FlagsConditionField::encode(condition_); 445 opcode |= FlagsConditionField::encode(condition_);
451 } 446 }
452 return opcode; 447 return opcode;
453 } 448 }
454 449
455 private: 450 private:
456 FlagsContinuation(FlagsCondition condition, DeoptimizeKind kind, 451 FlagsContinuation(FlagsCondition condition, DeoptimizeReason reason,
457 DeoptimizeReason reason, Node* frame_state) 452 Node* frame_state)
458 : mode_(kFlags_deoptimize), 453 : mode_(kFlags_deoptimize),
459 condition_(condition), 454 condition_(condition),
460 kind_(kind),
461 reason_(reason), 455 reason_(reason),
462 frame_state_or_result_(frame_state) { 456 frame_state_or_result_(frame_state) {
463 DCHECK_NOT_NULL(frame_state); 457 DCHECK_NOT_NULL(frame_state);
464 } 458 }
465 FlagsContinuation(FlagsCondition condition, Node* result) 459 FlagsContinuation(FlagsCondition condition, Node* result)
466 : mode_(kFlags_set), 460 : mode_(kFlags_set),
467 condition_(condition), 461 condition_(condition),
468 frame_state_or_result_(result) { 462 frame_state_or_result_(result) {
469 DCHECK_NOT_NULL(result); 463 DCHECK_NOT_NULL(result);
470 } 464 }
471 465
472 FlagsContinuation(FlagsCondition condition, Runtime::FunctionId trap_id, 466 FlagsContinuation(FlagsCondition condition, Runtime::FunctionId trap_id,
473 Node* result) 467 Node* result)
474 : mode_(kFlags_trap), 468 : mode_(kFlags_trap),
475 condition_(condition), 469 condition_(condition),
476 frame_state_or_result_(result), 470 frame_state_or_result_(result),
477 trap_id_(trap_id) { 471 trap_id_(trap_id) {
478 DCHECK_NOT_NULL(result); 472 DCHECK_NOT_NULL(result);
479 } 473 }
480 474
481 FlagsMode const mode_; 475 FlagsMode const mode_;
482 FlagsCondition condition_; 476 FlagsCondition condition_;
483 DeoptimizeKind kind_; // Only valid if mode_ == kFlags_deoptimize 477 DeoptimizeReason reason_; // Only value if mode_ == kFlags_deoptimize
484 DeoptimizeReason reason_; // Only valid if mode_ == kFlags_deoptimize
485 Node* frame_state_or_result_; // Only valid if mode_ == kFlags_deoptimize 478 Node* frame_state_or_result_; // Only valid if mode_ == kFlags_deoptimize
486 // or mode_ == kFlags_set. 479 // or mode_ == kFlags_set.
487 BasicBlock* true_block_; // Only valid if mode_ == kFlags_branch. 480 BasicBlock* true_block_; // Only valid if mode_ == kFlags_branch.
488 BasicBlock* false_block_; // Only valid if mode_ == kFlags_branch. 481 BasicBlock* false_block_; // Only valid if mode_ == kFlags_branch.
489 Runtime::FunctionId trap_id_; // Only valid if mode_ == kFlags_trap. 482 Runtime::FunctionId trap_id_; // Only valid if mode_ == kFlags_trap.
490 }; 483 };
491 484
492 } // namespace compiler 485 } // namespace compiler
493 } // namespace internal 486 } // namespace internal
494 } // namespace v8 487 } // namespace v8
495 488
496 #endif // V8_COMPILER_INSTRUCTION_SELECTOR_IMPL_H_ 489 #endif // V8_COMPILER_INSTRUCTION_SELECTOR_IMPL_H_
OLDNEW
« no previous file with comments | « src/compiler/instruction-selector.cc ('k') | src/compiler/mips/code-generator-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698