diff options
author | Nicolas Geoffray <ngeoffray@google.com> | 2014-10-06 09:12:41 +0100 |
---|---|---|
committer | Nicolas Geoffray <ngeoffray@google.com> | 2014-10-07 20:19:47 +0100 |
commit | 7fb49da8ec62e8a10ed9419ade9f32c6b1174687 (patch) | |
tree | 8b1bec67452b84809cecd5645543e1f885ccbd44 /compiler/optimizing/builder.h | |
parent | 4a1b4679cda2f0d2893b8e3f910c21231849291c (diff) | |
download | art-7fb49da8ec62e8a10ed9419ade9f32c6b1174687.tar.gz art-7fb49da8ec62e8a10ed9419ade9f32c6b1174687.tar.bz2 art-7fb49da8ec62e8a10ed9419ade9f32c6b1174687.zip |
Add support for floats and doubles.
- Follows Quick conventions.
- Currently only works with baseline register allocator.
Change-Id: Ie4b8e298f4f5e1cd82364da83e4344d4fc3621a3
Diffstat (limited to 'compiler/optimizing/builder.h')
-rw-r--r-- | compiler/optimizing/builder.h | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/compiler/optimizing/builder.h b/compiler/optimizing/builder.h index e143786be..7d7b18836 100644 --- a/compiler/optimizing/builder.h +++ b/compiler/optimizing/builder.h @@ -18,6 +18,7 @@ #define ART_COMPILER_OPTIMIZING_BUILDER_H_ #include "dex_file.h" +#include "dex_file-inl.h" #include "driver/compiler_driver.h" #include "driver/dex_compilation_unit.h" #include "primitive.h" @@ -32,9 +33,9 @@ class Instruction; class HGraphBuilder : public ValueObject { public: HGraphBuilder(ArenaAllocator* arena, - DexCompilationUnit* dex_compilation_unit = nullptr, - const DexFile* dex_file = nullptr, - CompilerDriver* driver = nullptr) + DexCompilationUnit* dex_compilation_unit, + const DexFile* dex_file, + CompilerDriver* driver) : arena_(arena), branch_targets_(arena, 0), locals_(arena, 0), @@ -46,7 +47,24 @@ class HGraphBuilder : public ValueObject { constant1_(nullptr), dex_file_(dex_file), dex_compilation_unit_(dex_compilation_unit), - compiler_driver_(driver) {} + compiler_driver_(driver), + return_type_(Primitive::GetType(dex_compilation_unit_->GetShorty()[0])) {} + + // Only for unit testing. + HGraphBuilder(ArenaAllocator* arena, Primitive::Type return_type = Primitive::kPrimInt) + : arena_(arena), + branch_targets_(arena, 0), + locals_(arena, 0), + entry_block_(nullptr), + exit_block_(nullptr), + current_block_(nullptr), + graph_(nullptr), + constant0_(nullptr), + constant1_(nullptr), + dex_file_(nullptr), + dex_compilation_unit_(nullptr), + compiler_driver_(nullptr), + return_type_(return_type) {} HGraph* BuildGraph(const DexFile::CodeItem& code); @@ -128,6 +146,7 @@ class HGraphBuilder : public ValueObject { const DexFile* const dex_file_; DexCompilationUnit* const dex_compilation_unit_; CompilerDriver* const compiler_driver_; + const Primitive::Type return_type_; DISALLOW_COPY_AND_ASSIGN(HGraphBuilder); }; |