misc cleanup
parent
d25fe552ab
commit
46bab62689
|
@ -39,10 +39,10 @@ multiply_overflow:
|
||||||
pop ARG2
|
pop ARG2
|
||||||
jmp MANGLE(overflow_fixnum_multiply)
|
jmp MANGLE(overflow_fixnum_multiply)
|
||||||
|
|
||||||
|
|
||||||
DEF(F_FASTCALL void,c_to_factor,(CELL quot, void *vm)):
|
DEF(F_FASTCALL void,c_to_factor,(CELL quot, void *vm)):
|
||||||
PUSH_NONVOLATILE
|
PUSH_NONVOLATILE
|
||||||
mov ARG0,NV_TEMP_REG
|
mov ARG0,NV_TEMP_REG
|
||||||
|
|
||||||
/* Create register shadow area for Win64 */
|
/* Create register shadow area for Win64 */
|
||||||
sub $32,STACK_REG
|
sub $32,STACK_REG
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,6 @@ void factorvm::init_data_gc()
|
||||||
collecting_aging_again = false;
|
collecting_aging_again = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Given a pointer to oldspace, copy it to newspace */
|
/* Given a pointer to oldspace, copy it to newspace */
|
||||||
object *factorvm::copy_untagged_object_impl(object *pointer, cell size)
|
object *factorvm::copy_untagged_object_impl(object *pointer, cell size)
|
||||||
{
|
{
|
||||||
|
@ -26,7 +25,6 @@ object *factorvm::copy_untagged_object_impl(object *pointer, cell size)
|
||||||
return newpointer;
|
return newpointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
object *factorvm::copy_object_impl(object *untagged)
|
object *factorvm::copy_object_impl(object *untagged)
|
||||||
{
|
{
|
||||||
object *newpointer = copy_untagged_object_impl(untagged,untagged_object_size(untagged));
|
object *newpointer = copy_untagged_object_impl(untagged,untagged_object_size(untagged));
|
||||||
|
@ -34,7 +32,6 @@ object *factorvm::copy_object_impl(object *untagged)
|
||||||
return newpointer;
|
return newpointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool factorvm::should_copy_p(object *untagged)
|
bool factorvm::should_copy_p(object *untagged)
|
||||||
{
|
{
|
||||||
if(in_zone(newspace,untagged))
|
if(in_zone(newspace,untagged))
|
||||||
|
@ -52,7 +49,6 @@ bool factorvm::should_copy_p(object *untagged)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Follow a chain of forwarding pointers */
|
/* Follow a chain of forwarding pointers */
|
||||||
object *factorvm::resolve_forwarding(object *untagged)
|
object *factorvm::resolve_forwarding(object *untagged)
|
||||||
{
|
{
|
||||||
|
@ -72,7 +68,6 @@ object *factorvm::resolve_forwarding(object *untagged)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template <typename TYPE> TYPE *factorvm::copy_untagged_object(TYPE *untagged)
|
template <typename TYPE> TYPE *factorvm::copy_untagged_object(TYPE *untagged)
|
||||||
{
|
{
|
||||||
check_data_pointer(untagged);
|
check_data_pointer(untagged);
|
||||||
|
@ -88,13 +83,11 @@ template <typename TYPE> TYPE *factorvm::copy_untagged_object(TYPE *untagged)
|
||||||
return untagged;
|
return untagged;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
cell factorvm::copy_object(cell pointer)
|
cell factorvm::copy_object(cell pointer)
|
||||||
{
|
{
|
||||||
return RETAG(copy_untagged_object(untag<object>(pointer)),TAG(pointer));
|
return RETAG(copy_untagged_object(untag<object>(pointer)),TAG(pointer));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void factorvm::copy_handle(cell *handle)
|
void factorvm::copy_handle(cell *handle)
|
||||||
{
|
{
|
||||||
cell pointer = *handle;
|
cell pointer = *handle;
|
||||||
|
@ -108,7 +101,6 @@ void factorvm::copy_handle(cell *handle)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Scan all the objects in the card */
|
/* Scan all the objects in the card */
|
||||||
void factorvm::copy_card(card *ptr, cell gen, cell here)
|
void factorvm::copy_card(card *ptr, cell gen, cell here)
|
||||||
{
|
{
|
||||||
|
@ -123,7 +115,6 @@ void factorvm::copy_card(card *ptr, cell gen, cell here)
|
||||||
cards_scanned++;
|
cards_scanned++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void factorvm::copy_card_deck(card_deck *deck, cell gen, card mask, card unmask)
|
void factorvm::copy_card_deck(card_deck *deck, cell gen, card mask, card unmask)
|
||||||
{
|
{
|
||||||
card *first_card = deck_to_card(deck);
|
card *first_card = deck_to_card(deck);
|
||||||
|
@ -155,7 +146,6 @@ void factorvm::copy_card_deck(card_deck *deck, cell gen, card mask, card unmask)
|
||||||
decks_scanned++;
|
decks_scanned++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Copy all newspace objects referenced from marked cards to the destination */
|
/* Copy all newspace objects referenced from marked cards to the destination */
|
||||||
void factorvm::copy_gen_cards(cell gen)
|
void factorvm::copy_gen_cards(cell gen)
|
||||||
{
|
{
|
||||||
|
@ -222,7 +212,6 @@ void factorvm::copy_gen_cards(cell gen)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Scan cards in all generations older than the one being collected, copying
|
/* Scan cards in all generations older than the one being collected, copying
|
||||||
old->new references */
|
old->new references */
|
||||||
void factorvm::copy_cards()
|
void factorvm::copy_cards()
|
||||||
|
@ -236,7 +225,6 @@ void factorvm::copy_cards()
|
||||||
card_scan_time += (current_micros() - start);
|
card_scan_time += (current_micros() - start);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Copy all tagged pointers in a range of memory */
|
/* Copy all tagged pointers in a range of memory */
|
||||||
void factorvm::copy_stack_elements(segment *region, cell top)
|
void factorvm::copy_stack_elements(segment *region, cell top)
|
||||||
{
|
{
|
||||||
|
@ -246,7 +234,6 @@ void factorvm::copy_stack_elements(segment *region, cell top)
|
||||||
copy_handle((cell*)ptr);
|
copy_handle((cell*)ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void factorvm::copy_registered_locals()
|
void factorvm::copy_registered_locals()
|
||||||
{
|
{
|
||||||
std::vector<cell>::const_iterator iter = gc_locals.begin();
|
std::vector<cell>::const_iterator iter = gc_locals.begin();
|
||||||
|
@ -256,7 +243,6 @@ void factorvm::copy_registered_locals()
|
||||||
copy_handle((cell *)(*iter));
|
copy_handle((cell *)(*iter));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void factorvm::copy_registered_bignums()
|
void factorvm::copy_registered_bignums()
|
||||||
{
|
{
|
||||||
std::vector<cell>::const_iterator iter = gc_bignums.begin();
|
std::vector<cell>::const_iterator iter = gc_bignums.begin();
|
||||||
|
@ -279,7 +265,6 @@ void factorvm::copy_registered_bignums()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Copy roots over at the start of GC, namely various constants, stacks,
|
/* Copy roots over at the start of GC, namely various constants, stacks,
|
||||||
the user environment and extra roots registered by local_roots.hpp */
|
the user environment and extra roots registered by local_roots.hpp */
|
||||||
void factorvm::copy_roots()
|
void factorvm::copy_roots()
|
||||||
|
@ -316,7 +301,6 @@ void factorvm::copy_roots()
|
||||||
copy_handle(&userenv[i]);
|
copy_handle(&userenv[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
cell factorvm::copy_next_from_nursery(cell scan)
|
cell factorvm::copy_next_from_nursery(cell scan)
|
||||||
{
|
{
|
||||||
cell *obj = (cell *)scan;
|
cell *obj = (cell *)scan;
|
||||||
|
@ -345,7 +329,6 @@ cell factorvm::copy_next_from_nursery(cell scan)
|
||||||
return scan + untagged_object_size((object *)scan);
|
return scan + untagged_object_size((object *)scan);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
cell factorvm::copy_next_from_aging(cell scan)
|
cell factorvm::copy_next_from_aging(cell scan)
|
||||||
{
|
{
|
||||||
cell *obj = (cell *)scan;
|
cell *obj = (cell *)scan;
|
||||||
|
@ -378,7 +361,6 @@ cell factorvm::copy_next_from_aging(cell scan)
|
||||||
return scan + untagged_object_size((object *)scan);
|
return scan + untagged_object_size((object *)scan);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
cell factorvm::copy_next_from_tenured(cell scan)
|
cell factorvm::copy_next_from_tenured(cell scan)
|
||||||
{
|
{
|
||||||
cell *obj = (cell *)scan;
|
cell *obj = (cell *)scan;
|
||||||
|
@ -409,7 +391,6 @@ cell factorvm::copy_next_from_tenured(cell scan)
|
||||||
return scan + untagged_object_size((object *)scan);
|
return scan + untagged_object_size((object *)scan);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void factorvm::copy_reachable_objects(cell scan, cell *end)
|
void factorvm::copy_reachable_objects(cell scan, cell *end)
|
||||||
{
|
{
|
||||||
if(collecting_gen == data->nursery())
|
if(collecting_gen == data->nursery())
|
||||||
|
@ -429,7 +410,6 @@ void factorvm::copy_reachable_objects(cell scan, cell *end)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Prepare to start copying reachable objects into an unused zone */
|
/* Prepare to start copying reachable objects into an unused zone */
|
||||||
void factorvm::begin_gc(cell requested_bytes)
|
void factorvm::begin_gc(cell requested_bytes)
|
||||||
{
|
{
|
||||||
|
@ -464,7 +444,6 @@ void factorvm::begin_gc(cell requested_bytes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void factorvm::end_gc(cell gc_elapsed)
|
void factorvm::end_gc(cell gc_elapsed)
|
||||||
{
|
{
|
||||||
gc_stats *s = &stats[collecting_gen];
|
gc_stats *s = &stats[collecting_gen];
|
||||||
|
@ -503,7 +482,6 @@ void factorvm::end_gc(cell gc_elapsed)
|
||||||
collecting_aging_again = false;
|
collecting_aging_again = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Collect gen and all younger generations.
|
/* Collect gen and all younger generations.
|
||||||
If growing_data_heap_ is true, we must grow the data heap to such a size that
|
If growing_data_heap_ is true, we must grow the data heap to such a size that
|
||||||
an allocation of requested_bytes won't fail */
|
an allocation of requested_bytes won't fail */
|
||||||
|
@ -585,13 +563,11 @@ void factorvm::garbage_collection(cell gen,bool growing_data_heap_,cell requeste
|
||||||
performing_gc = false;
|
performing_gc = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void factorvm::gc()
|
void factorvm::gc()
|
||||||
{
|
{
|
||||||
garbage_collection(data->tenured(),false,0);
|
garbage_collection(data->tenured(),false,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inline void factorvm::primitive_gc()
|
inline void factorvm::primitive_gc()
|
||||||
{
|
{
|
||||||
gc();
|
gc();
|
||||||
|
|
|
@ -79,6 +79,4 @@
|
||||||
#include "factor.hpp"
|
#include "factor.hpp"
|
||||||
#include "utilities.hpp"
|
#include "utilities.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __FACTOR_MASTER_H__ */
|
#endif /* __FACTOR_MASTER_H__ */
|
||||||
|
|
|
@ -355,7 +355,6 @@ unsigned int bignum_producer(unsigned int digit, factorvm *myvm)
|
||||||
inline void factorvm::primitive_byte_array_to_bignum()
|
inline void factorvm::primitive_byte_array_to_bignum()
|
||||||
{
|
{
|
||||||
cell n_digits = array_capacity(untag_check<byte_array>(dpeek()));
|
cell n_digits = array_capacity(untag_check<byte_array>(dpeek()));
|
||||||
// bignum * result = factor::digit_stream_to_bignum(n_digits,factor::bignum_producer,0x100,0);
|
|
||||||
bignum * result = digit_stream_to_bignum(n_digits,factor::bignum_producer,0x100,0);
|
bignum * result = digit_stream_to_bignum(n_digits,factor::bignum_producer,0x100,0);
|
||||||
drepl(tag<bignum>(result));
|
drepl(tag<bignum>(result));
|
||||||
}
|
}
|
||||||
|
@ -796,7 +795,7 @@ void factorvm::box_float(float flo)
|
||||||
dpush(allot_float(flo));
|
dpush(allot_float(flo));
|
||||||
}
|
}
|
||||||
|
|
||||||
VM_C_API void box_float(float flo,factorvm *myvm) // not sure if this is ever called
|
VM_C_API void box_float(float flo, factorvm *myvm)
|
||||||
{
|
{
|
||||||
ASSERTVM();
|
ASSERTVM();
|
||||||
return VM_PTR->box_float(flo);
|
return VM_PTR->box_float(flo);
|
||||||
|
|
|
@ -3,34 +3,29 @@
|
||||||
namespace factor
|
namespace factor
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
THREADHANDLE start_thread(void *(*start_routine)(void *),void *args){
|
THREADHANDLE start_thread(void *(*start_routine)(void *),void *args){
|
||||||
return (void*) CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)start_routine, args, 0, 0);
|
return (void*) CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)start_routine, args, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DWORD dwTlsIndex;
|
DWORD dwTlsIndex;
|
||||||
|
|
||||||
void init_platform_globals()
|
void init_platform_globals()
|
||||||
{
|
{
|
||||||
if ((dwTlsIndex = TlsAlloc()) == TLS_OUT_OF_INDEXES) {
|
if ((dwTlsIndex = TlsAlloc()) == TLS_OUT_OF_INDEXES)
|
||||||
fatal_error("TlsAlloc failed - out of indexes",0);
|
fatal_error("TlsAlloc failed - out of indexes",0);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
void register_vm_with_thread(factorvm *vm)
|
void register_vm_with_thread(factorvm *vm)
|
||||||
{
|
{
|
||||||
if (! TlsSetValue(dwTlsIndex, vm)) {
|
if (! TlsSetValue(dwTlsIndex, vm))
|
||||||
fatal_error("TlsSetValue failed",0);
|
fatal_error("TlsSetValue failed",0);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
factorvm *tls_vm()
|
factorvm *tls_vm()
|
||||||
{
|
{
|
||||||
return (factorvm*)TlsGetValue(dwTlsIndex);
|
return (factorvm*)TlsGetValue(dwTlsIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
s64 current_micros()
|
s64 current_micros()
|
||||||
{
|
{
|
||||||
FILETIME t;
|
FILETIME t;
|
||||||
|
@ -85,7 +80,6 @@ LONG factorvm::exception_handler(PEXCEPTION_POINTERS pe)
|
||||||
return EXCEPTION_CONTINUE_EXECUTION;
|
return EXCEPTION_CONTINUE_EXECUTION;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
FACTOR_STDCALL LONG exception_handler(PEXCEPTION_POINTERS pe)
|
FACTOR_STDCALL LONG exception_handler(PEXCEPTION_POINTERS pe)
|
||||||
{
|
{
|
||||||
return SIGNAL_VM_PTR()->exception_handler(pe);
|
return SIGNAL_VM_PTR()->exception_handler(pe);
|
||||||
|
|
Loading…
Reference in New Issue