📝 optimize code
This commit is contained in:
parent
eab84d5c0d
commit
94b6e84693
|
@ -16,7 +16,7 @@ var fib(var* args, usize size, gc* ngc) {
|
|||
if (!size) {
|
||||
return nas_err("fib","lack arguments");
|
||||
}
|
||||
var num=args[0];
|
||||
var num = args[0];
|
||||
return var::num(fibonaci(num.tonum()));
|
||||
}
|
||||
|
||||
|
@ -24,15 +24,15 @@ var quick_fib(var* args, usize size, gc* ngc) {
|
|||
if (!size) {
|
||||
return nas_err("quick_fib","lack arguments");
|
||||
}
|
||||
double num=args[0].tonum();
|
||||
double num = args[0].tonum();
|
||||
if (num<2) {
|
||||
return var::num(num);
|
||||
}
|
||||
double a=1,b=1,res=0;
|
||||
for(double i=1;i<num;i+=1) {
|
||||
res=a+b;
|
||||
a=b;
|
||||
b=res;
|
||||
double a = 1, b = 1, res = 0;
|
||||
for(double i = 1; i<num; ++i) {
|
||||
res = a+b;
|
||||
a = b;
|
||||
b = res;
|
||||
}
|
||||
return var::num(res);
|
||||
}
|
||||
|
@ -40,42 +40,43 @@ var quick_fib(var* args, usize size, gc* ngc) {
|
|||
u32 ghost_for_test;
|
||||
|
||||
void ghost_for_test_destructor(void* ptr) {
|
||||
std::cout<<"ghost_for_test::destructor (0x";
|
||||
std::cout<<std::hex<<(u64)ptr<<std::dec<<") {\n";
|
||||
std::cout << "ghost_for_test::destructor (0x";
|
||||
std::cout << std::hex << (u64)ptr << std::dec << ") {\n";
|
||||
delete (u32*)ptr;
|
||||
std::cout<<" delete 0x"<<std::hex<<(u64)ptr<<std::dec<<";\n";
|
||||
std::cout<<"}\n";
|
||||
std::cout << " delete 0x" << std::hex << (u64)ptr << std::dec << ";\n";
|
||||
std::cout << "}\n";
|
||||
}
|
||||
|
||||
var create_new_ghost(var* args, usize size, gc* ngc) {
|
||||
var res=ngc->alloc(vm_obj);
|
||||
var res = ngc->alloc(vm_obj);
|
||||
res.obj().set(ghost_for_test, new u32, &ngc->global_ghost_type_table);
|
||||
return res;
|
||||
}
|
||||
|
||||
var set_new_ghost(var* args, usize size, gc* ngc) {
|
||||
var res=args[0];
|
||||
var res = args[0];
|
||||
if (!res.objchk(ghost_for_test)) {
|
||||
std::cout<<"set_new_ghost: not ghost for test type.\n";
|
||||
std::cout << "set_new_ghost: not ghost for test type.\n";
|
||||
return nil;
|
||||
}
|
||||
f64 num=args[1].num();
|
||||
*((u32*)res.obj().ptr)=static_cast<u32>(num);
|
||||
std::cout<<"set_new_ghost: successfully set ghost = "<<num<<"\n";
|
||||
f64 num = args[1].num();
|
||||
*((u32*)res.obj().ptr) = static_cast<u32>(num);
|
||||
std::cout << "set_new_ghost: successfully set ghost = " << num << "\n";
|
||||
return nil;
|
||||
}
|
||||
|
||||
var print_new_ghost(var* args, usize size, gc* ngc) {
|
||||
var res=args[0];
|
||||
var res = args[0];
|
||||
if (!res.objchk(ghost_for_test)) {
|
||||
std::cout<<"print_new_ghost: not ghost for test type.\n";
|
||||
std::cout << "print_new_ghost: not ghost for test type.\n";
|
||||
return nil;
|
||||
}
|
||||
std::cout<<"print_new_ghost: "<<res.obj()<<" result = "<<*((u32*)res.obj().ptr)<<"\n";
|
||||
std::cout << "print_new_ghost: " << res.obj() << " result = "
|
||||
<< *((u32*)res.obj().ptr) << "\n";
|
||||
return nil;
|
||||
}
|
||||
|
||||
module_func_info func_tbl[]={
|
||||
module_func_info func_tbl[] = {
|
||||
{"fib", fib},
|
||||
{"quick_fib", quick_fib},
|
||||
{"create_ghost", create_new_ghost},
|
||||
|
@ -88,10 +89,10 @@ module_func_info func_tbl[]={
|
|||
|
||||
extern "C" module_func_info* get(ghost_register_table* table) {
|
||||
if (table->exists("fib_for_test")) {
|
||||
nasal_fib_module::ghost_for_test=table->get_ghost_type_index("fib_for_test");
|
||||
nasal_fib_module::ghost_for_test = table->get_ghost_type_index("fib_for_test");
|
||||
return nasal_fib_module::func_tbl;
|
||||
}
|
||||
nasal_fib_module::ghost_for_test=table->register_ghost_type(
|
||||
nasal_fib_module::ghost_for_test = table->register_ghost_type(
|
||||
"fib_for_test",
|
||||
nasal_fib_module::ghost_for_test_destructor
|
||||
);
|
||||
|
|
|
@ -32,7 +32,7 @@ using u64 = std::uint64_t;
|
|||
using usize = std::size_t;
|
||||
using f64 = double;
|
||||
|
||||
const u32 STACK_DEPTH=4096;
|
||||
const u32 STACK_DEPTH = 4096;
|
||||
|
||||
f64 hex2f(const char*);
|
||||
f64 oct2f(const char*);
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
#include "nasal_import.h"
|
||||
|
||||
linker::linker(error& e): show_path(false), lib_loaded(false), err(e) {
|
||||
char sep=is_windows()? ';':':';
|
||||
std::string PATH=getenv("PATH");
|
||||
usize last=0;
|
||||
usize pos=PATH.find(sep, 0);
|
||||
linker::linker(error& e):
|
||||
show_path(false), lib_loaded(false), err(e) {
|
||||
char sep = is_windows()? ';':':';
|
||||
std::string PATH = getenv("PATH");
|
||||
usize last = 0, pos = PATH.find(sep, 0);
|
||||
while(pos!=std::string::npos) {
|
||||
std::string dirpath=PATH.substr(last, pos-last);
|
||||
std::string dirpath = PATH.substr(last, pos-last);
|
||||
if (dirpath.length()) {
|
||||
envpath.push_back(dirpath);
|
||||
}
|
||||
last=pos+1;
|
||||
pos=PATH.find(sep, last);
|
||||
last = pos+1;
|
||||
pos = PATH.find(sep, last);
|
||||
}
|
||||
if (last!=PATH.length()) {
|
||||
envpath.push_back(PATH.substr(last));
|
||||
|
@ -132,7 +132,7 @@ bool linker::exist(const std::string& file) {
|
|||
|
||||
void linker::link(code_block* new_tree_root, code_block* old_tree_root) {
|
||||
// add children of add_root to the back of root
|
||||
for(auto& i:old_tree_root->get_expressions()) {
|
||||
for(auto& i : old_tree_root->get_expressions()) {
|
||||
new_tree_root->add_expression(i);
|
||||
}
|
||||
// clean old root
|
||||
|
|
Loading…
Reference in New Issue