summaryrefslogtreecommitdiff
path: root/thirdparty/embree-aarch64/common/sys/alloc.h
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/embree-aarch64/common/sys/alloc.h')
-rw-r--r--thirdparty/embree-aarch64/common/sys/alloc.h164
1 files changed, 0 insertions, 164 deletions
diff --git a/thirdparty/embree-aarch64/common/sys/alloc.h b/thirdparty/embree-aarch64/common/sys/alloc.h
deleted file mode 100644
index 5898ecda70..0000000000
--- a/thirdparty/embree-aarch64/common/sys/alloc.h
+++ /dev/null
@@ -1,164 +0,0 @@
-// Copyright 2009-2020 Intel Corporation
-// SPDX-License-Identifier: Apache-2.0
-
-#pragma once
-
-#include "platform.h"
-#include <vector>
-#include <set>
-
-namespace embree
-{
-#define ALIGNED_STRUCT_(align) \
- void* operator new(size_t size) { return alignedMalloc(size,align); } \
- void operator delete(void* ptr) { alignedFree(ptr); } \
- void* operator new[](size_t size) { return alignedMalloc(size,align); } \
- void operator delete[](void* ptr) { alignedFree(ptr); }
-
-#define ALIGNED_CLASS_(align) \
- public: \
- ALIGNED_STRUCT_(align) \
- private:
-
- /*! aligned allocation */
- void* alignedMalloc(size_t size, size_t align);
- void alignedFree(void* ptr);
-
- /*! allocator that performs aligned allocations */
- template<typename T, size_t alignment>
- struct aligned_allocator
- {
- typedef T value_type;
- typedef T* pointer;
- typedef const T* const_pointer;
- typedef T& reference;
- typedef const T& const_reference;
- typedef std::size_t size_type;
- typedef std::ptrdiff_t difference_type;
-
- __forceinline pointer allocate( size_type n ) {
- return (pointer) alignedMalloc(n*sizeof(value_type),alignment);
- }
-
- __forceinline void deallocate( pointer p, size_type n ) {
- return alignedFree(p);
- }
-
- __forceinline void construct( pointer p, const_reference val ) {
- new (p) T(val);
- }
-
- __forceinline void destroy( pointer p ) {
- p->~T();
- }
- };
-
- /*! allocates pages directly from OS */
- bool win_enable_selockmemoryprivilege(bool verbose);
- bool os_init(bool hugepages, bool verbose);
- void* os_malloc (size_t bytes, bool& hugepages);
- size_t os_shrink (void* ptr, size_t bytesNew, size_t bytesOld, bool hugepages);
- void os_free (void* ptr, size_t bytes, bool hugepages);
- void os_advise (void* ptr, size_t bytes);
-
- /*! allocator that performs OS allocations */
- template<typename T>
- struct os_allocator
- {
- typedef T value_type;
- typedef T* pointer;
- typedef const T* const_pointer;
- typedef T& reference;
- typedef const T& const_reference;
- typedef std::size_t size_type;
- typedef std::ptrdiff_t difference_type;
-
- __forceinline os_allocator ()
- : hugepages(false) {}
-
- __forceinline pointer allocate( size_type n ) {
- return (pointer) os_malloc(n*sizeof(value_type),hugepages);
- }
-
- __forceinline void deallocate( pointer p, size_type n ) {
- return os_free(p,n*sizeof(value_type),hugepages);
- }
-
- __forceinline void construct( pointer p, const_reference val ) {
- new (p) T(val);
- }
-
- __forceinline void destroy( pointer p ) {
- p->~T();
- }
-
- bool hugepages;
- };
-
- /*! allocator for IDs */
- template<typename T, size_t max_id>
- struct IDPool
- {
- typedef T value_type;
-
- IDPool ()
- : nextID(0) {}
-
- T allocate()
- {
- /* return ID from list */
- if (!IDs.empty())
- {
- T id = *IDs.begin();
- IDs.erase(IDs.begin());
- return id;
- }
-
- /* allocate new ID */
- else
- {
- if (size_t(nextID)+1 > max_id)
- return -1;
-
- return nextID++;
- }
- }
-
- /* adds an ID provided by the user */
- bool add(T id)
- {
- if (id > max_id)
- return false;
-
- /* check if ID should be in IDs set */
- if (id < nextID) {
- auto p = IDs.find(id);
- if (p == IDs.end()) return false;
- IDs.erase(p);
- return true;
- }
-
- /* otherwise increase ID set */
- else
- {
- for (T i=nextID; i<id; i++) {
- IDs.insert(i);
- }
- nextID = id+1;
- return true;
- }
- }
-
- void deallocate( T id )
- {
- assert(id < nextID);
- MAYBE_UNUSED auto done = IDs.insert(id).second;
- assert(done);
- }
-
- private:
- std::set<T> IDs; //!< stores deallocated IDs to be reused
- T nextID; //!< next ID to use when IDs vector is empty
- };
-}
-