summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/object_pool.h
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2021-02-06 02:38:22 -0300
committerGravatar ameerj2021-07-22 21:51:21 -0400
commitda8096e6e35af250dcc56a1af76b8a211df63a90 (patch)
tree5bac3a389afddd1ba23a9fb2ea410c077c28f3b8 /src/shader_recompiler/object_pool.h
parentshader: Add pools and rename files (diff)
downloadyuzu-da8096e6e35af250dcc56a1af76b8a211df63a90.tar.gz
yuzu-da8096e6e35af250dcc56a1af76b8a211df63a90.tar.xz
yuzu-da8096e6e35af250dcc56a1af76b8a211df63a90.zip
shader: Properly store phi on Inst
Diffstat (limited to 'src/shader_recompiler/object_pool.h')
-rw-r--r--src/shader_recompiler/object_pool.h11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/shader_recompiler/object_pool.h b/src/shader_recompiler/object_pool.h
index 7c65bbd92..a573add32 100644
--- a/src/shader_recompiler/object_pool.h
+++ b/src/shader_recompiler/object_pool.h
@@ -6,6 +6,7 @@
6 6
7#include <memory> 7#include <memory>
8#include <type_traits> 8#include <type_traits>
9#include <utility>
9 10
10namespace Shader { 11namespace Shader {
11 12
@@ -31,14 +32,12 @@ public:
31 32
32 void ReleaseContents() { 33 void ReleaseContents() {
33 Chunk* chunk{&root}; 34 Chunk* chunk{&root};
34 if (chunk) { 35 while (chunk) {
35 const size_t free_objects{chunk->free_objects}; 36 if (chunk->free_objects == chunk_size) {
36 if (free_objects == chunk_size) {
37 break; 37 break;
38 } 38 }
39 chunk->free_objects = chunk_size; 39 for (; chunk->free_objects < chunk_size; ++chunk->free_objects) {
40 for (size_t obj_id = free_objects; obj_id < chunk_size; ++obj_id) { 40 chunk->storage[chunk->free_objects].object.~T();
41 chunk->storage[obj_id].object.~T();
42 } 41 }
43 chunk = chunk->next.get(); 42 chunk = chunk->next.get();
44 } 43 }