mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
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:
parent
b8b2a58c9f
commit
7a56c25bf8
@ -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! */
|
||||||
|
Loading…
Reference in New Issue
Block a user