diff options
author | Nicolas Geoffray <ngeoffray@google.com> | 2014-10-24 10:44:50 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-10-24 10:44:51 +0000 |
commit | 32da24bb26885a9877adcef5b53f283d44b622d2 (patch) | |
tree | eae9d56de1bb0c156f5ea310b83a7aa7027515e2 /compiler | |
parent | 02567379e7099682345fd59d45a23e17711c9ddd (diff) | |
parent | 8d6ae524ed5d2fed1f9e789d6de9764d374afa43 (diff) | |
download | art-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.cc | 14 | ||||
-rw-r--r-- | compiler/optimizing/builder.h | 2 |
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); |