Lines Matching refs:writer
67 static bool WriteUlebTaggedValue(Writer *writer, Tag tag, Val v)
69 if (!writer->WriteByte(static_cast<uint8_t>(tag))) {
73 if (!writer->WriteUleb128(v)) {
81 static bool WriteSlebTaggedValue(Writer *writer, Tag tag, Val v)
83 if (!writer->WriteByte(static_cast<uint8_t>(tag))) {
87 if (!writer->WriteSleb128(v)) {
95 static bool WriteTaggedValue(Writer *writer, Tag tag, Val v)
97 if (!writer->WriteByte(static_cast<uint8_t>(tag))) {
101 if (!writer->Write(v)) {
109 static bool WriteIdTaggedValue(Writer *writer, Tag tag, BaseItem *item)
112 return WriteTaggedValue(writer, tag, item->GetOffset());
217 bool StringItem::Write(Writer *writer)
219 ASSERT(GetOffset() == writer->GetOffset());
226 if (!writer->WriteUleb128((utf16_length_ << 1U) | is_ascii_)) {
231 if (!writer->WriteByte(static_cast<uint8_t>(c))) {
252 bool BaseClassItem::Write(Writer *writer)
254 ASSERT(GetOffset() == writer->GetOffset());
255 return name_.Write(writer);
323 bool ClassItem::WriteIfaces(Writer *writer)
326 if (!writer->WriteByte(static_cast<uint8_t>(ClassTag::INTERFACES))) {
330 if (!writer->WriteUleb128(ifaces_.size())) {
336 if (!writer->Write<uint16_t>(iface->GetIndex(this))) {
345 bool ClassItem::WriteAnnotations(Writer *writer)
348 if (!WriteIdTaggedValue(writer, ClassTag::RUNTIME_ANNOTATION, runtime_annotation)) {
354 if (!WriteIdTaggedValue(writer, ClassTag::ANNOTATION, annotation)) {
360 if (!WriteIdTaggedValue(writer, ClassTag::RUNTIME_TYPE_ANNOTATION, runtime_type_annotation)) {
366 if (!WriteIdTaggedValue(writer, ClassTag::TYPE_ANNOTATION, type_annotation)) {
374 bool ClassItem::WriteTaggedData(Writer *writer)
376 if (!WriteIfaces(writer)) {
381 if (!WriteTaggedValue(writer, ClassTag::SOURCE_LANG, static_cast<uint8_t>(source_lang_))) {
386 if (!WriteAnnotations(writer)) {
391 if (!WriteIdTaggedValue(writer, ClassTag::SOURCE_FILE, source_file_)) {
396 return writer->WriteByte(static_cast<uint8_t>(ClassTag::NOTHING));
399 bool ClassItem::Write(Writer *writer)
401 if (!BaseClassItem::Write(writer)) {
406 if (!writer->Write(offset)) {
410 if (!writer->WriteUleb128(access_flags_)) {
414 if (!writer->WriteUleb128(fields_.size())) {
418 if (!writer->WriteUleb128(methods_.size())) {
422 if (!WriteTaggedData(writer)) {
427 if (!field->Write(writer)) {
433 if (!method->Write(writer)) {
470 bool ParamAnnotationsItem::Write(Writer *writer)
472 ASSERT(GetOffset() == writer->GetOffset());
474 if (!writer->Write(static_cast<uint32_t>(annotations_.size()))) {
479 if (!writer->Write(static_cast<uint32_t>(param_annotations.size()))) {
486 if (!writer->Write(item->GetOffset())) {
535 bool ProtoItem::Write(Writer *writer)
537 ASSERT(GetOffset() == writer->GetOffset());
539 if (!writer->Write(s)) {
546 if (!writer->Write<uint16_t>(r->GetIndex(this))) {
568 bool BaseMethodItem::Write(Writer *writer)
570 ASSERT(GetOffset() == writer->GetOffset());
574 if (!writer->Write<uint16_t>(class_->GetIndex(this))) {
581 if (!writer->Write<uint16_t>(INVALID_INDEX_16)) {
587 if (!writer->Write<uint16_t>(proto_->GetIndex(this))) {
594 if (!writer->Write(name_->GetOffset())) {
598 return writer->WriteUleb128(access_flags_);
647 bool MethodItem::WriteRuntimeAnnotations(Writer *writer)
650 if (!WriteIdTaggedValue(writer, MethodTag::RUNTIME_ANNOTATION, runtime_annotation)) {
656 if (!WriteIdTaggedValue(writer, MethodTag::RUNTIME_PARAM_ANNOTATION, runtime_param_annotations_)) {
664 bool MethodItem::WriteTypeAnnotations(Writer *writer)
667 if (!WriteIdTaggedValue(writer, MethodTag::RUNTIME_TYPE_ANNOTATION, runtime_type_annotation)) {
673 if (!WriteIdTaggedValue(writer, MethodTag::TYPE_ANNOTATION, type_annotation)) {
681 bool MethodItem::WriteTaggedData(Writer *writer)
684 if (!WriteIdTaggedValue(writer, MethodTag::CODE, code_)) {
690 if (!WriteTaggedValue(writer, MethodTag::SOURCE_LANG, static_cast<uint8_t>(source_lang_))) {
695 if (!WriteRuntimeAnnotations(writer)) {
700 if (!WriteIdTaggedValue(writer, MethodTag::DEBUG_INFO, debug_info_)) {
706 if (!WriteIdTaggedValue(writer, MethodTag::ANNOTATION, annotation)) {
711 if (!WriteTypeAnnotations(writer)) {
716 if (!WriteIdTaggedValue(writer, MethodTag::PARAM_ANNOTATION, param_annotations_)) {
721 return writer->WriteByte(static_cast<uint8_t>(MethodTag::NOTHING));
724 bool MethodItem::Write(Writer *writer)
726 if (!BaseMethodItem::Write(writer)) {
730 return WriteTaggedData(writer);
741 bool CodeItem::CatchBlock::Write(Writer *writer)
743 ASSERT(GetOffset() == writer->GetOffset());
748 if (!writer->WriteUleb128(type_off)) {
752 if (!writer->WriteUleb128(handler_pc_)) {
756 if (!writer->WriteUleb128(code_size_)) {
792 bool CodeItem::TryBlock::Write(Writer *writer)
794 ASSERT(GetOffset() == writer->GetOffset());
796 if (!writer->WriteUleb128(start_pc_)) {
800 if (!writer->WriteUleb128(length_)) {
804 if (!writer->WriteUleb128(catch_blocks_.size())) {
809 if (!catch_block.Write(writer)) {
856 bool CodeItem::Write(Writer *writer)
858 ASSERT(GetOffset() == writer->GetOffset());
860 if (!writer->WriteUleb128(num_vregs_)) {
864 if (!writer->WriteUleb128(num_args_)) {
868 if (!writer->WriteUleb128(instructions_.size())) {
872 if (!writer->WriteUleb128(try_blocks_.size())) {
876 if (!writer->WriteBytes(instructions_)) {
881 if (!try_block.Write(writer)) {
974 bool ScalarValueItem::Write(Writer *writer)
976 ASSERT(GetOffset() == writer->GetOffset());
980 return writer->Write(GetValue<uint32_t>());
983 return writer->Write(GetValue<uint64_t>());
986 return writer->Write(bit_cast<uint32_t>(GetValue<float>()));
989 return writer->Write(bit_cast<uint64_t>(GetValue<double>()));
993 return writer->Write(GetId().GetOffset());
1004 bool ScalarValueItem::WriteAsUleb128(Writer *writer)
1006 ASSERT(GetOffset() == writer->GetOffset());
1010 return writer->WriteUleb128(GetValue<uint32_t>());
1013 return writer->WriteUleb128(GetValue<uint64_t>());
1017 return writer->WriteUleb128(GetId().GetOffset());
1044 bool ArrayValueItem::Write(Writer *writer)
1046 ASSERT(GetOffset() == writer->GetOffset());
1048 if (!writer->WriteUleb128(items_.size())) {
1058 if (!writer->Write(value)) {
1068 if (!writer->Write(value)) {
1076 if (!item.Write(writer)) {
1167 bool LiteralItem::Write(Writer *writer)
1169 ASSERT(GetOffset() == writer->GetOffset());
1173 return writer->Write(GetValue<uint8_t>());
1176 return writer->Write(GetValue<uint16_t>());
1179 return writer->Write(GetValue<uint32_t>());
1182 return writer->Write(GetValue<uint64_t>());
1186 return writer->Write(GetId().GetOffset());
1190 return writer->Write(GetMethodId().GetOffset());
1194 return writer->Write(GetLiteralArrayFileId().GetOffset());
1234 bool LiteralArrayItem::Write(Writer *writer)
1236 ASSERT(GetOffset() == writer->GetOffset());
1238 if (!writer->Write(static_cast<uint32_t>(items_.size()))) {
1243 if (!item.Write(writer)) {
1264 bool BaseFieldItem::Write(Writer *writer)
1266 ASSERT(GetOffset() == writer->GetOffset());
1270 if (!writer->Write<uint16_t>(class_->GetIndex(this))) {
1274 if (!writer->Write<uint16_t>(type_->GetIndex(this))) {
1278 return writer->Write(name_->GetOffset());
1314 bool FieldItem::WriteValue(Writer *writer)
1322 if (!WriteSlebTaggedValue(writer, FieldTag::INT_VALUE, v)) {
1327 if (!WriteTaggedValue(writer, FieldTag::VALUE, v)) {
1333 if (!WriteTaggedValue(writer, FieldTag::VALUE, id.GetOffset())) {
1338 if (!WriteIdTaggedValue(writer, FieldTag::VALUE, value_)) {
1346 bool FieldItem::WriteAnnotations(Writer *writer)
1349 if (!WriteIdTaggedValue(writer, FieldTag::RUNTIME_ANNOTATION, runtime_annotation)) {
1355 if (!WriteIdTaggedValue(writer, FieldTag::ANNOTATION, annotation)) {
1361 if (!WriteIdTaggedValue(writer, FieldTag::RUNTIME_TYPE_ANNOTATION, runtime_type_annotation)) {
1367 if (!WriteIdTaggedValue(writer, FieldTag::TYPE_ANNOTATION, type_annotation)) {
1375 bool FieldItem::WriteTaggedData(Writer *writer)
1377 if (!WriteValue(writer)) {
1381 if (!WriteAnnotations(writer)) {
1385 return writer->WriteByte(static_cast<uint8_t>(FieldTag::NOTHING));
1388 bool FieldItem::Write(Writer *writer)
1390 if (!BaseFieldItem::Write(writer)) {
1394 if (!writer->WriteUleb128(access_flags_)) {
1398 return WriteTaggedData(writer);
1409 bool AnnotationItem::Write(Writer *writer)
1411 ASSERT(GetOffset() == writer->GetOffset());
1414 if (!writer->Write<uint16_t>(class_->GetIndex(this))) {
1418 if (!writer->Write(static_cast<uint16_t>(elements_.size()))) {
1424 if (!writer->Write(elem.GetName()->GetOffset())) {
1432 if (!writer->Write(value_item->GetAsScalar()->GetValue<uint32_t>())) {
1438 if (!writer->Write(bit_cast<uint32_t>(value_item->GetAsScalar()->GetValue<float>()))) {
1444 if (!writer->Write(value_item->GetAsScalar()->GetId().GetOffset())) {
1451 if (!writer->Write(value_item->GetOffset())) {
1460 if (!writer->Write(tag.GetItem())) {
1616 bool LineNumberProgramItem::Write(Writer *writer)
1618 ASSERT(GetOffset() == writer->GetOffset());
1620 return writer->WriteBytes(data_);
1645 bool DebugInfoItem::Write(Writer *writer)
1647 ASSERT(GetOffset() == writer->GetOffset());
1649 if (!writer->WriteUleb128(line_num_)) {
1653 if (!writer->WriteUleb128(parameters_.size())) {
1660 if (!writer->WriteUleb128(p == nullptr ? 0 : p->GetOffset())) {
1665 if (!writer->WriteUleb128(constant_pool_.size())) {
1669 if (!writer->WriteBytes(constant_pool_)) {
1676 return writer->WriteUleb128(program_->GetIndex(this));
1711 bool MethodHandleItem::Write(Writer *writer)
1713 ASSERT(GetOffset() == writer->GetOffset());
1715 if (!writer->WriteByte(static_cast<uint8_t>(type_))) {
1719 return writer->WriteUleb128(entity_->GetOffset());