8 bit and 16 bit fields aren't necessarily 32 bit aligned due to
field packing. This was causing SIGBUS for hprof dumping some apps.
Bug:
19627999
Change-Id: Ifd68b281b2a23b9ed3c6f8780c99870643366c7e
__ AddU1(t);
switch (size) {
case 1:
- __ AddU1(static_cast<uint8_t>(f->Get32(klass)));
+ __ AddU1(f->GetByte(klass));
break;
case 2:
- __ AddU2(static_cast<uint16_t>(f->Get32(klass)));
+ __ AddU2(f->GetChar(klass));
break;
case 4:
__ AddU4(f->Get32(klass));
size_t size;
SignatureToBasicTypeAndSize(f->GetTypeDescriptor(), &size);
if (size == 1) {
- __ AddU1(f->Get32(obj));
+ __ AddU1(f->GetByte(obj));
} else if (size == 2) {
- __ AddU2(f->Get32(obj));
+ __ AddU2(f->GetChar(obj));
} else if (size == 4) {
__ AddU4(f->Get32(obj));
} else {