diff options
| author | 2014-12-15 22:59:03 +0000 | |
|---|---|---|
| committer | 2014-12-15 22:59:03 +0000 | |
| commit | f7f687bbb14aa7493bbe44d62a9de6fc17dbe542 (patch) | |
| tree | efe074c70fb2e125dfe2075a2f9e4568fa274fbe /compiler/optimizing/code_generator.cc | |
| parent | 81d035213b0426ee076cc0d017c895c7833d32e8 (diff) | |
| parent | e53798a7e3267305f696bf658e418c92e63e0834 (diff) | |
Merge "Inlining support in optimizing."
Diffstat (limited to 'compiler/optimizing/code_generator.cc')
| -rw-r--r-- | compiler/optimizing/code_generator.cc | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/compiler/optimizing/code_generator.cc b/compiler/optimizing/code_generator.cc index 461409ddca..6f424ce11d 100644 --- a/compiler/optimizing/code_generator.cc +++ b/compiler/optimizing/code_generator.cc @@ -565,10 +565,19 @@ void CodeGenerator::RecordPcInfo(HInstruction* instruction, uint32_t dex_pc) { stack_map_stream_.AddDexRegisterEntry(DexRegisterMap::kConstant, High32Bits(value)); ++i; DCHECK_LT(i, environment_size); - } else { - DCHECK(current->IsIntConstant()); + } else if (current->IsDoubleConstant()) { + int64_t value = bit_cast<double, int64_t>(current->AsDoubleConstant()->GetValue()); + stack_map_stream_.AddDexRegisterEntry(DexRegisterMap::kConstant, Low32Bits(value)); + stack_map_stream_.AddDexRegisterEntry(DexRegisterMap::kConstant, High32Bits(value)); + ++i; + DCHECK_LT(i, environment_size); + } else if (current->IsIntConstant()) { int32_t value = current->AsIntConstant()->GetValue(); stack_map_stream_.AddDexRegisterEntry(DexRegisterMap::kConstant, value); + } else { + DCHECK(current->IsFloatConstant()); + int32_t value = bit_cast<float, int32_t>(current->AsFloatConstant()->GetValue()); + stack_map_stream_.AddDexRegisterEntry(DexRegisterMap::kConstant, value); } break; } |