🐛 fix information print format on MSVC.

This commit is contained in:
ValKmjolnir 2022-07-16 18:47:27 +08:00
parent b3d65f0183
commit d8d457ce74
2 changed files with 32 additions and 27 deletions

View File

@ -368,12 +368,12 @@ nasal_ref builtin_rand(nasal_ref* local,nasal_gc& gc)
nasal_ref builtin_id(nasal_ref* local,nasal_gc& gc) nasal_ref builtin_id(nasal_ref* local,nasal_gc& gc)
{ {
nasal_ref val=local[1]; nasal_ref val=local[1];
char buf[32]; std::stringstream ss;
if(val.type>vm_num) if(val.type>vm_num)
sprintf(buf,"%p",val.value.gcobj); ss<<"0x"<<std::hex<<(uint64_t)val.value.gcobj<<std::dec;
else else
sprintf(buf,"0"); ss<<"0";
return gc.newstr(buf); return gc.newstr(ss.str());
} }
nasal_ref builtin_int(nasal_ref* local,nasal_gc& gc) nasal_ref builtin_int(nasal_ref* local,nasal_gc& gc)
{ {

View File

@ -164,27 +164,32 @@ void nasal_vm::valinfo(nasal_ref& val)
case vm_none: std::cout<<"| null |";break; case vm_none: std::cout<<"| null |";break;
case vm_ret: std::cout<<"| pc | 0x"<<std::hex case vm_ret: std::cout<<"| pc | 0x"<<std::hex
<<val.ret()<<std::dec;break; <<val.ret()<<std::dec;break;
case vm_addr: std::cout<<"| addr | "<<std::hex case vm_addr: std::cout<<"| addr | 0x"<<std::hex
<<(void*)val.addr()<<std::dec;break; <<(uint64_t)val.addr()<<std::dec;break;
case vm_cnt: std::cout<<"| cnt | "<<val.cnt();break; case vm_cnt: std::cout<<"| cnt | "<<val.cnt();break;
case vm_nil: std::cout<<"| nil |";break; case vm_nil: std::cout<<"| nil |";break;
case vm_num: std::cout<<"| num | "<<val.num();break; case vm_num: std::cout<<"| num | "<<val.num();break;
case vm_str: std::cout<<"| str | <"<<std::hex<<p<<"> " case vm_str: std::cout<<"| str | <0x"<<std::hex<<(uint64_t)p
<<rawstr(val.str(),16)<<std::dec;break; <<"> "<<rawstr(val.str(),16)<<std::dec;break;
case vm_func: std::cout<<"| func | <"<<std::hex<<p<<"> entry:0x" case vm_func: std::cout<<"| func | <0x"<<std::hex<<(uint64_t)p
<<val.func().entry<<std::dec;break; <<"> entry:0x"<<val.func().entry
case vm_upval:std::cout<<"| upval| <"<<std::hex<<p<<std::dec<<"> [" <<std::dec;break;
<<val.upval().size<<" val]";break; case vm_upval:std::cout<<"| upval| <0x"<<std::hex<<(uint64_t)p
case vm_vec: std::cout<<"| vec | <"<<std::hex<<p<<std::dec<<"> [" <<std::dec<<"> ["<<val.upval().size
<<val.vec().size()<<" val]";break; <<" val]";break;
case vm_hash: std::cout<<"| hash | <"<<std::hex<<p<<std::dec<<"> {" case vm_vec: std::cout<<"| vec | <0x"<<std::hex<<(uint64_t)p
<<val.hash().size()<<" val}";break; <<std::dec<<"> ["<<val.vec().size()
case vm_obj: std::cout<<"| obj | <"<<std::hex<<p<<"> obj:0x" <<" val]";break;
<<(uint64_t)val.obj().ptr<<std::dec;break; case vm_hash: std::cout<<"| hash | <0x"<<std::hex<<(uint64_t)p
case vm_co: std::cout<<"| co | <"<<std::hex<<p<<std::dec <<std::dec<<"> {"<<val.hash().size()
<<"> coroutine";break; <<" val}";break;
default: std::cout<<"| err | <"<<std::hex<<p<<std::dec case vm_obj: std::cout<<"| obj | <0x"<<std::hex<<(uint64_t)p
<<"> unknown object";break; <<"> obj:0x"<<(uint64_t)val.obj().ptr
<<std::dec;break;
case vm_co: std::cout<<"| co | <0x"<<std::hex<<(uint64_t)p
<<std::dec<<"> coroutine";break;
default: std::cout<<"| err | <0x"<<std::hex<<(uint64_t)p
<<std::dec<<"> unknown object";break;
} }
std::cout<<"\n"; std::cout<<"\n";
} }
@ -247,11 +252,11 @@ void nasal_vm::register_info()
{ {
std::cout<<"registers("<<(gc.coroutine?"coroutine":"main")<<")\n"<<std::hex std::cout<<"registers("<<(gc.coroutine?"coroutine":"main")<<")\n"<<std::hex
<<" [ pc ] | pc | 0x"<<pc<<"\n" <<" [ pc ] | pc | 0x"<<pc<<"\n"
<<" [ global ] | addr | "<<stack<<"\n" <<" [ global ] | addr | 0x"<<(uint64_t)stack<<"\n"
<<" [ localr ] | addr | "<<localr<<"\n" <<" [ localr ] | addr | 0x"<<(uint64_t)localr<<"\n"
<<" [ memr ] | addr | "<<memr<<"\n" <<" [ memr ] | addr | 0x"<<(uint64_t)memr<<"\n"
<<" [ canary ] | addr | "<<canary<<"\n" <<" [ canary ] | addr | 0x"<<(uint64_t)canary<<"\n"
<<" [ top ] | addr | "<<top<<"\n" <<" [ top ] | addr | 0x"<<(uint64_t)top<<"\n"
<<std::dec; <<std::dec;
std::cout<<" [ funcr ]";valinfo(funcr); std::cout<<" [ funcr ]";valinfo(funcr);
std::cout<<" [ upvalr ]";valinfo(upvalr); std::cout<<" [ upvalr ]";valinfo(upvalr);