summaryrefslogtreecommitdiff
path: root/compiler/optimizing/code_generator.cc
diff options
context:
space:
mode:
author Nicolas Geoffray <ngeoffray@google.com> 2014-12-15 22:59:03 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2014-12-15 22:59:03 +0000
commitf7f687bbb14aa7493bbe44d62a9de6fc17dbe542 (patch)
treeefe074c70fb2e125dfe2075a2f9e4568fa274fbe /compiler/optimizing/code_generator.cc
parent81d035213b0426ee076cc0d017c895c7833d32e8 (diff)
parente53798a7e3267305f696bf658e418c92e63e0834 (diff)
Merge "Inlining support in optimizing."
Diffstat (limited to 'compiler/optimizing/code_generator.cc')
-rw-r--r--compiler/optimizing/code_generator.cc13
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;
}