2010-01-13 00:08:18 -05:00
|
|
|
! Copyright (C) 2009, 2010 Phil Dawes, Slava Pestov.
|
2009-08-20 14:39:40 -04:00
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2011-11-02 15:54:31 -04:00
|
|
|
USING: classes.struct alien.c-types alien.syntax kernel.private ;
|
2009-08-20 14:39:40 -04:00
|
|
|
IN: vm
|
|
|
|
|
2015-07-20 04:01:01 -04:00
|
|
|
TYPEDEF: uintptr_t cell_t
|
2009-12-21 21:42:49 -05:00
|
|
|
|
2015-08-14 17:20:21 -04:00
|
|
|
STRUCT: segment
|
|
|
|
{ start cell_t }
|
|
|
|
{ size cell_t }
|
|
|
|
{ end cell_t } ;
|
|
|
|
|
2009-12-21 21:42:49 -05:00
|
|
|
STRUCT: context
|
2015-08-14 17:20:21 -04:00
|
|
|
{ callstack-top cell_t }
|
|
|
|
{ callstack-bottom cell_t }
|
|
|
|
{ datastack cell_t }
|
|
|
|
{ retainstack cell_t }
|
|
|
|
{ callstack-save cell_t }
|
|
|
|
{ datastack-seg segment* }
|
|
|
|
{ retainstack-seg segment* }
|
|
|
|
{ callstack-seg segment* }
|
|
|
|
{ context-objects cell_t[context-object-count] } ;
|
2009-12-21 21:42:49 -05:00
|
|
|
|
2009-09-23 20:42:00 -04:00
|
|
|
STRUCT: zone
|
2015-08-14 17:20:21 -04:00
|
|
|
{ here cell_t }
|
|
|
|
{ start cell_t }
|
|
|
|
{ end cell_t }
|
|
|
|
{ size cell_t } ;
|
2009-08-20 15:20:35 -04:00
|
|
|
|
2016-04-22 07:03:51 -04:00
|
|
|
! dispatch-statistics should be kept in sync with:
|
|
|
|
! vm/dispatch.hpp
|
|
|
|
STRUCT: dispatch-statistics
|
|
|
|
{ megamorphic-cache-hits cell_t }
|
|
|
|
{ megamorphic-cache-misses cell_t }
|
|
|
|
|
|
|
|
{ cold-call-to-ic-transitions cell_t }
|
|
|
|
{ ic-to-pic-transitions cell_t }
|
|
|
|
{ pic-to-mega-transitions cell_t }
|
|
|
|
|
|
|
|
{ pic-tag-count cell_t }
|
|
|
|
{ pic-tuple-count cell_t } ;
|
|
|
|
|
2009-09-23 20:42:00 -04:00
|
|
|
STRUCT: vm
|
2015-08-14 17:20:21 -04:00
|
|
|
{ ctx context* }
|
|
|
|
{ spare-ctx context* }
|
|
|
|
{ nursery zone }
|
|
|
|
{ cards-offset cell_t }
|
|
|
|
{ decks-offset cell_t }
|
|
|
|
{ signal-handler-addr cell_t }
|
|
|
|
{ faulting? cell_t }
|
|
|
|
{ special-objects cell_t[special-object-count] }
|
|
|
|
{ thread void* }
|
|
|
|
{ datastack-size cell_t }
|
|
|
|
{ retainstack-size cell_t }
|
|
|
|
{ callstack-size cell_t } ;
|
2009-08-20 14:39:40 -04:00
|
|
|
|
2016-10-19 03:05:15 -04:00
|
|
|
CONSTANT: COLLECT-NURSERY-OP 0
|
|
|
|
CONSTANT: COLLECT-AGING-OP 1
|
|
|
|
CONSTANT: COLLECT-TO-TENURED-OP 2
|
|
|
|
CONSTANT: COLLECT-FULL-OP 3
|
|
|
|
CONSTANT: COLLECT-COMPACT-OP 4
|
|
|
|
CONSTANT: COLLECT-GROWING-DATA-HEAP-OP 5
|
2009-10-27 04:32:28 -04:00
|
|
|
|
|
|
|
STRUCT: copying-sizes
|
2015-07-20 04:01:01 -04:00
|
|
|
{ size cell_t }
|
|
|
|
{ occupied cell_t }
|
|
|
|
{ free cell_t } ;
|
2009-10-27 04:32:28 -04:00
|
|
|
|
|
|
|
STRUCT: mark-sweep-sizes
|
2015-07-20 04:01:01 -04:00
|
|
|
{ size cell_t }
|
|
|
|
{ occupied cell_t }
|
|
|
|
{ total-free cell_t }
|
|
|
|
{ contiguous-free cell_t }
|
|
|
|
{ free-block-count cell_t } ;
|
2009-10-27 04:32:28 -04:00
|
|
|
|
|
|
|
STRUCT: data-heap-room
|
|
|
|
{ nursery copying-sizes }
|
|
|
|
{ aging copying-sizes }
|
|
|
|
{ tenured mark-sweep-sizes }
|
2015-07-20 04:01:01 -04:00
|
|
|
{ cards cell_t }
|
|
|
|
{ decks cell_t }
|
|
|
|
{ mark-stack cell_t } ;
|
2009-10-27 22:31:28 -04:00
|
|
|
|
2016-10-19 04:31:53 -04:00
|
|
|
CONSTANT: PHASE-CARD-SCAN 0
|
|
|
|
CONSTANT: PHASE-CODE-SCAN 1
|
|
|
|
CONSTANT: PHASE-DATA-SWEEP 2
|
|
|
|
CONSTANT: PHASE-CODE-SWEEP 3
|
|
|
|
CONSTANT: PHASE-DATA-COMPACTION 4
|
2016-10-20 01:46:21 -04:00
|
|
|
CONSTANT: PHASE-MARKING 5
|
2016-10-19 04:31:53 -04:00
|
|
|
|
|
|
|
! gc-event should be kept in sync with:
|
|
|
|
! vm/gc.hpp
|
2009-10-27 22:31:28 -04:00
|
|
|
STRUCT: gc-event
|
2016-10-19 04:31:53 -04:00
|
|
|
{ op uint }
|
|
|
|
{ data-heap-before data-heap-room }
|
|
|
|
{ code-heap-before mark-sweep-sizes }
|
|
|
|
{ data-heap-after data-heap-room }
|
|
|
|
{ code-heap-after mark-sweep-sizes }
|
|
|
|
{ cards-scanned cell_t }
|
|
|
|
{ decks-scanned cell_t }
|
|
|
|
{ code-blocks-scanned cell_t }
|
|
|
|
{ start-time ulonglong }
|
|
|
|
{ total-time cell_t }
|
2016-10-20 01:46:21 -04:00
|
|
|
{ times cell_t[6] }
|
2016-10-19 04:31:53 -04:00
|
|
|
{ temp-time ulonglong } ;
|
2009-11-05 02:07:59 -05:00
|
|
|
|
2014-08-25 22:44:03 -04:00
|
|
|
! gc-info should be kept in sync with:
|
|
|
|
! vm/gc_info.hpp
|
2014-08-25 13:34:46 -04:00
|
|
|
STRUCT: gc-info
|
|
|
|
{ gc-root-count uint read-only }
|
|
|
|
{ derived-root-count uint read-only }
|
|
|
|
{ return-address-count uint read-only } ;
|
2016-12-09 05:53:59 -05:00
|
|
|
|
|
|
|
CONSTANT: CODE-BLOCK-UNOPTIMIZED 0
|
|
|
|
CONSTANT: CODE-BLOCK-OPTIMIZED 1
|
|
|
|
CONSTANT: CODE-BLOCK-PIC 2
|