pike.git
/
src
/
builtin.cmod
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/builtin.cmod:1071:
*! this limit is that the current amount of garbage can only be *! measured in a gc run, and if the gc starts to run very seldom *! due to very little garbage, it might get too slow to react to an *! increase in garbage generation. Set to 0.0 to turn this limit *! off. *! @member float "average_slowness" *! When predicting the next gc interval, use a decaying average *! with this slowness factor. It should be a value between 0.0 and *! 1.0 that specifies the weight to give to the old average value. *! The remaining weight up to 1.0 is given to the last reading.
+
*! @member function(:void) "pre_cb"
+
*! This function is called when the gc starts.
+
*! @member function(:void) "post_cb"
+
*! This function is called when the mark and sweep pass of the gc
+
*! is done.
+
*! @member function(object:void) "destruct_cb"
+
*! This function is called once for each object that is part of
+
*! a cycle just before the gc will destruct it.
+
*! @member function(int:void) "done_cb"
+
*! This function is called when the gc is done and about to exit.
+
*! The argument is the same value as will be returned by gc().
*! @endmapping *! *! @seealso *! @[gc], @[Debug.gc_status] */ PMOD_EXPORT PIKEFUN mapping(string:mixed) gc_parameters (void|mapping(string:mixed) params) errname Pike.gc_parameters; optflags OPT_SIDE_EFFECT; {
pike.git/src/builtin.cmod:1141:
} }, { SET_SVAL(get, T_INT, NUMBER_NUMBER, integer, gc_enabled); }); HANDLE_FLOAT_FACTOR ("garbage_ratio_low", gc_garbage_ratio_low); HANDLE_FLOAT_FACTOR ("time_ratio", gc_time_ratio); HANDLE_FLOAT_FACTOR ("garbage_ratio_high", gc_garbage_ratio_high); HANDLE_FLOAT_FACTOR ("min_gc_time_ratio", gc_min_time_ratio); HANDLE_FLOAT_FACTOR ("average_slowness", gc_average_slowness);
+
HANDLE_PARAM("pre_cb", {
+
assign_svalue(&gc_pre_cb, set);
+
}, {
+
assign_svalue(&get, &gc_pre_cb);
+
});
+
HANDLE_PARAM("post_cb", {
+
assign_svalue(&gc_post_cb, set);
+
}, {
+
assign_svalue(&get, &gc_post_cb);
+
});
+
HANDLE_PARAM("destruct_cb", {
+
assign_svalue(&gc_destruct_cb, set);
+
}, {
+
assign_svalue(&get, &gc_destruct_cb);
+
});
+
HANDLE_PARAM("done_cb", {
+
assign_svalue(&gc_done_cb, set);
+
}, {
+
assign_svalue(&get, &gc_done_cb);
+
});
+
#undef HANDLE_PARAM #undef HANDLE_FLOAT_FACTOR REF_RETURN params; } /*! @decl string ctime(int timestamp) *! *! Convert the output from a previous call to @[time()] into a readable *! string containing the current year, month, day and time.
pike.git/src/builtin.cmod:5747:
PIKECLASS __Backtrace_Tester__ { INIT { Pike_error("__Backtrace_Tester__\n"); } } void init_builtin(void) {
+
SET_SVAL(gc_pre_cb, PIKE_T_INT, NUMBER_NUMBER, integer, 0);
+
SET_SVAL(gc_post_cb, PIKE_T_INT, NUMBER_NUMBER, integer, 0);
+
SET_SVAL(gc_destruct_cb, PIKE_T_INT, NUMBER_NUMBER, integer, 0);
+
SET_SVAL(gc_done_cb, PIKE_T_INT, NUMBER_NUMBER, integer, 0);
INIT } void exit_builtin(void) {
-
+
struct svalue zero;
if (val_module) free_object (val_module); EXIT
-
+
SET_SVAL(zero, PIKE_T_INT, NUMBER_NUMBER, integer, 0);
+
assign_svalue(&gc_pre_cb, &zero);
+
assign_svalue(&gc_post_cb, &zero);
+
assign_svalue(&gc_destruct_cb, &zero);
+
assign_svalue(&gc_done_cb, &zero);
#ifndef DO_PIKE_CLEANUP /* This is performed by exit_builtin_modules() at a later point * in this case, so that the pike_list_node's are valid at cleanup * time, thus avoiding "got invalid pointer" fatals at exit. */ ba_destroy(&pike_list_node_allocator); #endif #ifndef USE_SETENV if (env_allocs) free_mapping (env_allocs); #endif }