diff options
author | 2016-09-12 22:07:09 +0000 | |
---|---|---|
committer | 2016-09-12 22:07:10 +0000 | |
commit | e204051d3cc3b1be2e91f26621966c79c82fa74c (patch) | |
tree | 63270cd53f278140c7aef246925b39c858ccc55e /compiler/optimizing/code_generator.h | |
parent | f0c41505e1d241cf2191d3db377a26ce0bb43b51 (diff) | |
parent | 0719b5b9b458cb3eb9f0823f0dacdfe1a71214dd (diff) |
Merge "Revert "Use implicit null checks inside try blocks.""
Diffstat (limited to 'compiler/optimizing/code_generator.h')
-rw-r--r-- | compiler/optimizing/code_generator.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/compiler/optimizing/code_generator.h b/compiler/optimizing/code_generator.h index b4d4b9b760..0c60a98139 100644 --- a/compiler/optimizing/code_generator.h +++ b/compiler/optimizing/code_generator.h @@ -313,7 +313,6 @@ class CodeGenerator : public DeletableArenaObject<kArenaAllocCodeGenerator> { bool CanMoveNullCheckToUser(HNullCheck* null_check); void MaybeRecordImplicitNullCheck(HInstruction* instruction); - LocationSummary* CreateNullCheckLocations(HNullCheck* null_check); void GenerateNullCheck(HNullCheck* null_check); virtual void GenerateImplicitNullCheck(HNullCheck* null_check) = 0; virtual void GenerateExplicitNullCheck(HNullCheck* null_check) = 0; @@ -323,6 +322,12 @@ class CodeGenerator : public DeletableArenaObject<kArenaAllocCodeGenerator> { // TODO: Replace with a catch-entering instruction that records the environment. void RecordCatchBlockInfo(); + // Returns true if implicit null checks are allowed in the compiler options + // and if the null check is not inside a try block. We currently cannot do + // implicit null checks in that case because we need the NullCheckSlowPath to + // save live registers, which may be needed by the runtime to set catch phis. + bool IsImplicitNullCheckAllowed(HNullCheck* null_check) const; + // TODO: Avoid creating the `std::unique_ptr` here. void AddSlowPath(SlowPathCode* slow_path) { slow_paths_.push_back(std::unique_ptr<SlowPathCode>(slow_path)); @@ -708,8 +713,6 @@ class CodeGenerator : public DeletableArenaObject<kArenaAllocCodeGenerator> { bool is_leaf_; // Whether an instruction in the graph accesses the current method. - // TODO: Rename: this actually indicates that some instruction in the method - // needs the environment including a valid stack frame. bool requires_current_method_; friend class OptimizingCFITest; |