Lines Matching refs:os

20 #include "os/file.h"
24 void PandasmProgramDumper::Dump(std::ostream &os, const pandasm::Program &program)
27 os << std::flush;
28 DumpAbcFilePath(os);
29 DumpProgramLanguage(os);
30 DumpLiteralArrayTable(os);
31 DumpRecordTable(os);
32 DumpFunctionTable(os);
33 DumpStrings(os);
41 void PandasmProgramDumper::DumpAbcFilePath(std::ostream &os) const
46 std::string file_abs_path = os::file::File::GetAbsolutePath(abc_file_path_).Value();
47 os << DUMP_TITLE_SOURCE_BINARY << file_abs_path << DUMP_CONTENT_DOUBLE_ENDL;
50 void PandasmProgramDumper::DumpProgramLanguage(std::ostream &os) const
52 os << DUMP_TITLE_LANGUAGE;
54 os << DUMP_CONTENT_ECMASCRIPT;
56 os << DUMP_CONTENT_PANDA_ASSEMBLY;
58 os << DUMP_CONTENT_DOUBLE_ENDL;
61 void PandasmProgramDumper::DumpLiteralArrayTable(std::ostream &os) const
63 os << DUMP_TITLE_SEPARATOR;
64 os << DUMP_TITLE_LITERALS;
65 os << DUMP_CONTENT_DOUBLE_ENDL;
79 os << str;
83 os << it->first << DUMP_CONTENT_SPACE;
85 os << SerializeLiteralArray(it->second, id);
86 os << DUMP_CONTENT_DOUBLE_ENDL;
89 os << DUMP_CONTENT_DOUBLE_ENDL;
92 void PandasmProgramDumper::DumpRecordTable(std::ostream &os) const
94 os << DUMP_TITLE_SEPARATOR;
95 os << DUMP_TITLE_RECORDS;
96 os << DUMP_CONTENT_DOUBLE_ENDL;
101 DumpRecord(os, it.second);
103 os << DUMP_CONTENT_SINGLE_ENDL;
106 void PandasmProgramDumper::DumpRecord(std::ostream &os, const pandasm::Record &record) const
116 os << DUMP_TITLE_RECORD << record.name;
117 if (DumpRecordMetaData(os, record)) {
118 DumpFieldList(os, record);
120 DumpRecordSourceFile(os, record);
123 bool PandasmProgramDumper::DumpRecordMetaData(std::ostream &os, const pandasm::Record &record) const
126 os << DUMP_CONTENT_SPACE << DUMP_CONTENT_ATTR_EXTERNAL;
127 os << DUMP_CONTENT_SINGLE_ENDL;
133 void PandasmProgramDumper::DumpFieldList(std::ostream &os, const pandasm::Record &record) const
135 os << DUMP_CONTENT_SPACE << DUMP_CONTENT_LEFT_CURLY_BRACKET << DUMP_CONTENT_SINGLE_ENDL;
137 DumpField(os, it);
139 os << DUMP_CONTENT_RIGHT_CURLY_BRACKET << DUMP_CONTENT_SINGLE_ENDL;
142 void PandasmProgramDumper::DumpField(std::ostream &os, const pandasm::Field &field) const
144 os << DUMP_CONTENT_TAB << field.type.GetPandasmName() << DUMP_CONTENT_SPACE << field.name;
145 DumpFieldMetaData(os, field);
146 os << DUMP_CONTENT_SINGLE_ENDL;
149 void PandasmProgramDumper::DumpFieldMetaData(std::ostream &os, const pandasm::Field &field) const
152 DumpScalarValue(os, *(field.metadata->GetValue()));
156 void PandasmProgramDumper::DumpAnnotationData(std::ostream &os, const pandasm::AnnotationData &anno) const
158 os << DUMP_CONTENT_SPACE << anno.GetName() << DUMP_CONTENT_SINGLE_ENDL;
160 os << DUMP_CONTENT_SPACE << element.GetName();
162 DumpArrayValue(os, *(element.GetValue()->GetAsArray()));
164 DumpScalarValue(os, *(element.GetValue()->GetAsScalar()));
169 void PandasmProgramDumper::DumpArrayValue(std::ostream &os, const pandasm::ArrayValue &array) const
172 DumpScalarValue(os, val);
175 void PandasmProgramDumper::DumpScalarValue(std::ostream &os, const pandasm::ScalarValue &scalar) const
188 os << DUMP_CONTENT_SPACE << scalar.GetValue<uint64_t>();
192 os << DUMP_CONTENT_SPACE << scalar.GetValue<float>();
195 os << DUMP_CONTENT_SPACE << scalar.GetValue<double>();
203 os << DUMP_CONTENT_SPACE << scalar.GetValue<std::string>();
209 os << DUMP_CONTENT_SPACE << SerializeLiteralArray(it->second, id);
215 os << DUMP_CONTENT_SPACE << type.GetComponentName() << DUMP_CONTENT_SPACE << type.GetName();
219 DumpAnnotationData(os, scalar.GetValue<pandasm::AnnotationData>());
227 void PandasmProgramDumper::DumpRecordSourceFile(std::ostream &os, const pandasm::Record &record) const
229 os << DUMP_TITLE_RECORD_SOURCE_FILE << record.source_file << DUMP_CONTENT_DOUBLE_ENDL;
232 void PandasmProgramDumper::DumpFunctionTable(std::ostream &os)
234 os << DUMP_TITLE_SEPARATOR;
235 os << DUMP_TITLE_METHODS;
236 os << DUMP_CONTENT_DOUBLE_ENDL;
238 DumpFunction(os, it.second);
242 void PandasmProgramDumper::DumpFunction(std::ostream &os, const pandasm::Function &function)
245 DumpFunctionKind(os, function);
247 DumpFunctionAnnotations(os, function);
249 DumpFunctionHead(os, function);
250 DumpFunctionBody(os, function);
253 void PandasmProgramDumper::DumpFunctionKind(std::ostream &os, const pandasm::Function &function) const
255 os << DUMP_TITLE_FUNCTION_KIND << PandasmDumperUtils::GetFunctionKindString(function.function_kind);
256 os << DUMP_CONTENT_SINGLE_ENDL;
259 void PandasmProgramDumper::DumpFunctionAnnotations(std::ostream &os, const pandasm::Function &function) const
262 DumpAnnotationData(os, annotation);
264 os << DUMP_CONTENT_SINGLE_ENDL;
267 void PandasmProgramDumper::DumpFunctionHead(std::ostream &os, const pandasm::Function &function) const
269 os << DUMP_TITLE_FUNCTION;
270 DumpFunctionReturnType(os, function);
271 DumpFunctionName(os, function);
272 DumpFunctionParams(os, function);
273 os << DUMP_CONTENT_SPACE << DUMP_CONTENT_LEFT_CURLY_BRACKET << DUMP_CONTENT_SINGLE_ENDL;
276 void PandasmProgramDumper::DumpFunctionReturnType(std::ostream &os, const pandasm::Function &function) const
278 os << function.return_type.GetPandasmName() << DUMP_CONTENT_SPACE;
281 void PandasmProgramDumper::DumpFunctionName(std::ostream &os, const pandasm::Function &function) const
283 os << function.name;
286 void PandasmProgramDumper::DumpFunctionParams(std::ostream &os, const pandasm::Function &function) const
288 os << DUMP_CONTENT_LEFT_PARENTHESIS;
290 DumpFunctionParamAtIndex(os, function.params[0], 0);
292 os << DUMP_CONTENT_COMMA << DUMP_CONTENT_SPACE;
293 DumpFunctionParamAtIndex(os, function.params[i], i);
296 os << DUMP_CONTENT_RIGHT_PARENTHESIS;
299 void PandasmProgramDumper::DumpFunctionParamAtIndex(std::ostream &os,
303 os << param.type.GetPandasmName() << DUMP_CONTENT_SPACE << DUMP_CONTENT_FUNCTION_PARAM_NAME_PREFIX << idx;
306 void PandasmProgramDumper::DumpFunctionAttributes(std::ostream &os, const pandasm::Function &function) const
311 void PandasmProgramDumper::DumpFunctionBody(std::ostream &os, const pandasm::Function &function)
313 DumpFunctionIns(os, function);
314 DumpFunctionCatchBlocks(os, function);
315 DumpFunctionDebugInfo(os, function);
316 os << "}" << DUMP_CONTENT_DOUBLE_ENDL;
319 void PandasmProgramDumper::DumpFunctionIns(std::ostream &os, const pandasm::Function &function)
322 DumpNormalizedFunctionIns(os, function);
324 DumpOriginalFunctionIns(os, function);
328 void PandasmProgramDumper::DumpOriginalFunctionIns(std::ostream &os, const pandasm::Function &function)
332 os << DUMP_CONTENT_TAB << std::setw(LINE_WIDTH)
335 os << std::setw(COLUMN_WIDTH) << std::left << DUMP_CONTENT_SPACE
341 void PandasmProgramDumper::DumpNormalizedFunctionIns(std::ostream &os, const pandasm::Function &function)
349 DumpFinalIns(os);
382 void PandasmProgramDumper::DumpFinalIns(std::ostream &os)
389 os << DUMP_CONTENT_TAB << std::setw(LINE_WIDTH)
392 os << std::setw(COLUMN_WIDTH) << std::left << DUMP_CONTENT_SPACE
494 void PandasmProgramDumper::DumpFunctionCatchBlocks(std::ostream &os, const pandasm::Function &function) const
497 DumpNormalizedFunctionCatchBlocks(os, function);
499 DumpOriginalFunctionCatchBlocks(os, function);
503 void PandasmProgramDumper::DumpOriginalFunctionCatchBlocks(std::ostream &os,
507 DumpCatchBlock(os, catch_block);
511 void PandasmProgramDumper::DumpNormalizedFunctionCatchBlocks(std::ostream &os,
522 DumpCatchBlock(os, catch_block);
547 void PandasmProgramDumper::DumpCatchBlock(std::ostream &os, const pandasm::Function::CatchBlock &catch_block) const
550 os << DUMP_TITLE_CATCH_ALL << DUMP_CONTENT_SINGLE_ENDL;
552 os << DUMP_TITLE_CATCH << DUMP_CONTENT_SINGLE_ENDL;
554 os << DUMP_CONTENT_TAB << DUMP_CONTENT_TRY_BEGIN_LABEL
556 os << DUMP_CONTENT_TAB << DUMP_CONTENT_TRY_END_LABEL
558 os << DUMP_CONTENT_TAB << DUMP_CONTENT_CATCH_BEGIN_LABEL
561 os << DUMP_CONTENT_TAB << DUMP_CONTENT_CATCH_END_LABEL
566 void PandasmProgramDumper::DumpFunctionDebugInfo(std::ostream &os, const pandasm::Function &function)
580 os << DUMP_CONTENT_SINGLE_ENDL;
585 os << DUMP_TITLE_LOCAL_VAR_TABLE;
586 os << DUMP_CONTENT_SINGLE_ENDL;
587 os << DUMP_CONTENT_LOCAL_VAR_TABLE;
590 os << DUMP_CONTENT_TAB
592 os << std::setw(END_WIDTH) << std::right << variable_info.length << DUMP_CONTENT_DOUBLE_SPACES;
593 os << std::setw(REG_WIDTH) << std::right << variable_info.reg << DUMP_CONTENT_DOUBLE_SPACES;
594 os << std::setw(NAME_WIDTH)
597 os << " (" << variable_info.signature_type << ")";
599 os << DUMP_CONTENT_SINGLE_ENDL;
634 void PandasmProgramDumper::DumpStrings(std::ostream &os) const
639 os << DUMP_TITLE_SEPARATOR;
640 os << DUMP_TITLE_STRING;
642 os << str << DUMP_CONTENT_SINGLE_ENDL;
674 void PandasmProgramDumper::SerializeLiterals(const pandasm::LiteralArray &lit_array, std::stringstream &os) const
677 SerializeLiteralsAtIndex(lit_array, os, i);
678 os << DUMP_CONTENT_COMMA << DUMP_CONTENT_SPACE;
683 const pandasm::LiteralArray &lit_array, std::stringstream &os, size_t i) const
686 os << PandasmDumperUtils::LiteralTagToString(tag) << DUMP_CONTENT_COLON;
690 os << (std::get<bool>(val));
694 os << (bit_cast<int32_t>(std::get<uint32_t>(val)));
697 os << (std::get<double>(val));
700 os << "\"" << (std::get<std::string>(val)) << "\"";
707 os << (std::get<std::string>(val));
711 os << (static_cast<int16_t>(bit_cast<int8_t>(std::get<uint8_t>(val))));
714 os << (std::get<uint16_t>(val));
717 SerializeNestedLiteralArrayById(os, std::get<std::string>(val));
720 os << (static_cast<int16_t>(std::get<uint8_t>(val)));
723 os << (static_cast<int16_t>(std::get<uint8_t>(val)));
731 std::stringstream &os, const std::string &literal_array_id_name) const
734 os << literal_array_id_name;
741 os << SerializeLiteralArray(it->second, id);