vm: add def for the segment struct, it's useful for testing
parent
5d7fb5da60
commit
50822c1a8a
|
@ -0,0 +1,18 @@
|
|||
USING: accessors classes.struct kernel math math.order threads.private
|
||||
tools.test ;
|
||||
QUALIFIED: vm
|
||||
IN: vm.tests
|
||||
|
||||
: get-ctx ( -- ctx )
|
||||
context vm:context memory>struct ;
|
||||
|
||||
{ t } [
|
||||
get-ctx [ callstack-bottom>> ] [ callstack-top>> ] bi - 0 >
|
||||
] unit-test
|
||||
|
||||
{ t } [
|
||||
! Callstack is in the callstack segment
|
||||
get-ctx [ callstack-top>> ] [
|
||||
callstack-seg>> [ start>> ] [ end>> ] bi
|
||||
] bi between?
|
||||
] unit-test
|
|
@ -5,15 +5,20 @@ IN: vm
|
|||
|
||||
TYPEDEF: uintptr_t cell_t
|
||||
|
||||
STRUCT: segment
|
||||
{ start cell_t }
|
||||
{ size cell_t }
|
||||
{ end cell_t } ;
|
||||
|
||||
STRUCT: context
|
||||
{ callstack-top void* }
|
||||
{ callstack-bottom void* }
|
||||
{ callstack-top cell_t }
|
||||
{ callstack-bottom cell_t }
|
||||
{ datastack cell_t }
|
||||
{ retainstack cell_t }
|
||||
{ callstack-save cell_t }
|
||||
{ datastack-region void* }
|
||||
{ retainstack-region void* }
|
||||
{ callstack-region void* }
|
||||
{ datastack-seg segment* }
|
||||
{ retainstack-seg segment* }
|
||||
{ callstack-seg segment* }
|
||||
{ context-objects cell_t[context-object-count] } ;
|
||||
|
||||
: context-field-offset ( field -- offset ) context offset-of ; inline
|
||||
|
@ -32,7 +37,11 @@ STRUCT: vm
|
|||
{ decks-offset cell_t }
|
||||
{ signal-handler-addr cell_t }
|
||||
{ faulting? cell_t }
|
||||
{ special-objects cell_t[special-object-count] } ;
|
||||
{ special-objects cell_t[special-object-count] }
|
||||
{ thread void* }
|
||||
{ datastack-size cell_t }
|
||||
{ retainstack-size cell_t }
|
||||
{ callstack-size cell_t } ;
|
||||
|
||||
: vm-field-offset ( field -- offset ) vm offset-of ; inline
|
||||
|
||||
|
|
Loading…
Reference in New Issue