]> gitweb.factorcode.org Git - factor.git/commitdiff
Added more init code to vm constructor.
authorPhil Dawes <phil@phildawes.net>
Mon, 7 Sep 2009 06:41:11 +0000 (07:41 +0100)
committerPhil Dawes <phil@phildawes.net>
Wed, 16 Sep 2009 07:22:18 +0000 (08:22 +0100)
Also removed dummy variables file as have fixed that problem now

vm/factor.cpp
vm/vm-data-dummy.hpp [deleted file]
vm/vm-data.hpp

index 7b95304887a0762de838c3a57b56b09270f3215b..4ef4d1179657d6e64cf9d16ae9a3e69ee9e83eb1 100755 (executable)
@@ -247,102 +247,4 @@ VM_C_API THREADHANDLE start_standalone_factor_in_new_thread(int argc, vm_char **
        return start_thread(start_standalone_factor_thread,args);
 }
 
-       // if you change this struct, also change vm.factor k--------
-       context *stack_chain; 
-       zone nursery; /* new objects are allocated here */
-       cell cards_offset;
-       cell decks_offset;
-       cell userenv[USER_ENV]; /* TAGGED user environment data; see getenv/setenv prims */
-
-       // -------------------------------
-
-       // contexts
-       cell ds_size, rs_size;
-       context *unused_contexts;
-
-       // run
-       cell T;  /* Canonical T object. It's just a word */
-
-       // profiler
-       bool profiling_p;
-
-       // errors
-       /* Global variables used to pass fault handler state from signal handler to
-          user-space */
-       cell signal_number;
-       cell signal_fault_addr;
-       unsigned int signal_fpu_status;
-       stack_frame *signal_callstack_top;
-
-       //data_heap
-       bool secure_gc;  /* Set by the -securegc command line argument */
-       bool gc_off; /* GC is off during heap walking */
-       data_heap *data;
-       /* A heap walk allows useful things to be done, like finding all
-          references to an object for debugging purposes. */
-       cell heap_scan_ptr;
-       //write barrier
-       cell allot_markers_offset;
-       //data_gc
-       /* used during garbage collection only */
-       zone *newspace;
-       bool performing_gc;
-       bool performing_compaction;
-       cell collecting_gen;
-       /* if true, we are collecting aging space for the second time, so if it is still
-          full, we go on to collect tenured */
-       bool collecting_aging_again;
-       /* in case a generation fills up in the middle of a gc, we jump back
-          up to try collecting the next generation. */
-       jmp_buf gc_jmp;
-       gc_stats stats[max_gen_count];
-       u64 cards_scanned;
-       u64 decks_scanned;
-       u64 card_scan_time;
-       cell code_heap_scans;
-       /* What generation was being collected when copy_code_heap_roots() was last
-          called? Until the next call to add_code_block(), future
-          collections of younger generations don't have to touch the code
-          heap. */
-       cell last_code_heap_scan;
-       /* sometimes we grow the heap */
-       bool growing_data_heap;
-       data_heap *old_data_heap;
-
-       // local roots
-       /* If a runtime function needs to call another function which potentially
-          allocates memory, it must wrap any local variable references to Factor
-          objects in gc_root instances */
-       std::vector<cell> gc_locals;
-       std::vector<cell> gc_bignums;
-
-       //debug
-       bool fep_disabled;
-       bool full_output;
-       cell look_for;
-       cell obj;
-
-       //math
-       cell bignum_zero;
-       cell bignum_pos_one;
-       cell bignum_neg_one;    
-
-       //code_heap
-       heap code;
-       unordered_map<heap_block *,char *> forwarding;
-
-       //image
-       cell code_relocation_base;
-       cell data_relocation_base;
-
-       //dispatch
-       cell megamorphic_cache_hits;
-       cell megamorphic_cache_misses;
-
-       //inline cache
-       cell max_pic_size;
-       cell cold_call_to_ic_transitions;
-       cell ic_to_pic_transitions;
-       cell pic_to_mega_transitions;
-       cell pic_counts[4];  /* PIC_TAG, PIC_HI_TAG, PIC_TUPLE, PIC_HI_TAG_TUPLE */
 }
