noinline writeNum, use loop instead of generated code
This commit is contained in:
parent
fc059a77d0
commit
fdbd36250b
@ -380,11 +380,23 @@ B path_info(B path, i32 mode) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void mmX_dumpHeap(FILE* f);
|
void mmX_dumpHeap(FILE* f);
|
||||||
void writeNum(FILE* f, u64 v, i32 len) {
|
NOINLINE void writeNum(FILE* f, u64 v, i32 len) {
|
||||||
u8 buf[8];
|
u8 buf[8];
|
||||||
for (i32 i = 0; i < len; i++) buf[i] = (v>>(8*i)) & 0xff;
|
for (i32 i = 0; i < len; i++) buf[i] = (v>>(8*i)) & 0xff;
|
||||||
fwrite(buf, 1, len, f);
|
fwrite(buf, 1, len, f);
|
||||||
}
|
}
|
||||||
|
static char* types_str[] = {
|
||||||
|
#define F(X) #X,
|
||||||
|
FOR_TYPE(F)
|
||||||
|
#undef F
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
static u8 types_val[] = {
|
||||||
|
#define F(X) t_##X,
|
||||||
|
FOR_TYPE(F)
|
||||||
|
#undef F
|
||||||
|
};
|
||||||
|
|
||||||
void cbqn_heapDump() {
|
void cbqn_heapDump() {
|
||||||
char* name = "CBQNHeapDump";
|
char* name = "CBQNHeapDump";
|
||||||
FILE* f = fopen(name, "w");
|
FILE* f = fopen(name, "w");
|
||||||
@ -405,10 +417,12 @@ void cbqn_heapDump() {
|
|||||||
writeNum(f, getpid(), 8);
|
writeNum(f, getpid(), 8);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// t_names
|
{ // t_names
|
||||||
#define F(X) { t8=t_##X; fwrite(&t8, 1, 1, f); char* s = #X; fwrite(s, 1, strlen(s)+1, f); }
|
for (i32 i = 0; types_str[i]; i++) {
|
||||||
FOR_TYPE(F)
|
t8=types_val[i]; fwrite(&t8, 1, 1, f);
|
||||||
#undef F
|
char* s = types_str[i]; fwrite(s, 1, strlen(s)+1, f);
|
||||||
|
}
|
||||||
|
}
|
||||||
t8 = 255; fwrite(&t8, 1, 1, f); // end of t_names
|
t8 = 255; fwrite(&t8, 1, 1, f); // end of t_names
|
||||||
|
|
||||||
t8 = 12; fwrite(&t8, 1, 1, f); // number of tag names
|
t8 = 12; fwrite(&t8, 1, 1, f); // number of tag names
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user