📄 memory.h
字号:
#include "types.h"#include "classes.h"#ifndef _MEMORY_H#define _MEMORY_H#define DEBUG_RCX_MEMORY 0extern const byte typeSize[];extern void memory_init ();extern void memory_add_region (byte *region, byte *end);extern void free_array (Object *objectRef);extern void deallocate (TWOBYTES *ptr, TWOBYTES size);extern Object *new_object_checked (const byte classIndex, byte *btAddr);extern Object *new_object_for_class (byte classIndex);extern Object *new_primitive_array (const byte primitiveType, STACKWORD length);extern Object *reallocate_array(Object *obj, STACKWORD newlen);extern Object *new_multi_array (byte elemType, byte totalDimensions, byte reqDimensions, STACKWORD *numElemPtr);extern void make_word (byte *ptr, byte aSize, STACKWORD *aWordPtr);extern void store_word (byte *ptr, byte aSize, STACKWORD aWord);extern STACKWORD get_word(byte *ptr, byte aSize);extern void zero_mem (TWOBYTES *ptr, TWOBYTES numWords);extern int getHeapSize();extern int getHeapFree();extern int getRegionAddress();#if DEBUG_RCX_MEMORYextern void scan_memory (TWOBYTES *numNodes, TWOBYTES *biggest, TWOBYTES *freeMem);#endif // DEBUG_RCX_MEMORY#define HEADER_SIZE (sizeof(Object))// Size of object header in 2-byte words#define NORM_OBJ_SIZE ((HEADER_SIZE + 1) / 2)#define get_array_element_ptr(ARR_,ESIZE_,IDX_) ((byte *) (ARR_) + (IDX_) * (ESIZE_) + HEADER_SIZE)#define array_start(OBJ_) ((byte *) (OBJ_) + HEADER_SIZE)#define jbyte_array(OBJ_) ((JBYTE *) array_start(OBJ_))#define word_array(OBJ_) ((STACKWORD *) array_start(OBJ_))#define ref_array(OBJ_) ((REFERENCE *) array_start(OBJ_))#define jint_array(OBJ_) ((JINT *) array_start(OBJ_))#define jshort_array(OBJ_) ((JSHORT *) array_start(OBJ_))#define jchar_array(OBJ_) ((JCHAR *) array_start(OBJ_))#define jlong_array(OBJ_) ((JLONG *) array_start(OBJ_))#define jfloat_array(OBJ_) ((JFLOAT *) array_start(OBJ_))#endif // _MEMORY_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -