MCPcopy Create free account
hub / github.com/CodingGay/BlackDex / Next

Method Next

Bcore/src/main/cpp/dex/dex_file.cc:741–801  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

739}
740
741void EncodedArrayValueIterator::Next() {
742 pos_++;
743 if (pos_ >= array_size_) {
744 return;
745 }
746 uint8_t value_type = *ptr_++;
747 uint8_t value_arg = value_type >> kEncodedValueArgShift;
748 size_t width = value_arg + 1; // assume and correct later
749 type_ = static_cast<ValueType>(value_type & kEncodedValueTypeMask);
750 switch (type_) {
751 case kBoolean:
752 jval_.i = (value_arg != 0) ? 1 : 0;
753 width = 0;
754 break;
755 case kByte:
756 jval_.i = DexFile::ReadSignedInt(ptr_, value_arg);
757 CHECK(IsInt<8>(jval_.i));
758 break;
759 case kShort:
760 jval_.i = DexFile::ReadSignedInt(ptr_, value_arg);
761 CHECK(IsInt<16>(jval_.i));
762 break;
763 case kChar:
764 jval_.i = DexFile::ReadUnsignedInt(ptr_, value_arg, false);
765 CHECK(IsUint<16>(jval_.i));
766 break;
767 case kInt:
768 jval_.i = DexFile::ReadSignedInt(ptr_, value_arg);
769 break;
770 case kLong:
771 jval_.j = DexFile::ReadSignedLong(ptr_, value_arg);
772 break;
773 case kFloat:
774 jval_.i = DexFile::ReadUnsignedInt(ptr_, value_arg, true);
775 break;
776 case kDouble:
777 jval_.j = DexFile::ReadUnsignedLong(ptr_, value_arg, true);
778 break;
779 case kString:
780 case kType:
781 case kMethodType:
782 case kMethodHandle:
783 jval_.i = DexFile::ReadUnsignedInt(ptr_, value_arg, false);
784 break;
785 case kField:
786 case kMethod:
787 case kEnum:
788 case kArray:
789 case kAnnotation:
790 UNIMPLEMENTED(FATAL) << ": type " << type_;
791 UNREACHABLE();
792 case kNull:
793 jval_.l = nullptr;
794 width = 0;
795 break;
796 default:
797 LOG(FATAL) << "Unreached";
798 UNREACHABLE();

Callers 15

fixCodeItemFunction · 0.45
DecodeDebugLocalInfoMethod · 0.45
VisitMethodsMethod · 0.45
FindCodeItemOffsetMethod · 0.45
FindProtoIdMethod · 0.45
CheckStaticFieldTypesMethod · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected