mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
option to pre-allocate a memory block
This commit is contained in:
parent
13769f440f
commit
7dcd47369b
@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
module builtin
|
module builtin
|
||||||
|
|
||||||
|
__global g_m2_ptr byteptr
|
||||||
|
|
||||||
fn init() {
|
fn init() {
|
||||||
$if windows {
|
$if windows {
|
||||||
if is_atty(0) > 0 {
|
if is_atty(0) > 0 {
|
||||||
@ -108,14 +110,27 @@ pub fn print(s string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
__global total_m i64 = 0
|
__global total_m i64 = 0
|
||||||
//__global nr_mallocs int = 0
|
__global nr_mallocs int = 0
|
||||||
|
|
||||||
[unsafe_fn]
|
[unsafe_fn]
|
||||||
pub fn malloc(n int) byteptr {
|
pub fn malloc(n int) byteptr {
|
||||||
if n < 0 {
|
if n < 0 {
|
||||||
panic('malloc(<0)')
|
panic('malloc(<0)')
|
||||||
}
|
}
|
||||||
//nr_mallocs++
|
$if debug {
|
||||||
|
res := g_m2_ptr
|
||||||
|
g_m2_ptr += n
|
||||||
|
nr_mallocs++
|
||||||
|
return res
|
||||||
|
} $else {
|
||||||
|
ptr := C.malloc(n)
|
||||||
|
if ptr == 0 {
|
||||||
|
panic('malloc($n) failed')
|
||||||
|
}
|
||||||
|
return ptr
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
TODO
|
TODO
|
||||||
#ifdef VPLAY
|
#ifdef VPLAY
|
||||||
@ -129,11 +144,6 @@ TODO
|
|||||||
print_backtrace()
|
print_backtrace()
|
||||||
#endif
|
#endif
|
||||||
*/
|
*/
|
||||||
ptr := C.malloc(n)
|
|
||||||
if ptr == 0 {
|
|
||||||
panic('malloc($n) failed')
|
|
||||||
}
|
|
||||||
return ptr
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn calloc(n int) byteptr {
|
pub fn calloc(n int) byteptr {
|
||||||
|
@ -199,7 +199,7 @@ pub fn (v mut V) compile() {
|
|||||||
println(v.files)
|
println(v.files)
|
||||||
}
|
}
|
||||||
v.add_v_files_to_compile()
|
v.add_v_files_to_compile()
|
||||||
if v.pref.is_verbose || v.pref.is_debug {
|
if v.pref.is_verbose {
|
||||||
println('all .v files:')
|
println('all .v files:')
|
||||||
println(v.files)
|
println(v.files)
|
||||||
}
|
}
|
||||||
@ -418,6 +418,10 @@ fn (v mut V) generate_init() {
|
|||||||
// vlib can't have `init_consts()`
|
// vlib can't have `init_consts()`
|
||||||
v.cgen.genln('void init() {
|
v.cgen.genln('void init() {
|
||||||
g_str_buf=malloc(1000);
|
g_str_buf=malloc(1000);
|
||||||
|
#if VDEBUG
|
||||||
|
g_m2_ptr=malloc(50 * 1000 * 1000);
|
||||||
|
puts("allocated 50 mb");
|
||||||
|
#endif
|
||||||
$call_mod_init_consts
|
$call_mod_init_consts
|
||||||
$consts_init_body
|
$consts_init_body
|
||||||
builtin__init();
|
builtin__init();
|
||||||
|
Loading…
Reference in New Issue
Block a user