diff --git a/vm/vm-data-dummy.hpp b/vm/vm-data-dummy.hpp
deleted file mode 100644 (file)
index c028a61..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-namespace factor
-{
-
-       // if you change this struct, also change vm.factor k--------
-       extern "C" context *stack_chain; 
-       extern "C" zone nursery; /* new objects are allocated here */
-       extern "C" cell cards_offset;
-       extern "C" cell decks_offset;
-//extern "C" cell userenv[USER_ENV]; /* TAGGED user environment data; see getenv/setenv prims */
-
-       // -------------------------------
-
-       // contexts
-       extern "C" cell ds_size, rs_size;
-       extern "C" context *unused_contexts;
-
-
-       // profiler
-       extern "C" bool profiling_p;
-
-       // errors
-       /* Global variables used to pass fault handler state from signal handler to
-          user-space */
-       extern "C" cell signal_number;
-       extern "C" cell signal_fault_addr;
-       extern "C" unsigned int signal_fpu_status;
-       extern "C" stack_frame *signal_callstack_top;
-
-       //data_heap
-       extern "C" bool secure_gc;  /* Set by the -securegc command line argument */
-       extern "C" bool gc_off; /* GC is off during heap walking */
-       extern "C" data_heap *data;
-       /* A heap walk allows useful things to be done, like finding all
-          references to an object for debugging purposes. */
-       extern "C" cell heap_scan_ptr;
-       //write barrier
-       extern "C" cell allot_markers_offset;
-       //data_gc
-       /* used during garbage collection only */
-       extern "C" zone *newspace;
-       extern "C" bool performing_gc;
-       extern "C" bool performing_compaction;
-       extern "C" cell collecting_gen;
-       /* if true, we are collecting aging space for the second time, so if it is still
-          full, we go on to collect tenured */
-       extern "C" bool collecting_aging_again;
-       /* in case a generation fills up in the middle of a gc, we jump back
-          up to try collecting the next generation. */
-       extern "C" jmp_buf gc_jmp;
-       extern "C" gc_stats stats[max_gen_count];
-       extern "C" u64 cards_scanned;
-       extern "C" u64 decks_scanned;
-       extern "C" u64 card_scan_time;
-       extern "C" cell code_heap_scans;
-       /* What generation was being collected when copy_code_heap_roots() was last
-          called? Until the next call to add_code_block(), future
-          collections of younger generations don't have to touch the code
-          heap. */
-       extern "C" cell last_code_heap_scan;
-       /* sometimes we grow the heap */
-       extern "C" bool growing_data_heap;
-       extern "C" data_heap *old_data_heap;
-
-       // local roots
-       /* If a runtime function needs to call another function which potentially
-          allocates memory, it must wrap any local variable references to Factor
-          objects in gc_root instances */
-       //extern "C" segment *gc_locals_region;
-       //extern "C" cell gc_locals;
-       //extern "C" segment *gc_bignums_region;
-       //extern "C" cell gc_bignums;
-
-       //debug
-       extern "C" bool fep_disabled;
-       extern "C" bool full_output;
-       extern "C" cell look_for;
-       extern "C" cell obj;
-
-       //math
-       extern "C" cell bignum_zero;
-       extern "C" cell bignum_pos_one;
-       extern "C" cell bignum_neg_one; 
-
-    //code_heap
-       extern "C" heap code;
-       extern "C" unordered_map<heap_block *,char *> forwarding;
-
-       //image
-       extern "C" cell code_relocation_base;
-       extern "C" cell data_relocation_base;
-
-       //dispatch
-       extern "C" cell megamorphic_cache_hits;
-       extern "C" cell megamorphic_cache_misses;
-
-       //inline cache
-       extern "C" cell max_pic_size;
-       extern "C" cell cold_call_to_ic_transitions;
-       extern "C" cell ic_to_pic_transitions;
-       extern "C" cell pic_to_mega_transitions;
-       extern "C" cell pic_counts[4];  /* PIC_TAG, PIC_HI_TAG, PIC_TUPLE, PIC_HI_TAG_TUPLE */
-
-struct factorvmdata {
-       cell userenv[USER_ENV]; /* TAGGED user environment data; see getenv/setenv prims */
-
-       // run
-       cell T;  /* Canonical T object. It's just a word */
-
-       // local roots
-       /* If a runtime function needs to call another function which potentially
-          allocates memory, it must wrap any local variable references to Factor
-          objects in gc_root instances */
-       std::vector<cell> gc_locals;
-       std::vector<cell> gc_bignums;
-};
-}
index de5cf36632a7b374e47f1345d868bb9d3005daa8..f5ecdc5f62228ee327981c561ef4411d8d967438 100644 (file)
@@ -110,8 +110,11 @@ struct factorvmdata {
                  collecting_aging_again(false),
                  growing_data_heap(false),
                  fep_disabled(false),
-                 full_output(false)
-       {}
+                 full_output(false),
+                 max_pic_size(0)
+       {
+               memset(this,0,sizeof(this)); // just to make sure
+       }
 
 };