コード例 #1
0
ファイル: TLSFAllocator.cpp プロジェクト: S-V/Lollipop
void* AllocatorTLSF_Impl::Reallocate(void* _Pointer, size_t _NumBytes)
{
	size_t oldBlockSize = _Pointer ? tlsf_block_size(_Pointer) : 0;
	void* p = tlsf_realloc(hPool, _Pointer, _NumBytes);
	if (p)
	{
		size_t blockSizeDiff = tlsf_block_size(p) - oldBlockSize;
		Stats.BytesAllocated += blockSizeDiff;
		Stats.BytesFree -= blockSizeDiff;
		Stats.PeakBytesAllocated = __max(Stats.PeakBytesAllocated, Stats.BytesAllocated);
	}

	return 0;
}
コード例 #2
0
ファイル: ps3_tlsf.c プロジェクト: StingerFG/movian
void free(void *ptr)
{
  if(ptr == NULL)
    return;
  const int bs = tlsf_block_size(ptr);

  if(bs >= 65536) {
    const int p = (intptr_t)ptr;

    const int np = ROUND_UP(p, 65536);
    int s = bs - (np - p);
    if(s > 0) {
      s &= ~0xffff;
      if(s > 0) {
#if 0
	tracelog(TRACE_NO_PROP, TRACE_DEBUG, "MEMORY",
	      "free(%p+%d) == page_free(0x%x+%d)",
	      ptr, bs, np, s);
#endif
#ifdef USE_VIRTUAL_MEM
	if(Lv2Syscall2(308, np, s))  // Invalidate
	  tracelog(TRACE_NO_PROP, TRACE_ERROR, "MEMORY",
		"Invalidate failed");
	if(Lv2Syscall2(310, np, s))  // Sync
	  tracelog(TRACE_NO_PROP, TRACE_ERROR, "MEMORY",
		"Sync failed");
#endif
      }
    }
  }
  hts_lwmutex_lock(&mutex);
  tlsf_free(gpool, ptr);
  hts_lwmutex_unlock(&mutex);
}
コード例 #3
0
ファイル: TLSFAllocator.cpp プロジェクト: S-V/Lollipop
void AllocatorTLSF_Impl::Deallocate(void* _Pointer)
{
	if (_Pointer)
	{
		size_t blockSize = tlsf_block_size(_Pointer);
		tlsf_free(hPool, _Pointer);
		Stats.NumAllocations--;
		Stats.BytesAllocated -= blockSize;
		Stats.BytesFree += blockSize;
	}
}
コード例 #4
0
ファイル: TLSFAllocator.cpp プロジェクト: S-V/Lollipop
void* AllocatorTLSF_Impl::Allocate(size_t _NumBytes, size_t _Alignment)
{
	void* p = tlsf_memalign(hPool, _Alignment, __max(_NumBytes, 1));
	if (p)
	{
		size_t blockSize = tlsf_block_size(p);
		Stats.NumAllocations++;
		Stats.BytesAllocated += blockSize;
		Stats.BytesFree -= blockSize;
		Stats.PeakBytesAllocated = __max(Stats.PeakBytesAllocated, Stats.BytesAllocated);
	}

	return p;
}
コード例 #5
0
ファイル: TLSFAllocator.cpp プロジェクト: S-V/Lollipop
size_t AllocatorTLSF_Impl::GetBlockSize(void* _Pointer)
{
	return tlsf_block_size(_Pointer);
}
コード例 #6
0
ファイル: ps3_tlsf.c プロジェクト: StingerFG/movian
size_t
arch_malloc_size(void *ptr)
{
  return tlsf_block_size(ptr);
}