diff --git a/version2.0/nasal_gc.h b/version2.0/nasal_gc.h index 2be2c8c..5031457 100644 --- a/version2.0/nasal_gc.h +++ b/version2.0/nasal_gc.h @@ -139,20 +139,20 @@ struct memory_block gc_unit space[NAS_POOL_SIZE]; }; -class memory_block_list +class memory_block_base { private: std::vector mem_page; int mem_size; public: - memory_block_list() + memory_block_base() { mem_size=0; memory_block* tmp=new memory_block; mem_page.push_back(tmp); return; } - ~memory_block_list() + ~memory_block_base() { mem_size=0; int page_size=mem_page.size(); @@ -209,7 +209,7 @@ private: 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. */ - memory_block_list memory; + memory_block_base memory; bool error_occurred; public: void gc_init() diff --git a/version2.0/nasal_runtime.h b/version2.0/nasal_runtime.h index 261477a..8a24f46 100644 --- a/version2.0/nasal_runtime.h +++ b/version2.0/nasal_runtime.h @@ -4,8 +4,8 @@ std::string inline_func_name[nas_lib_func_num]= { //base.nas - "nasal_call_inline_push_back", - "nasal_call_inline_set_size", + "nasal_call_inline_push_back",// append + "nasal_call_inline_set_size", // setsize "nasal_call_inline_subvec", "nasal_call_inline_contains", "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_null_string_gen", //io.nas - "nasal_call_inline_c_std_puts", + "nasal_call_inline_c_std_puts",// print //math.nas "nasal_call_inline_sin", "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_atan2", //system.nas - "nasal_call_inline_scalar_type" + "nasal_call_inline_scalar_type"//system.type }; class nasal_runtime @@ -116,7 +116,7 @@ class nasal_runtime int conditional (std::list >&,abstract_syntax_tree&); int block_proc (std::list >&,abstract_syntax_tree&); int func_proc (std::list >&,std::list >&,abstract_syntax_tree&,abstract_syntax_tree&,abstract_syntax_tree&,int);// checked - int inline_function (std::list >&,std::string); + int builtin_function (std::list >&,std::string); public: nasal_runtime() { @@ -2314,7 +2314,7 @@ int nasal_runtime::call_identifier(std::list >& local_ for(int i=0;i=0) @@ -2997,11 +2997,12 @@ int nasal_runtime::func_proc( local_scope.pop_back(); return function_returned_addr; } -int nasal_runtime::inline_function(std::list >& local_scope,std::string func_name) +int nasal_runtime::builtin_function(std::list >& local_scope,std::string func_name) { int ret_addr=-1; if(func_name=="nasal_call_inline_push_back") { + // append int vector_addr=-1; int elements_addr=-1; for(std::list >::iterator i=local_scope.begin();i!=local_scope.end();++i) @@ -3058,6 +3059,7 @@ int nasal_runtime::inline_function(std::list >& local_ } else if(func_name=="nasal_call_inline_set_size") { + // setsize int vector_addr=-1; int size_addr=-1; for(std::list >::iterator i=local_scope.begin();i!=local_scope.end();++i) @@ -3119,6 +3121,7 @@ int nasal_runtime::inline_function(std::list >& local_ } else if(func_name=="nasal_call_inline_c_std_puts") { + // print int vector_addr=-1; for(std::list >::iterator i=local_scope.begin();i!=local_scope.end();++i) if(i->find("dyn")!=i->end()) @@ -3145,6 +3148,7 @@ int nasal_runtime::inline_function(std::list >& local_ } else if(func_name=="nasal_call_inline_scalar_type") { + // system.type int data=-1; for(std::list >::iterator i=local_scope.begin();i!=local_scope.end();++i) if(i->find("thing")!=i->end())