summaryrefslogtreecommitdiffstats
path: root/compiler
diff options
context:
space:
mode:
authorNicolas Geoffray <ngeoffray@google.com>2014-10-24 10:44:50 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2014-10-24 10:44:51 +0000
commit32da24bb26885a9877adcef5b53f283d44b622d2 (patch)
treeeae9d56de1bb0c156f5ea310b83a7aa7027515e2 /compiler
parent02567379e7099682345fd59d45a23e17711c9ddd (diff)
parent8d6ae524ed5d2fed1f9e789d6de9764d374afa43 (diff)
downloadart-32da24bb26885a9877adcef5b53f283d44b622d2.zip
art-32da24bb26885a9877adcef5b53f283d44b622d2.tar.gz
art-32da24bb26885a9877adcef5b53f283d44b622d2.tar.bz2
Merge "Fix wrong unsigned to signed conversions."
Diffstat (limited to 'compiler')
-rw-r--r--compiler/optimizing/builder.cc14
-rw-r--r--compiler/optimizing/builder.h2
2 files changed, 10 insertions, 6 deletions
diff --git a/compiler/optimizing/builder.cc b/compiler/optimizing/builder.cc
index 79cbd0e..e5e9964 100644
--- a/compiler/optimizing/builder.cc
+++ b/compiler/optimizing/builder.cc
@@ -550,7 +550,7 @@ void HGraphBuilder::BuildFillArrayData(HInstruction* object,
}
void HGraphBuilder::BuildFillWideArrayData(HInstruction* object,
- const uint64_t* data,
+ const int64_t* data,
uint32_t element_count,
uint32_t dex_offset) {
for (uint32_t i = 0; i < element_count; ++i) {
@@ -959,25 +959,29 @@ bool HGraphBuilder::AnalyzeDexInstruction(const Instruction& instruction, uint32
switch (payload->element_width) {
case 1:
- BuildFillArrayData(null_check, data, element_count, Primitive::kPrimByte, dex_offset);
+ BuildFillArrayData(null_check,
+ reinterpret_cast<const int8_t*>(data),
+ element_count,
+ Primitive::kPrimByte,
+ dex_offset);
break;
case 2:
BuildFillArrayData(null_check,
- reinterpret_cast<const uint16_t*>(data),
+ reinterpret_cast<const int16_t*>(data),
element_count,
Primitive::kPrimShort,
dex_offset);
break;
case 4:
BuildFillArrayData(null_check,
- reinterpret_cast<const uint32_t*>(data),
+ reinterpret_cast<const int32_t*>(data),
element_count,
Primitive::kPrimInt,
dex_offset);
break;
case 8:
BuildFillWideArrayData(null_check,
- reinterpret_cast<const uint64_t*>(data),
+ reinterpret_cast<const int64_t*>(data),
element_count,
dex_offset);
break;
diff --git a/compiler/optimizing/builder.h b/compiler/optimizing/builder.h
index c5e02db..b55ef07 100644
--- a/compiler/optimizing/builder.h
+++ b/compiler/optimizing/builder.h
@@ -154,7 +154,7 @@ class HGraphBuilder : public ValueObject {
// Fills the given object with data as specified in the fill-array-data
// instruction. The data must be for long and double arrays.
void BuildFillWideArrayData(HInstruction* object,
- const uint64_t* data,
+ const int64_t* data,
uint32_t element_count,
uint32_t dex_offset);