parsav  Diff

Differences From Artifact [7e2b478eaf]:

To Artifact [05a21ff4d9]:


   207    207   	self.sz = sz
   208    208   	self.debris = [&m.pool](b)
   209    209   	self.debris.storage = nil
   210    210   	return self
   211    211   end
   212    212   
   213    213   terra m.pool:free(): {}
   214         -lib.io.fmt('DRAINING POOL %p\n',self.storage)
   215    214   	if self.storage == nil then return end
   216    215   	if self.debris.storage ~= nil then self.debris:free() end
   217    216   	m.heapf(self.debris) -- storage + debris field allocated in one block
   218    217   	self.storage = nil
   219    218   	self.cursor = nil
   220    219   	self.sz = 0
   221    220   	self.debris = nil
................................................................................
   224    223   terra m.pool:clear()
   225    224   	if self.debris.storage ~= nil then self.debris:free() end
   226    225   	self.cursor = self.storage
   227    226   	return self
   228    227   end
   229    228   
   230    229   terra m.pool:alloc_bytes(sz: intptr): &opaque
   231         -	var space = self.sz - ([&uint8](self.cursor) - [&uint8](self.storage))
   232         -lib.io.fmt('%p / %p @ allocating %llu bytes in %llu of space\n',self.storage,self.cursor,sz,space)
          230  +	var space: intptr = self.sz - ([&uint8](self.cursor) - [&uint8](self.storage))
   233    231   	if space < sz then
   234         -lib.dbg('reserving more space')
   235         -		self:cue(space + sz + 256) end
          232  +		self:cue(self.sz + sz + 256) end
   236    233   	var ptr = self.cursor
   237    234   	self.cursor = [&opaque]([&uint8](self.cursor) + sz)
   238    235   	return ptr
   239    236   end
   240    237   
   241    238   terra m.pool:realloc_bytes(oldptr: &opaque, oldsz: intptr, newsz: intptr): &opaque
   242         -	var space = self.sz - ([&uint8](self.cursor) - [&uint8](self.storage))
          239  +	var space: intptr = self.sz - ([&uint8](self.cursor) - [&uint8](self.storage))
   243    240   	var cur = [&uint8](self.cursor)
   244    241   	if cur - [&uint8](oldptr) == oldsz and newsz - oldsz < space then
   245    242   		lib.dbg('moving pool cursor')
   246    243   		cur = cur + (newsz - oldsz)
   247    244   		self.cursor = [&opaque](cur)
   248    245   		return oldptr
   249    246   	else