|
@@ -4877,8 +4877,8 @@ aot_dump_pgo_prof_data_to_buf(AOTModuleInstance *module_inst, char *buf,
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
prof_header.magic = 0xFF6C70726F667281LL;
|
|
prof_header.magic = 0xFF6C70726F667281LL;
|
|
|
- /* Version 8 */
|
|
|
|
|
- prof_header.version = 0x0000000000000008LL;
|
|
|
|
|
|
|
+ /* Version 9 */
|
|
|
|
|
+ prof_header.version = 0x0000000000000009LL;
|
|
|
/* with VARIANT_MASK_IR_PROF (IR Instrumentation) */
|
|
/* with VARIANT_MASK_IR_PROF (IR Instrumentation) */
|
|
|
prof_header.version |= 0x1ULL << 56;
|
|
prof_header.version |= 0x1ULL << 56;
|
|
|
/* with VARIANT_MASK_MEMPROF (Memory Profile) */
|
|
/* with VARIANT_MASK_MEMPROF (Memory Profile) */
|
|
@@ -4887,14 +4887,19 @@ aot_dump_pgo_prof_data_to_buf(AOTModuleInstance *module_inst, char *buf,
|
|
|
prof_header.num_prof_counters = num_prof_counters;
|
|
prof_header.num_prof_counters = num_prof_counters;
|
|
|
prof_header.names_size = prof_names_size;
|
|
prof_header.names_size = prof_names_size;
|
|
|
prof_header.value_kind_last = 1;
|
|
prof_header.value_kind_last = 1;
|
|
|
|
|
+ /* __llvm_prf_bits won't be used in PGO, set dummy value here */
|
|
|
|
|
+ prof_header.num_prof_bitmaps = 0;
|
|
|
|
|
+ prof_header.bitmap_delta = 0;
|
|
|
|
|
|
|
|
if (!is_little_endian()) {
|
|
if (!is_little_endian()) {
|
|
|
aot_exchange_uint64((uint8 *)&prof_header.magic);
|
|
aot_exchange_uint64((uint8 *)&prof_header.magic);
|
|
|
aot_exchange_uint64((uint8 *)&prof_header.version);
|
|
aot_exchange_uint64((uint8 *)&prof_header.version);
|
|
|
aot_exchange_uint64((uint8 *)&prof_header.num_prof_data);
|
|
aot_exchange_uint64((uint8 *)&prof_header.num_prof_data);
|
|
|
aot_exchange_uint64((uint8 *)&prof_header.num_prof_counters);
|
|
aot_exchange_uint64((uint8 *)&prof_header.num_prof_counters);
|
|
|
|
|
+ aot_exchange_uint64((uint8 *)&prof_header.num_prof_bitmaps);
|
|
|
aot_exchange_uint64((uint8 *)&prof_header.names_size);
|
|
aot_exchange_uint64((uint8 *)&prof_header.names_size);
|
|
|
aot_exchange_uint64((uint8 *)&prof_header.counters_delta);
|
|
aot_exchange_uint64((uint8 *)&prof_header.counters_delta);
|
|
|
|
|
+ aot_exchange_uint64((uint8 *)&prof_header.bitmap_delta);
|
|
|
aot_exchange_uint64((uint8 *)&prof_header.value_kind_last);
|
|
aot_exchange_uint64((uint8 *)&prof_header.value_kind_last);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -4912,19 +4917,23 @@ aot_dump_pgo_prof_data_to_buf(AOTModuleInstance *module_inst, char *buf,
|
|
|
prof_data_64->func_md5 = prof_data->func_md5;
|
|
prof_data_64->func_md5 = prof_data->func_md5;
|
|
|
prof_data_64->func_hash = prof_data->func_hash;
|
|
prof_data_64->func_hash = prof_data->func_hash;
|
|
|
prof_data_64->offset_counters = prof_data->offset_counters;
|
|
prof_data_64->offset_counters = prof_data->offset_counters;
|
|
|
|
|
+ prof_data_64->offset_bitmaps = prof_data->offset_bitmaps;
|
|
|
prof_data_64->func_ptr = prof_data->func_ptr;
|
|
prof_data_64->func_ptr = prof_data->func_ptr;
|
|
|
prof_data_64->values = (uint64)(uintptr_t)prof_data->values;
|
|
prof_data_64->values = (uint64)(uintptr_t)prof_data->values;
|
|
|
prof_data_64->num_counters = prof_data->num_counters;
|
|
prof_data_64->num_counters = prof_data->num_counters;
|
|
|
|
|
+ /* __llvm_prf_bits won't be used in PGO, set dummy value here */
|
|
|
|
|
+ prof_data_64->num_bitmaps = 0;
|
|
|
prof_data_64->num_value_sites[0] = prof_data->num_value_sites[0];
|
|
prof_data_64->num_value_sites[0] = prof_data->num_value_sites[0];
|
|
|
prof_data_64->num_value_sites[1] = prof_data->num_value_sites[1];
|
|
prof_data_64->num_value_sites[1] = prof_data->num_value_sites[1];
|
|
|
|
|
|
|
|
if (!is_little_endian()) {
|
|
if (!is_little_endian()) {
|
|
|
aot_exchange_uint64((uint8 *)&prof_data_64->func_hash);
|
|
aot_exchange_uint64((uint8 *)&prof_data_64->func_hash);
|
|
|
aot_exchange_uint64((uint8 *)&prof_data_64->offset_counters);
|
|
aot_exchange_uint64((uint8 *)&prof_data_64->offset_counters);
|
|
|
- aot_exchange_uint64((uint8 *)&prof_data_64->offset_counters);
|
|
|
|
|
|
|
+ aot_exchange_uint64((uint8 *)&prof_data_64->offset_bitmaps);
|
|
|
aot_exchange_uint64((uint8 *)&prof_data_64->func_ptr);
|
|
aot_exchange_uint64((uint8 *)&prof_data_64->func_ptr);
|
|
|
aot_exchange_uint64((uint8 *)&prof_data_64->values);
|
|
aot_exchange_uint64((uint8 *)&prof_data_64->values);
|
|
|
aot_exchange_uint32((uint8 *)&prof_data_64->num_counters);
|
|
aot_exchange_uint32((uint8 *)&prof_data_64->num_counters);
|
|
|
|
|
+ aot_exchange_uint32((uint8 *)&prof_data_64->num_bitmaps);
|
|
|
aot_exchange_uint16((uint8 *)&prof_data_64->num_value_sites[0]);
|
|
aot_exchange_uint16((uint8 *)&prof_data_64->num_value_sites[0]);
|
|
|
aot_exchange_uint16((uint8 *)&prof_data_64->num_value_sites[1]);
|
|
aot_exchange_uint16((uint8 *)&prof_data_64->num_value_sites[1]);
|
|
|
}
|
|
}
|