📝 optimize codes
This commit is contained in:
parent
04a45064c8
commit
44bfd74ca9
|
@ -76,7 +76,7 @@ const char* ast_name[]=
|
|||
"func",
|
||||
"hash",
|
||||
"vec",
|
||||
"hashmember",
|
||||
"pair",
|
||||
"call",
|
||||
"callh",
|
||||
"callv",
|
||||
|
|
|
@ -827,7 +827,6 @@ nas_ref builtin_readln(nas_ref* local,nasal_gc& gc)
|
|||
if(!fd.objchk(nas_obj::file))
|
||||
return builtin_err("readln","not a valid filehandle");
|
||||
nas_ref str=gc.alloc(vm_str);
|
||||
auto& s=str.str();
|
||||
char c;
|
||||
while((c=fgetc((FILE*)fd.obj().ptr))!=EOF)
|
||||
{
|
||||
|
@ -835,9 +834,9 @@ nas_ref builtin_readln(nas_ref* local,nasal_gc& gc)
|
|||
continue;
|
||||
if(c=='\n')
|
||||
return str;
|
||||
s+=c;
|
||||
str.str()+=c;
|
||||
}
|
||||
if(s.length())
|
||||
if(str.str().length())
|
||||
return str;
|
||||
return nil;
|
||||
}
|
||||
|
@ -998,8 +997,7 @@ nas_ref builtin_waitpid(nas_ref* local,nasal_gc& gc)
|
|||
if(pid.type!=vm_num || nohang.type!=vm_num)
|
||||
return builtin_err("waitpid","pid and nohang must be number");
|
||||
#ifndef _WIN32
|
||||
i32 ret_pid;
|
||||
i32 status;
|
||||
i32 ret_pid,status;
|
||||
ret_pid=waitpid(pid.num(),&status,nohang.num()==0?0:WNOHANG);
|
||||
nas_ref vec=gc.alloc(vm_vec);
|
||||
vec.vec().elems.push_back({vm_num,(f64)ret_pid});
|
||||
|
@ -1075,14 +1073,10 @@ nas_ref builtin_chdir(nas_ref* local,nasal_gc& gc)
|
|||
}
|
||||
nas_ref builtin_environ(nas_ref* local,nasal_gc& gc)
|
||||
{
|
||||
char** env=environ;
|
||||
nas_ref res=gc.temp=gc.alloc(vm_vec);
|
||||
auto& vec=res.vec().elems;
|
||||
while(*env)
|
||||
{
|
||||
for(char** env=environ;*env;++env)
|
||||
vec.push_back(gc.newstr(*env));
|
||||
++env;
|
||||
}
|
||||
gc.temp=nil;
|
||||
return res;
|
||||
}
|
||||
|
@ -1167,12 +1161,12 @@ nas_ref builtin_dlclose(nas_ref* local,nasal_gc& gc)
|
|||
}
|
||||
nas_ref builtin_dlcall(nas_ref* local,nasal_gc& gc)
|
||||
{
|
||||
nas_ref funcptr=local[1];
|
||||
nas_ref fp=local[1];
|
||||
nas_ref args=local[2];
|
||||
if(!funcptr.objchk(nas_obj::faddr))
|
||||
if(!fp.objchk(nas_obj::faddr))
|
||||
return builtin_err("dlcall","\"funcptr\" is not a valid function pointer");
|
||||
typedef nas_ref (*externs)(std::vector<nas_ref>&,nasal_gc&);
|
||||
externs func=(externs)funcptr.obj().ptr;
|
||||
externs func=(externs)fp.obj().ptr;
|
||||
return func(args.vec().elems,gc);
|
||||
}
|
||||
nas_ref builtin_platform(nas_ref* local,nasal_gc& gc)
|
||||
|
@ -1353,9 +1347,7 @@ nas_ref builtin_costatus(nas_ref* local,nasal_gc& gc)
|
|||
}
|
||||
nas_ref builtin_corun(nas_ref* local,nasal_gc& gc)
|
||||
{
|
||||
if(gc.cort)
|
||||
return one;
|
||||
return zero;
|
||||
return gc.cort?one:zero;
|
||||
}
|
||||
nas_ref builtin_millisec(nas_ref* local,nasal_gc& gc)
|
||||
{
|
||||
|
|
|
@ -82,81 +82,25 @@ enum op_code:u8
|
|||
|
||||
const char* code_table[]=
|
||||
{
|
||||
"exit ",
|
||||
"intg ",
|
||||
"intl ",
|
||||
"loadg ",
|
||||
"loadl ",
|
||||
"loadu ",
|
||||
"pnum ",
|
||||
"pnil ",
|
||||
"pstr ",
|
||||
"newv ",
|
||||
"newh ",
|
||||
"newf ",
|
||||
"happ ",
|
||||
"para ",
|
||||
"def ",
|
||||
"dyn ",
|
||||
"not ",
|
||||
"usub ",
|
||||
"add ",
|
||||
"sub ",
|
||||
"mult ",
|
||||
"div ",
|
||||
"lnk ",
|
||||
"addc ",
|
||||
"subc ",
|
||||
"multc ",
|
||||
"divc ",
|
||||
"lnkc ",
|
||||
"addeq ",
|
||||
"subeq ",
|
||||
"muleq ",
|
||||
"diveq ",
|
||||
"lnkeq ",
|
||||
"addeqc",
|
||||
"subeqc",
|
||||
"muleqc",
|
||||
"diveqc",
|
||||
"lnkeqc",
|
||||
"meq ",
|
||||
"eq ",
|
||||
"neq ",
|
||||
"less ",
|
||||
"leq ",
|
||||
"grt ",
|
||||
"geq ",
|
||||
"lessc ",
|
||||
"leqc ",
|
||||
"grtc ",
|
||||
"geqc ",
|
||||
"pop ",
|
||||
"jmp ",
|
||||
"jt ",
|
||||
"jf ",
|
||||
"cnt ",
|
||||
"findx ",
|
||||
"feach ",
|
||||
"callg ",
|
||||
"calll ",
|
||||
"upval ",
|
||||
"callv ",
|
||||
"callvi",
|
||||
"callh ",
|
||||
"callfv",
|
||||
"callfh",
|
||||
"callb ",
|
||||
"slcbeg",
|
||||
"slcend",
|
||||
"slc ",
|
||||
"slc2 ",
|
||||
"mcallg",
|
||||
"mcalll",
|
||||
"mupval",
|
||||
"mcallv",
|
||||
"mcallh",
|
||||
"ret "
|
||||
"exit ","intg ","intl ","loadg ",
|
||||
"loadl ","loadu ","pnum ","pnil ",
|
||||
"pstr ","newv ","newh ","newf ",
|
||||
"happ ","para ","def ","dyn ",
|
||||
"not ","usub ","add ","sub ",
|
||||
"mult ","div ","lnk ","addc ",
|
||||
"subc ","multc ","divc ","lnkc ",
|
||||
"addeq ","subeq ","muleq ","diveq ",
|
||||
"lnkeq ","addeqc","subeqc","muleqc",
|
||||
"diveqc","lnkeqc","meq ","eq ",
|
||||
"neq ","less ","leq ","grt ",
|
||||
"geq ","lessc ","leqc ","grtc ",
|
||||
"geqc ","pop ","jmp ","jt ",
|
||||
"jf ","cnt ","findx ","feach ",
|
||||
"callg ","calll ","upval ","callv ",
|
||||
"callvi","callh ","callfv","callfh",
|
||||
"callb ","slcbeg","slcend","slc ",
|
||||
"slc2 ","mcallg","mcalll","mupval",
|
||||
"mcallv","mcallh","ret "
|
||||
};
|
||||
|
||||
struct opcode
|
||||
|
|
Loading…
Reference in New Issue