new world
[rubydium.git] / baby / debug.rb
blob8b25f397fc169baf242474fcb4b5f0e882acc278
1 $pure_ruby_backend = false
3 $graph     = false
4 $debug     = false
5 $no_debug  = !$debug
6 $profile   = false
7 $show_asm  = false
8 $nanovm_debug = false
9 $detail    = false
11 $boo = [case
12 when $detail;   :dump_max_point
13 when $show_asm; :dump_asm
14 when $profile;  :dump_profile
15 when !$debug;    :dump_null
16 else;           :dump_summary; end]
18 $boo << :dump_graph if $graph
20 $COLOR = $stdout.tty?
22 $opt_use_cache           = true
23 $opt_use_predict         = true
24 $opt_indirection_updates = true
25 $opt_scope_templates     = true
26 $opt_static_dispatches   = true
27 $opt_static_conts        = true
28 $opt_flatten_param_stack = false
29 $clever                  = true
31 $data_inspect_every_node = false
32 $force_data_inspect      = false
34 $debug_logged_cache      = false
36 $ignore_streams_ALL = {
37    :dict_lookup                   => 1,
38    :build_function                => 1,
39    :prediction                    => 1,
40    :dbg_build_function_inner      => 1,
41    :dbg_dictlookup                => 1,
42    :func_cache                    => 1,
43    :dbg_build_function_inner_inner   => 1,
44    :find_export_vars              => 1,
45    :export_vars                   => 1,
46    :handle_element                => 1,
47 #  :self_cache                    => 1,
48    :indirection_specialisation    => 1,
49    :dbg_handle_call_element       => 1,
50    :dbg_post_element              => 1,
51    :node_predict                  => 1,
52    :gen_return                    => 1,
53    :data_inspect                  => 1,
54    :dispatch_to_id_value          => 1,
55    :rebuild                       => 1,
56    :specialisation                => 1,
57    :stackify                      => 1,
58    :gen_orders                    => 1,
59    :dbg_handle_definitions        => 1,
60    :create_new_scope              => 1,
61    :blocks                        => 1,
62    :dbg_eat_unneeded_return_value => 1,
63    :rt_runtime_curr_id_trace      => 1,
64    :rt_runtime_data_inspect_trace => 1,
65 #  :rt_primitives                 => 1,
66    :rt_push_raw                   => 1,
67 #  :rt_find_index                 => 1,
68    :rt_prefilling                 => 1,
69    :rt_bouncer                    => 1,
70    :rt_bouncer_runtime            => 1,
71    :rt_stack                      => 1,
72 #  :rt_block                      => 1,
73    :rt_assign                     => 1,
74    :rt_scope                      => 1,
75 #  :rt_cache                      => 1,
76    :rt_back_insertion             => 1,
77    :scope_templates               => 1,
78 #  :scope_linking                 => 1,
79 #  :cache_store                   => 1,
82 $ignore_streams_EMPTY = { 
85 $ignore_streams = $ignore_streams_ALL
87 def check_dbg sym
88    $debug && ($ignore_streams.has_key? sym)
89 end
91 def idbg stream, *config
92    if dbg_on stream
93       print yield
94       print "\n" unless config.include? :no_newline
95    end
96 end
98 def dbg_on stream
99    ($ignore_streams.has_key? stream and !$no_debug)
102 def killi str
103    str.gsub(/\s{#{/\A(\s*)/.match(str).to_a[1].length}}/, '')
106 def color clr, str
107    $COLOR ? "\033[0;40;#{clr.to_s}m#{str}\033[0;40;39m" : "[% #{str} %]"
110 def red     str; color 31, str; end
111 def green   str; color 32, str; end
112 def cyan    str; color 36, str; end
113 def magenta str; color 35, str; end