CodeAlloc comment updates

.
. attachment 483153 - Clarify block and chunk terminology and roles of CodeList and CodeAlloc
.

--HG--
extra : convert_revision : 3b0fb708c5c9e12f20897d6d7de8ff79ebc66d6d
This commit is contained in:
Edwin Smith 2010-10-14 07:10:00 -07:00
parent b8b2a58c9f
commit 7a56c25bf8

View File

@ -43,9 +43,9 @@
namespace nanojit namespace nanojit
{ {
/** /**
* CodeList is a linked list of non-contigous blocks of code. Clients use CodeList* * CodeList is a single block of code. The next field is used to
* to point to a list, and each CodeList instance tracks a single contiguous * form linked lists of non-contiguous blocks of code. Clients use CodeList*
* block of code. * to point to the first block in a list.
*/ */
class CodeList class CodeList
{ {
@ -95,13 +95,24 @@ namespace nanojit
}; };
/** /**
* Code memory allocator. * Code memory allocator is a long lived manager for many code blocks that
* Long lived manager for many code blocks,
* manages interaction with an underlying code memory allocator, * manages interaction with an underlying code memory allocator,
* setting page permissions, api's for allocating and freeing * sets page permissions. CodeAlloc provides APIs for allocating and freeing
* individual blocks of code memory (for methods, stubs, or compiled * individual blocks of code memory (for methods, stubs, or compiled
* traces), and also static functions for managing lists of allocated * traces), static functions for managing lists of allocated code, and has
* code. * a few pure virtual methods that embedders must implement to provide
* memory to the allocator.
*
* A "chunk" is a region of memory obtained from allocCodeChunk; it must
* be page aligned and be a multiple of the system page size.
*
* A "block" is a region of memory within a chunk. It can be arbitrarily
* sized and aligned, but is always contained within a single chunk.
* class CodeList represents one block; the members of CodeList track the
* extent of the block and support creating lists of blocks.
*
* The allocator coalesces free blocks when it can, in free(), but never
* coalesces chunks.
*/ */
class CodeAlloc class CodeAlloc
{ {
@ -142,9 +153,9 @@ namespace nanojit
CodeList* firstBlock(CodeList* term); CodeList* firstBlock(CodeList* term);
// //
// CodeAlloc's SPI. Implementations must be defined by nanojit embedder. // CodeAlloc's SPI (Service Provider Interface). Implementations must be
// allocation failures should cause an exception or longjmp; nanojit // defined by nanojit embedder. Allocation failures should cause an exception
// intentionally does not check for null. // or longjmp; nanojit intentionally does not check for null.
// //
/** allocate nbytes of memory to hold code. Never return null! */ /** allocate nbytes of memory to hold code. Never return null! */