diff options
| author | 2014-09-08 11:16:48 +0000 | |
|---|---|---|
| committer | 2014-09-08 11:16:48 +0000 | |
| commit | 0a1d91a69919fe4c8c5f227f9b35d76d3c05bd46 (patch) | |
| tree | 0d85bfba2ff69c34a2897351d1e50a1464509305 /compiler/optimizing/code_generator.h | |
| parent | e2c23739c6395a83b30ece38f8a2e9e1bf7cf3ce (diff) | |
| parent | 3946844c34ad965515f677084b07d663d70ad1b8 (diff) | |
Merge "Runtime support for the new stack maps for the opt compiler."
Diffstat (limited to 'compiler/optimizing/code_generator.h')
| -rw-r--r-- | compiler/optimizing/code_generator.h | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/compiler/optimizing/code_generator.h b/compiler/optimizing/code_generator.h index 12337c93de..a83d7032e3 100644 --- a/compiler/optimizing/code_generator.h +++ b/compiler/optimizing/code_generator.h @@ -23,6 +23,7 @@ #include "locations.h" #include "memory_region.h" #include "nodes.h" +#include "stack_map_stream.h" #include "utils/assembler.h" namespace art { @@ -97,7 +98,7 @@ class CodeGenerator : public ArenaObject { virtual HGraphVisitor* GetInstructionVisitor() = 0; virtual Assembler* GetAssembler() = 0; virtual size_t GetWordSize() const = 0; - void ComputeFrameSize(size_t number_of_spill_slots); + void ComputeFrameSize(size_t number_of_spill_slots, size_t number_of_out_slots); virtual size_t FrameEntrySpillSize() const = 0; int32_t GetStackSlot(HLocal* local) const; Location GetTemporaryLocation(HTemporary* temp) const; @@ -114,12 +115,7 @@ class CodeGenerator : public ArenaObject { virtual void DumpFloatingPointRegister(std::ostream& stream, int reg) const = 0; virtual InstructionSet GetInstructionSet() const = 0; - void RecordPcInfo(uint32_t dex_pc) { - struct PcInfo pc_info; - pc_info.dex_pc = dex_pc; - pc_info.native_pc = GetAssembler()->CodeSize(); - pc_infos_.Add(pc_info); - } + void RecordPcInfo(HInstruction* instruction, uint32_t dex_pc); void AddSlowPath(SlowPathCode* slow_path) { slow_paths_.Add(slow_path); @@ -131,6 +127,7 @@ class CodeGenerator : public ArenaObject { void BuildVMapTable(std::vector<uint8_t>* vector) const; void BuildNativeGCMap( std::vector<uint8_t>* vector, const DexCompilationUnit& dex_compilation_unit) const; + void BuildStackMaps(std::vector<uint8_t>* vector); bool IsLeafMethod() const { return is_leaf_; @@ -149,7 +146,8 @@ class CodeGenerator : public ArenaObject { pc_infos_(graph->GetArena(), 32), slow_paths_(graph->GetArena(), 8), blocked_registers_(graph->GetArena()->AllocArray<bool>(number_of_registers)), - is_leaf_(true) {} + is_leaf_(true), + stack_map_stream_(graph->GetArena()) {} ~CodeGenerator() {} // Register allocation logic. @@ -184,6 +182,8 @@ class CodeGenerator : public ArenaObject { bool is_leaf_; + StackMapStream stack_map_stream_; + DISALLOW_COPY_AND_ASSIGN(CodeGenerator); }; |