TL2内存申请的管理
内存申请函数为TxAlloc,每个TM由一个tmalloc_t* allocPtr来记录申请的内存。tmalloc_t的定义如下:
typedef struct tmalloc {
long size;
long capacity;
void** elements;
} tmalloc_t;
每次申请内存后,size=size+1,并以size做索引将新申请的内存记录在elements中,即elements[size]=内存地址。如果TM commit失败,那么就借助elements释放申请的所有内存,如果执行成功,那么将size置0,elements的内容不变。
TL2内存释放的管理
内存释放函数为TxFree,每个TM由一个tmalloc_t* freePtr来记录释放的内存,记录的方式和申请内存的方式相同。如果TM abort,那么freePtr->size=0,因为内存本来就没有真正释放;如果TM成功,那么借助elements真正释放要free的内存。