diff options
author | Calin Juravle <calin@google.com> | 2015-01-08 17:35:35 +0000 |
---|---|---|
committer | Calin Juravle <calin@google.com> | 2015-01-16 17:27:03 +0000 |
commit | cd6dffedf1bd8e6dfb3fb0c933551f9a90f7de3f (patch) | |
tree | 0d83e9fdf65bded684d6e836078f253e63b7e11f /compiler/optimizing/code_generator_arm.h | |
parent | 12c03ac7575db242a6f35739bb459e8277115da4 (diff) | |
download | art-cd6dffedf1bd8e6dfb3fb0c933551f9a90f7de3f.tar.gz art-cd6dffedf1bd8e6dfb3fb0c933551f9a90f7de3f.tar.bz2 art-cd6dffedf1bd8e6dfb3fb0c933551f9a90f7de3f.zip |
Add implicit null checks for the optimizing compiler
- for backends: arm, arm64, x86, x86_64
- fixed parameter passing for CodeGenerator
- 003-omnibus-opcodes test verifies that NullPointerExceptions work as
expected
Change-Id: I1b302acd353342504716c9169a80706cf3aba2c8
Diffstat (limited to 'compiler/optimizing/code_generator_arm.h')
-rw-r--r-- | compiler/optimizing/code_generator_arm.h | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/compiler/optimizing/code_generator_arm.h b/compiler/optimizing/code_generator_arm.h index 267d9a2cef..fe373d54e3 100644 --- a/compiler/optimizing/code_generator_arm.h +++ b/compiler/optimizing/code_generator_arm.h @@ -19,6 +19,7 @@ #include "code_generator.h" #include "dex/compiler_enums.h" +#include "driver/compiler_options.h" #include "nodes.h" #include "parallel_move_resolver.h" #include "utils/arm/assembler_thumb2.h" @@ -143,7 +144,8 @@ class InstructionCodeGeneratorARM : public HGraphVisitor { Register out_lo, Register out_hi); void HandleFieldSet(HInstruction* instruction, const FieldInfo& field_info); void HandleFieldGet(HInstruction* instruction, const FieldInfo& field_info); - + void GenerateImplicitNullCheck(HNullCheck* instruction); + void GenerateExplicitNullCheck(HNullCheck* instruction); ArmAssembler* const assembler_; CodeGeneratorARM* const codegen_; @@ -153,7 +155,9 @@ class InstructionCodeGeneratorARM : public HGraphVisitor { class CodeGeneratorARM : public CodeGenerator { public: - CodeGeneratorARM(HGraph* graph, const ArmInstructionSetFeatures* isa_features); + CodeGeneratorARM(HGraph* graph, + const ArmInstructionSetFeatures& isa_features, + const CompilerOptions& compiler_options); virtual ~CodeGeneratorARM() {} void GenerateFrameEntry() OVERRIDE; @@ -234,7 +238,7 @@ class CodeGeneratorARM : public CodeGenerator { block_labels_.SetSize(GetGraph()->GetBlocks().Size()); } - const ArmInstructionSetFeatures* GetInstructionSetFeatures() const { + const ArmInstructionSetFeatures& GetInstructionSetFeatures() const { return isa_features_; } @@ -249,7 +253,7 @@ class CodeGeneratorARM : public CodeGenerator { InstructionCodeGeneratorARM instruction_visitor_; ParallelMoveResolverARM move_resolver_; Thumb2Assembler assembler_; - const ArmInstructionSetFeatures* isa_features_; + const ArmInstructionSetFeatures& isa_features_; DISALLOW_COPY_AND_ASSIGN(CodeGeneratorARM); }; |