update
This commit is contained in:
parent
3154076c92
commit
eed77f11f8
|
@ -139,20 +139,20 @@ struct memory_block
|
||||||
gc_unit space[NAS_POOL_SIZE];
|
gc_unit space[NAS_POOL_SIZE];
|
||||||
};
|
};
|
||||||
|
|
||||||
class memory_block_list
|
class memory_block_base
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
std::vector<memory_block*> mem_page;
|
std::vector<memory_block*> mem_page;
|
||||||
int mem_size;
|
int mem_size;
|
||||||
public:
|
public:
|
||||||
memory_block_list()
|
memory_block_base()
|
||||||
{
|
{
|
||||||
mem_size=0;
|
mem_size=0;
|
||||||
memory_block* tmp=new memory_block;
|
memory_block* tmp=new memory_block;
|
||||||
mem_page.push_back(tmp);
|
mem_page.push_back(tmp);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
~memory_block_list()
|
~memory_block_base()
|
||||||
{
|
{
|
||||||
mem_size=0;
|
mem_size=0;
|
||||||
int page_size=mem_page.size();
|
int page_size=mem_page.size();
|
||||||
|
@ -209,7 +209,7 @@ private:
|
||||||
then all the things will be moved to a new space,
|
then all the things will be moved to a new space,
|
||||||
at this time if you reference a member in it,this will cause segmentation error.
|
at this time if you reference a member in it,this will cause segmentation error.
|
||||||
*/
|
*/
|
||||||
memory_block_list memory;
|
memory_block_base memory;
|
||||||
bool error_occurred;
|
bool error_occurred;
|
||||||
public:
|
public:
|
||||||
void gc_init()
|
void gc_init()
|
||||||
|
|
|
@ -4,8 +4,8 @@
|
||||||
std::string inline_func_name[nas_lib_func_num]=
|
std::string inline_func_name[nas_lib_func_num]=
|
||||||
{
|
{
|
||||||
//base.nas
|
//base.nas
|
||||||
"nasal_call_inline_push_back",
|
"nasal_call_inline_push_back",// append
|
||||||
"nasal_call_inline_set_size",
|
"nasal_call_inline_set_size", // setsize
|
||||||
"nasal_call_inline_subvec",
|
"nasal_call_inline_subvec",
|
||||||
"nasal_call_inline_contains",
|
"nasal_call_inline_contains",
|
||||||
"nasal_call_inline_delete",
|
"nasal_call_inline_delete",
|
||||||
|
@ -29,7 +29,7 @@ std::string inline_func_name[nas_lib_func_num]=
|
||||||
"nasal_call_built_in_setbit",
|
"nasal_call_built_in_setbit",
|
||||||
"nasal_call_built_in_null_string_gen",
|
"nasal_call_built_in_null_string_gen",
|
||||||
//io.nas
|
//io.nas
|
||||||
"nasal_call_inline_c_std_puts",
|
"nasal_call_inline_c_std_puts",// print
|
||||||
//math.nas
|
//math.nas
|
||||||
"nasal_call_inline_sin",
|
"nasal_call_inline_sin",
|
||||||
"nasal_call_inline_cos",
|
"nasal_call_inline_cos",
|
||||||
|
@ -39,7 +39,7 @@ std::string inline_func_name[nas_lib_func_num]=
|
||||||
"nasal_call_inline_cpp_math_sqrt",
|
"nasal_call_inline_cpp_math_sqrt",
|
||||||
"nasal_call_inline_cpp_atan2",
|
"nasal_call_inline_cpp_atan2",
|
||||||
//system.nas
|
//system.nas
|
||||||
"nasal_call_inline_scalar_type"
|
"nasal_call_inline_scalar_type"//system.type
|
||||||
};
|
};
|
||||||
|
|
||||||
class nasal_runtime
|
class nasal_runtime
|
||||||
|
@ -116,7 +116,7 @@ class nasal_runtime
|
||||||
int conditional (std::list<std::map<std::string,int> >&,abstract_syntax_tree&);
|
int conditional (std::list<std::map<std::string,int> >&,abstract_syntax_tree&);
|
||||||
int block_proc (std::list<std::map<std::string,int> >&,abstract_syntax_tree&);
|
int block_proc (std::list<std::map<std::string,int> >&,abstract_syntax_tree&);
|
||||||
int func_proc (std::list<std::map<std::string,int> >&,std::list<std::map<std::string,int> >&,abstract_syntax_tree&,abstract_syntax_tree&,abstract_syntax_tree&,int);// checked
|
int func_proc (std::list<std::map<std::string,int> >&,std::list<std::map<std::string,int> >&,abstract_syntax_tree&,abstract_syntax_tree&,abstract_syntax_tree&,int);// checked
|
||||||
int inline_function (std::list<std::map<std::string,int> >&,std::string);
|
int builtin_function (std::list<std::map<std::string,int> >&,std::string);
|
||||||
public:
|
public:
|
||||||
nasal_runtime()
|
nasal_runtime()
|
||||||
{
|
{
|
||||||
|
@ -2314,7 +2314,7 @@ int nasal_runtime::call_identifier(std::list<std::map<std::string,int> >& local_
|
||||||
for(int i=0;i<nas_lib_func_num;++i)
|
for(int i=0;i<nas_lib_func_num;++i)
|
||||||
if(inline_func_name[i]==tmp_id_name)
|
if(inline_func_name[i]==tmp_id_name)
|
||||||
{
|
{
|
||||||
addr=inline_function(local_scope,tmp_id_name);
|
addr=builtin_function(local_scope,tmp_id_name);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(addr>=0)
|
if(addr>=0)
|
||||||
|
@ -2997,11 +2997,12 @@ int nasal_runtime::func_proc(
|
||||||
local_scope.pop_back();
|
local_scope.pop_back();
|
||||||
return function_returned_addr;
|
return function_returned_addr;
|
||||||
}
|
}
|
||||||
int nasal_runtime::inline_function(std::list<std::map<std::string,int> >& local_scope,std::string func_name)
|
int nasal_runtime::builtin_function(std::list<std::map<std::string,int> >& local_scope,std::string func_name)
|
||||||
{
|
{
|
||||||
int ret_addr=-1;
|
int ret_addr=-1;
|
||||||
if(func_name=="nasal_call_inline_push_back")
|
if(func_name=="nasal_call_inline_push_back")
|
||||||
{
|
{
|
||||||
|
// append
|
||||||
int vector_addr=-1;
|
int vector_addr=-1;
|
||||||
int elements_addr=-1;
|
int elements_addr=-1;
|
||||||
for(std::list<std::map<std::string,int> >::iterator i=local_scope.begin();i!=local_scope.end();++i)
|
for(std::list<std::map<std::string,int> >::iterator i=local_scope.begin();i!=local_scope.end();++i)
|
||||||
|
@ -3058,6 +3059,7 @@ int nasal_runtime::inline_function(std::list<std::map<std::string,int> >& local_
|
||||||
}
|
}
|
||||||
else if(func_name=="nasal_call_inline_set_size")
|
else if(func_name=="nasal_call_inline_set_size")
|
||||||
{
|
{
|
||||||
|
// setsize
|
||||||
int vector_addr=-1;
|
int vector_addr=-1;
|
||||||
int size_addr=-1;
|
int size_addr=-1;
|
||||||
for(std::list<std::map<std::string,int> >::iterator i=local_scope.begin();i!=local_scope.end();++i)
|
for(std::list<std::map<std::string,int> >::iterator i=local_scope.begin();i!=local_scope.end();++i)
|
||||||
|
@ -3119,6 +3121,7 @@ int nasal_runtime::inline_function(std::list<std::map<std::string,int> >& local_
|
||||||
}
|
}
|
||||||
else if(func_name=="nasal_call_inline_c_std_puts")
|
else if(func_name=="nasal_call_inline_c_std_puts")
|
||||||
{
|
{
|
||||||
|
// print
|
||||||
int vector_addr=-1;
|
int vector_addr=-1;
|
||||||
for(std::list<std::map<std::string,int> >::iterator i=local_scope.begin();i!=local_scope.end();++i)
|
for(std::list<std::map<std::string,int> >::iterator i=local_scope.begin();i!=local_scope.end();++i)
|
||||||
if(i->find("dyn")!=i->end())
|
if(i->find("dyn")!=i->end())
|
||||||
|
@ -3145,6 +3148,7 @@ int nasal_runtime::inline_function(std::list<std::map<std::string,int> >& local_
|
||||||
}
|
}
|
||||||
else if(func_name=="nasal_call_inline_scalar_type")
|
else if(func_name=="nasal_call_inline_scalar_type")
|
||||||
{
|
{
|
||||||
|
// system.type
|
||||||
int data=-1;
|
int data=-1;
|
||||||
for(std::list<std::map<std::string,int> >::iterator i=local_scope.begin();i!=local_scope.end();++i)
|
for(std::list<std::map<std::string,int> >::iterator i=local_scope.begin();i!=local_scope.end();++i)
|
||||||
if(i->find("thing")!=i->end())
|
if(i->find("thing")!=i->end())
|
||||||
|
|
Loading…
Reference in New Issue