diff options
| author | 2016-04-13 10:41:20 +0000 | |
|---|---|---|
| committer | 2016-04-13 10:41:20 +0000 | |
| commit | 38e398b7e1cb82c26838ef78dd71a7bf93e58995 (patch) | |
| tree | 2d312456ca0f4368806abc40545da952b5eb0dfd /compiler/optimizing/code_generator.cc | |
| parent | f9eed16e175f8c7cb37d878acc772d653b07101e (diff) | |
| parent | d58b837ae41c6d8ce010c362e8f85bd938715900 (diff) | |
Merge "Allocate code generators on the arena."
Diffstat (limited to 'compiler/optimizing/code_generator.cc')
| -rw-r--r-- | compiler/optimizing/code_generator.cc | 65 |
1 files changed, 36 insertions, 29 deletions
diff --git a/compiler/optimizing/code_generator.cc b/compiler/optimizing/code_generator.cc index 953c0ae418..a771cc1567 100644 --- a/compiler/optimizing/code_generator.cc +++ b/compiler/optimizing/code_generator.cc @@ -552,59 +552,66 @@ void CodeGenerator::MaybeRecordStat(MethodCompilationStat compilation_stat, size } } -CodeGenerator* CodeGenerator::Create(HGraph* graph, - InstructionSet instruction_set, - const InstructionSetFeatures& isa_features, - const CompilerOptions& compiler_options, - OptimizingCompilerStats* stats) { +std::unique_ptr<CodeGenerator> CodeGenerator::Create(HGraph* graph, + InstructionSet instruction_set, + const InstructionSetFeatures& isa_features, + const CompilerOptions& compiler_options, + OptimizingCompilerStats* stats) { + ArenaAllocator* arena = graph->GetArena(); switch (instruction_set) { #ifdef ART_ENABLE_CODEGEN_arm case kArm: case kThumb2: { - return new arm::CodeGeneratorARM(graph, - *isa_features.AsArmInstructionSetFeatures(), - compiler_options, - stats); + return std::unique_ptr<CodeGenerator>( + new (arena) arm::CodeGeneratorARM(graph, + *isa_features.AsArmInstructionSetFeatures(), + compiler_options, + stats)); } #endif #ifdef ART_ENABLE_CODEGEN_arm64 case kArm64: { - return new arm64::CodeGeneratorARM64(graph, - *isa_features.AsArm64InstructionSetFeatures(), - compiler_options, - stats); + return std::unique_ptr<CodeGenerator>( + new (arena) arm64::CodeGeneratorARM64(graph, + *isa_features.AsArm64InstructionSetFeatures(), + compiler_options, + stats)); } #endif #ifdef ART_ENABLE_CODEGEN_mips case kMips: { - return new mips::CodeGeneratorMIPS(graph, - *isa_features.AsMipsInstructionSetFeatures(), - compiler_options, - stats); + return std::unique_ptr<CodeGenerator>( + new (arena) mips::CodeGeneratorMIPS(graph, + *isa_features.AsMipsInstructionSetFeatures(), + compiler_options, + stats)); } #endif #ifdef ART_ENABLE_CODEGEN_mips64 case kMips64: { - return new mips64::CodeGeneratorMIPS64(graph, - *isa_features.AsMips64InstructionSetFeatures(), - compiler_options, - stats); + return std::unique_ptr<CodeGenerator>( + new (arena) mips64::CodeGeneratorMIPS64(graph, + *isa_features.AsMips64InstructionSetFeatures(), + compiler_options, + stats)); } #endif #ifdef ART_ENABLE_CODEGEN_x86 case kX86: { - return new x86::CodeGeneratorX86(graph, - *isa_features.AsX86InstructionSetFeatures(), - compiler_options, - stats); + return std::unique_ptr<CodeGenerator>( + new (arena) x86::CodeGeneratorX86(graph, + *isa_features.AsX86InstructionSetFeatures(), + compiler_options, + stats)); } #endif #ifdef ART_ENABLE_CODEGEN_x86_64 case kX86_64: { - return new x86_64::CodeGeneratorX86_64(graph, - *isa_features.AsX86_64InstructionSetFeatures(), - compiler_options, - stats); + return std::unique_ptr<CodeGenerator>( + new (arena) x86_64::CodeGeneratorX86_64(graph, + *isa_features.AsX86_64InstructionSetFeatures(), + compiler_options, + stats)); } #endif default: |