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

Side by Side Diff: src/hydrogen.h

Issue 874323003: Externalize deoptimization reasons. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: minor change Created 5 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/disassembler.cc ('k') | src/hydrogen.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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_HYDROGEN_H_ 5 #ifndef V8_HYDROGEN_H_
6 #define V8_HYDROGEN_H_ 6 #define V8_HYDROGEN_H_
7 7
8 #include "src/v8.h" 8 #include "src/v8.h"
9 9
10 #include "src/accessors.h" 10 #include "src/accessors.h"
(...skipping 1457 matching lines...) Expand 10 before | Expand all | Expand 10 after
1468 1468
1469 HLoadNamedField* AddLoadArrayLength(HValue *object, 1469 HLoadNamedField* AddLoadArrayLength(HValue *object,
1470 ElementsKind kind, 1470 ElementsKind kind,
1471 HValue *dependency = NULL); 1471 HValue *dependency = NULL);
1472 1472
1473 HValue* AddLoadJSBuiltin(Builtins::JavaScript builtin); 1473 HValue* AddLoadJSBuiltin(Builtins::JavaScript builtin);
1474 1474
1475 HValue* EnforceNumberType(HValue* number, Type* expected); 1475 HValue* EnforceNumberType(HValue* number, Type* expected);
1476 HValue* TruncateToNumber(HValue* value, Type** expected); 1476 HValue* TruncateToNumber(HValue* value, Type** expected);
1477 1477
1478 void FinishExitWithHardDeoptimization(const char* reason); 1478 void FinishExitWithHardDeoptimization(Deoptimizer::DeoptReason reason);
1479 1479
1480 void AddIncrementCounter(StatsCounter* counter); 1480 void AddIncrementCounter(StatsCounter* counter);
1481 1481
1482 class IfBuilder FINAL { 1482 class IfBuilder FINAL {
1483 public: 1483 public:
1484 // If using this constructor, Initialize() must be called explicitly! 1484 // If using this constructor, Initialize() must be called explicitly!
1485 IfBuilder(); 1485 IfBuilder();
1486 1486
1487 explicit IfBuilder(HGraphBuilder* builder); 1487 explicit IfBuilder(HGraphBuilder* builder);
1488 IfBuilder(HGraphBuilder* builder, 1488 IfBuilder(HGraphBuilder* builder,
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
1616 // if_finally.Else(); 1616 // if_finally.Else();
1617 // // continues after else code of if_whatever or if_something. 1617 // // continues after else code of if_whatever or if_something.
1618 // ... 1618 // ...
1619 // if_finally.End(); 1619 // if_finally.End();
1620 void JoinContinuation(HIfContinuation* continuation); 1620 void JoinContinuation(HIfContinuation* continuation);
1621 1621
1622 void Then(); 1622 void Then();
1623 void Else(); 1623 void Else();
1624 void End(); 1624 void End();
1625 1625
1626 void Deopt(const char* reason); 1626 void Deopt(Deoptimizer::DeoptReason reason);
1627 void ThenDeopt(const char* reason) { 1627 void ThenDeopt(Deoptimizer::DeoptReason reason) {
1628 Then(); 1628 Then();
1629 Deopt(reason); 1629 Deopt(reason);
1630 } 1630 }
1631 void ElseDeopt(const char* reason) { 1631 void ElseDeopt(Deoptimizer::DeoptReason reason) {
1632 Else(); 1632 Else();
1633 Deopt(reason); 1633 Deopt(reason);
1634 } 1634 }
1635 1635
1636 void Return(HValue* value); 1636 void Return(HValue* value);
1637 1637
1638 private: 1638 private:
1639 void InitializeDontCreateBlocks(HGraphBuilder* builder); 1639 void InitializeDontCreateBlocks(HGraphBuilder* builder);
1640 1640
1641 HControlInstruction* AddCompare(HControlInstruction* compare); 1641 HControlInstruction* AddCompare(HControlInstruction* compare);
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
1931 1931
1932 CompilationInfo* info_; 1932 CompilationInfo* info_;
1933 HGraph* graph_; 1933 HGraph* graph_;
1934 HBasicBlock* current_block_; 1934 HBasicBlock* current_block_;
1935 Scope* scope_; 1935 Scope* scope_;
1936 HSourcePosition position_; 1936 HSourcePosition position_;
1937 int start_position_; 1937 int start_position_;
1938 }; 1938 };
1939 1939
1940 1940
1941 template<> 1941 template <>
1942 inline HDeoptimize* HGraphBuilder::Add<HDeoptimize>( 1942 inline HDeoptimize* HGraphBuilder::Add<HDeoptimize>(
1943 const char* reason, Deoptimizer::BailoutType type) { 1943 Deoptimizer::DeoptReason reason, Deoptimizer::BailoutType type) {
1944 if (type == Deoptimizer::SOFT) { 1944 if (type == Deoptimizer::SOFT) {
1945 isolate()->counters()->soft_deopts_requested()->Increment(); 1945 isolate()->counters()->soft_deopts_requested()->Increment();
1946 if (FLAG_always_opt) return NULL; 1946 if (FLAG_always_opt) return NULL;
1947 } 1947 }
1948 if (current_block()->IsDeoptimizing()) return NULL; 1948 if (current_block()->IsDeoptimizing()) return NULL;
1949 HBasicBlock* after_deopt_block = CreateBasicBlock( 1949 HBasicBlock* after_deopt_block = CreateBasicBlock(
1950 current_block()->last_environment()); 1950 current_block()->last_environment());
1951 HDeoptimize* instr = New<HDeoptimize>(reason, type, after_deopt_block); 1951 HDeoptimize* instr = New<HDeoptimize>(reason, type, after_deopt_block);
1952 if (type == Deoptimizer::SOFT) { 1952 if (type == Deoptimizer::SOFT) {
1953 isolate()->counters()->soft_deopts_inserted()->Increment(); 1953 isolate()->counters()->soft_deopts_inserted()->Increment();
1954 } 1954 }
1955 FinishCurrentBlock(instr); 1955 FinishCurrentBlock(instr);
1956 set_current_block(after_deopt_block); 1956 set_current_block(after_deopt_block);
1957 return instr; 1957 return instr;
1958 } 1958 }
1959 1959
1960 1960
1961 template<> 1961 template <>
1962 inline HInstruction* HGraphBuilder::AddUncasted<HDeoptimize>( 1962 inline HInstruction* HGraphBuilder::AddUncasted<HDeoptimize>(
1963 const char* reason, Deoptimizer::BailoutType type) { 1963 Deoptimizer::DeoptReason reason, Deoptimizer::BailoutType type) {
1964 return Add<HDeoptimize>(reason, type); 1964 return Add<HDeoptimize>(reason, type);
1965 } 1965 }
1966 1966
1967 1967
1968 template<> 1968 template<>
1969 inline HSimulate* HGraphBuilder::Add<HSimulate>( 1969 inline HSimulate* HGraphBuilder::Add<HSimulate>(
1970 BailoutId id, 1970 BailoutId id,
1971 RemovableSimulate removable) { 1971 RemovableSimulate removable) {
1972 HSimulate* instr = current_block()->CreateSimulate(id, removable); 1972 HSimulate* instr = current_block()->CreateSimulate(id, removable);
1973 AddInstruction(instr); 1973 AddInstruction(instr);
(...skipping 975 matching lines...) Expand 10 before | Expand all | Expand 10 after
2949 } 2949 }
2950 2950
2951 private: 2951 private:
2952 HGraphBuilder* builder_; 2952 HGraphBuilder* builder_;
2953 }; 2953 };
2954 2954
2955 2955
2956 } } // namespace v8::internal 2956 } } // namespace v8::internal
2957 2957
2958 #endif // V8_HYDROGEN_H_ 2958 #endif // V8_HYDROGEN_H_
OLDNEW
« no previous file with comments | « src/disassembler.cc ('k') | src/hydrogen.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698