Compare commits
No commits in common. "3e698b86eb396c8ce01dfb5b3be0210459bc58ab" and "4fb5649e0ecee113537c41861491b9ee54fea321" have entirely different histories.
3e698b86eb
...
4fb5649e0e
|
@ -1,5 +1,5 @@
|
||||||
cmake_minimum_required(VERSION 3.25)
|
cmake_minimum_required(VERSION 3.25)
|
||||||
project(blt-gp VERSION 0.0.114)
|
project(blt-gp VERSION 0.0.113)
|
||||||
|
|
||||||
include(CTest)
|
include(CTest)
|
||||||
|
|
||||||
|
@ -95,7 +95,6 @@ if (${BUILD_GP_TESTS})
|
||||||
|
|
||||||
blt_add_project(blt-stack tests/stack_tests.cpp test)
|
blt_add_project(blt-stack tests/stack_tests.cpp test)
|
||||||
blt_add_project(blt-eval tests/evaluation_tests.cpp test)
|
blt_add_project(blt-eval tests/evaluation_tests.cpp test)
|
||||||
blt_add_project(blt-order tests/order_tests.cpp test)
|
|
||||||
blt_add_project(blt-gp1 tests/gp_test_1.cpp test)
|
blt_add_project(blt-gp1 tests/gp_test_1.cpp test)
|
||||||
blt_add_project(blt-gp2 tests/gp_test_2.cpp test)
|
blt_add_project(blt-gp2 tests/gp_test_2.cpp test)
|
||||||
blt_add_project(blt-gp3 tests/gp_test_3.cpp test)
|
blt_add_project(blt-gp3 tests/gp_test_3.cpp test)
|
||||||
|
|
|
@ -78,7 +78,7 @@ namespace blt::gp
|
||||||
{
|
{
|
||||||
blt::size_t offset = 0;
|
blt::size_t offset = 0;
|
||||||
blt::size_t current_index = 0;
|
blt::size_t current_index = 0;
|
||||||
((offset += (current_index++ > index ? stack_allocator::aligned_size<detail::remove_cv_ref<Args>>() : 0)), ...);
|
((offset += (current_index++ < index ? stack_allocator::aligned_size<detail::remove_cv_ref<Args>>() : 0)), ...);
|
||||||
//BLT_INFO("offset %ld for index %ld", offset, index);
|
//BLT_INFO("offset %ld for index %ld", offset, index);
|
||||||
return offset;
|
return offset;
|
||||||
}
|
}
|
||||||
|
|
|
@ -183,8 +183,7 @@ namespace blt::gp
|
||||||
|
|
||||||
auto begin_point = static_cast<blt::ptrdiff_t>(program.get_random().get_size_t(0ul, ops_r.size()));
|
auto begin_point = static_cast<blt::ptrdiff_t>(program.get_random().get_size_t(0ul, ops_r.size()));
|
||||||
auto end_point = find_endpoint(program, ops_r, begin_point);
|
auto end_point = find_endpoint(program, ops_r, begin_point);
|
||||||
auto begin_operator_id = ops_r[begin_point].id;
|
const auto& type_info = program.get_operator_info(ops_r[begin_point].id);
|
||||||
const auto& type_info = program.get_operator_info(begin_operator_id);
|
|
||||||
|
|
||||||
auto begin_itr = ops_r.begin() + begin_point;
|
auto begin_itr = ops_r.begin() + begin_point;
|
||||||
auto end_itr = ops_r.begin() + end_point;
|
auto end_itr = ops_r.begin() + end_point;
|
||||||
|
@ -195,7 +194,6 @@ namespace blt::gp
|
||||||
auto& new_vals_r = new_tree.get_values();
|
auto& new_vals_r = new_tree.get_values();
|
||||||
|
|
||||||
stack_allocator stack_after;
|
stack_allocator stack_after;
|
||||||
stack_allocator new_vals_flip; // this is annoying.
|
|
||||||
transfer_backward(vals_r, stack_after, ops_r.end() - 1, end_itr - 1);
|
transfer_backward(vals_r, stack_after, ops_r.end() - 1, end_itr - 1);
|
||||||
for (auto it = end_itr - 1; it != begin_itr - 1; it--)
|
for (auto it = end_itr - 1; it != begin_itr - 1; it--)
|
||||||
{
|
{
|
||||||
|
@ -203,8 +201,7 @@ namespace blt::gp
|
||||||
vals_r.pop_bytes(static_cast<blt::ptrdiff_t>(stack_allocator::aligned_size(it->type_size)));
|
vals_r.pop_bytes(static_cast<blt::ptrdiff_t>(stack_allocator::aligned_size(it->type_size)));
|
||||||
}
|
}
|
||||||
|
|
||||||
transfer_backward(new_vals_r, new_vals_flip, new_ops_r.end() - 1, new_ops_r.begin() - 1);
|
transfer_backward(new_vals_r, vals_r, new_ops_r.end() - 1, new_ops_r.begin() - 1);
|
||||||
transfer_forward(new_vals_flip, vals_r, new_ops_r.begin(), new_ops_r.end());
|
|
||||||
transfer_forward(stack_after, vals_r, end_itr, ops_r.end());
|
transfer_forward(stack_after, vals_r, end_itr, ops_r.end());
|
||||||
|
|
||||||
auto before = begin_itr - 1;
|
auto before = begin_itr - 1;
|
||||||
|
@ -238,7 +235,6 @@ namespace blt::gp
|
||||||
std::cout << "This occurred at point " << begin_point << " ending at (old) " << end_point << "\n";
|
std::cout << "This occurred at point " << begin_point << " ending at (old) " << end_point << "\n";
|
||||||
std::cout << "our root type is " << ops_r[begin_point].id << " with size " << stack_allocator::aligned_size(ops_r[begin_point].type_size) << "\n";
|
std::cout << "our root type is " << ops_r[begin_point].id << " with size " << stack_allocator::aligned_size(ops_r[begin_point].type_size) << "\n";
|
||||||
std::cout << "now Named: " << (program.get_name(ops_r[begin_point].id) ? *program.get_name(ops_r[begin_point].id) : "Unnamed") << "\n";
|
std::cout << "now Named: " << (program.get_name(ops_r[begin_point].id) ? *program.get_name(ops_r[begin_point].id) : "Unnamed") << "\n";
|
||||||
std::cout << "Was named: " << (program.get_name(begin_operator_id) ? *program.get_name(begin_operator_id) : "Unnamed") << "\n";
|
|
||||||
std::cout << "Parent:" << std::endl;
|
std::cout << "Parent:" << std::endl;
|
||||||
p.print(program, std::cout, false, true);
|
p.print(program, std::cout, false, true);
|
||||||
std::cout << "Child:" << std::endl;
|
std::cout << "Child:" << std::endl;
|
||||||
|
@ -248,6 +244,7 @@ namespace blt::gp
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
throw std::exception();
|
throw std::exception();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return c;
|
return c;
|
||||||
|
|
|
@ -91,7 +91,7 @@ blt::gp::operation_t cross_large_type([](const large_18290& input, const float a
|
||||||
});
|
});
|
||||||
|
|
||||||
blt::gp::operation_t f_literal([]() {
|
blt::gp::operation_t f_literal([]() {
|
||||||
return 555.0f;
|
return 0.0f;
|
||||||
});
|
});
|
||||||
|
|
||||||
blt::gp::operation_t b_literal([]() {
|
blt::gp::operation_t b_literal([]() {
|
||||||
|
@ -110,8 +110,8 @@ void basic_tree()
|
||||||
tree.get_operations().push_back(make_container(sub.id));
|
tree.get_operations().push_back(make_container(sub.id));
|
||||||
tree.get_operations().push_back(make_value(type_system.get_type<float>()));
|
tree.get_operations().push_back(make_value(type_system.get_type<float>()));
|
||||||
tree.get_operations().push_back(make_value(type_system.get_type<float>()));
|
tree.get_operations().push_back(make_value(type_system.get_type<float>()));
|
||||||
tree.get_values().push(50.0f);
|
|
||||||
tree.get_values().push(120.0f);
|
tree.get_values().push(120.0f);
|
||||||
|
tree.get_values().push(50.0f);
|
||||||
|
|
||||||
auto val = tree.get_evaluation_value<float>(nullptr);
|
auto val = tree.get_evaluation_value<float>(nullptr);
|
||||||
BLT_TRACE(val);
|
BLT_TRACE(val);
|
||||||
|
@ -125,11 +125,11 @@ void large_cross_type_tree()
|
||||||
auto& vals = tree.get_values();
|
auto& vals = tree.get_values();
|
||||||
|
|
||||||
ops.push_back(make_container(cross_large_type.id));
|
ops.push_back(make_container(cross_large_type.id));
|
||||||
|
ops.push_back(make_container(large_literal.id));
|
||||||
ops.push_back(make_container(sub.id));
|
ops.push_back(make_container(sub.id));
|
||||||
ops.push_back(make_value(type_system.get_type<float>()));
|
ops.push_back(make_value(type_system.get_type<float>()));
|
||||||
ops.push_back(make_value(type_system.get_type<float>()));
|
ops.push_back(make_value(type_system.get_type<float>()));
|
||||||
ops.push_back(make_value(type_system.get_type<float>()));
|
ops.push_back(make_value(type_system.get_type<float>()));
|
||||||
ops.push_back(make_container(large_literal.id));
|
|
||||||
|
|
||||||
vals.push(50.0f);
|
vals.push(50.0f);
|
||||||
vals.push(120.0f);
|
vals.push(120.0f);
|
||||||
|
|
|
@ -1,115 +0,0 @@
|
||||||
/*
|
|
||||||
* <Short Description>
|
|
||||||
* Copyright (C) 2024 Brett Terpstra
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <blt/std/logging.h>
|
|
||||||
#include <blt/gp/tree.h>
|
|
||||||
#include <blt/gp/operations.h>
|
|
||||||
#include <blt/gp/generators.h>
|
|
||||||
#include <blt/gp/transformers.h>
|
|
||||||
#include <blt/gp/program.h>
|
|
||||||
#include <random>
|
|
||||||
|
|
||||||
const blt::u64 SEED = std::random_device()();
|
|
||||||
//const blt::u64 SEED = 3495535167;
|
|
||||||
blt::gp::random_t b_rand {SEED};
|
|
||||||
blt::gp::type_provider type_system;
|
|
||||||
|
|
||||||
struct context
|
|
||||||
{
|
|
||||||
blt::gp::gp_program* program;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct large_256
|
|
||||||
{
|
|
||||||
blt::u8 data[256];
|
|
||||||
};
|
|
||||||
|
|
||||||
struct large_2048
|
|
||||||
{
|
|
||||||
blt::u8 data[2048];
|
|
||||||
};
|
|
||||||
|
|
||||||
// not actually 4096 but will fill the whole page (4096)
|
|
||||||
struct large_4096
|
|
||||||
{
|
|
||||||
blt::u8 data[blt::gp::stack_allocator::page_size_no_block()];
|
|
||||||
};
|
|
||||||
|
|
||||||
struct large_6123
|
|
||||||
{
|
|
||||||
blt::u8 data[6123];
|
|
||||||
};
|
|
||||||
|
|
||||||
struct large_18290
|
|
||||||
{
|
|
||||||
blt::u8 data[18290];
|
|
||||||
};
|
|
||||||
|
|
||||||
blt::gp::operation_t basic_sub([](float a, float b, bool choice) {
|
|
||||||
if (choice)
|
|
||||||
{
|
|
||||||
BLT_TRACE("Choice Taken! a: %lf b: %lf", a, b);
|
|
||||||
return b - a;
|
|
||||||
}else
|
|
||||||
{
|
|
||||||
BLT_TRACE("Choice Not Taken! a: %lf b: %lf", a, b);
|
|
||||||
return a - b;
|
|
||||||
}
|
|
||||||
}, "sub");
|
|
||||||
|
|
||||||
blt::gp::operation_t basic_lit_f([]() {
|
|
||||||
return b_rand.choice() ? 5.0f : 10.0f;
|
|
||||||
});
|
|
||||||
|
|
||||||
blt::gp::operation_t basic_lit_b([]() {
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
void basic_test()
|
|
||||||
{
|
|
||||||
blt::gp::gp_program program{type_system, SEED};
|
|
||||||
|
|
||||||
blt::gp::operator_builder<context> builder{type_system};
|
|
||||||
|
|
||||||
builder.add_operator(basic_sub);
|
|
||||||
builder.add_operator(basic_lit_f, true);
|
|
||||||
builder.add_operator(basic_lit_b, true);
|
|
||||||
|
|
||||||
program.set_operations(builder.build());
|
|
||||||
|
|
||||||
blt::gp::grow_generator_t gen;
|
|
||||||
blt::gp::generator_arguments args{program, type_system.get_type<float>().id(), 1, 1};
|
|
||||||
auto tree = gen.generate(args);
|
|
||||||
|
|
||||||
context ctx{&program};
|
|
||||||
auto result = tree.get_evaluation_value<float>(&ctx);
|
|
||||||
BLT_TRACE(result);
|
|
||||||
BLT_ASSERT(result == -5.0f || result == 5.0f || result == 0.0f);
|
|
||||||
tree.print(program, std::cout, true, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
BLT_INFO("Starting with seed %ld", SEED);
|
|
||||||
|
|
||||||
type_system.register_type<float>();
|
|
||||||
type_system.register_type<bool>();
|
|
||||||
type_system.register_type<large_18290>();
|
|
||||||
|
|
||||||
basic_test();
|
|
||||||
}
|
|
|
@ -298,8 +298,8 @@ void test_basic()
|
||||||
BLT_INFO("Testing basic with stack");
|
BLT_INFO("Testing basic with stack");
|
||||||
{
|
{
|
||||||
blt::gp::stack_allocator stack;
|
blt::gp::stack_allocator stack;
|
||||||
stack.push(50.0f);
|
|
||||||
stack.push(10.0f);
|
stack.push(10.0f);
|
||||||
|
stack.push(50.0f);
|
||||||
BLT_TRACE_STREAM << stack.size() << "\n";
|
BLT_TRACE_STREAM << stack.size() << "\n";
|
||||||
basic_2.make_callable<blt::gp::detail::empty_t>()(nullptr, stack, stack);
|
basic_2.make_callable<blt::gp::detail::empty_t>()(nullptr, stack, stack);
|
||||||
BLT_TRACE_STREAM << stack.size() << "\n";
|
BLT_TRACE_STREAM << stack.size() << "\n";
|
||||||
|
@ -312,8 +312,8 @@ void test_basic()
|
||||||
{
|
{
|
||||||
blt::gp::stack_allocator stack;
|
blt::gp::stack_allocator stack;
|
||||||
stack.push(std::array<blt::u8, blt::gp::stack_allocator::page_size_no_block() - sizeof(float)>{});
|
stack.push(std::array<blt::u8, blt::gp::stack_allocator::page_size_no_block() - sizeof(float)>{});
|
||||||
stack.push(50.0f);
|
|
||||||
stack.push(10.0f);
|
stack.push(10.0f);
|
||||||
|
stack.push(50.0f);
|
||||||
auto size = stack.size();
|
auto size = stack.size();
|
||||||
BLT_TRACE_STREAM << size << "\n";
|
BLT_TRACE_STREAM << size << "\n";
|
||||||
BLT_ASSERT(size.blocks > 1 && "Stack doesn't have more than one block!");
|
BLT_ASSERT(size.blocks > 1 && "Stack doesn't have more than one block!");
|
||||||
|
@ -332,10 +332,10 @@ void test_mixed()
|
||||||
BLT_INFO("Testing mixed with stack");
|
BLT_INFO("Testing mixed with stack");
|
||||||
{
|
{
|
||||||
blt::gp::stack_allocator stack;
|
blt::gp::stack_allocator stack;
|
||||||
stack.push(50.0f);
|
|
||||||
stack.push(10.0f);
|
|
||||||
stack.push(true);
|
|
||||||
stack.push(false);
|
stack.push(false);
|
||||||
|
stack.push(true);
|
||||||
|
stack.push(10.0f);
|
||||||
|
stack.push(50.0f);
|
||||||
|
|
||||||
BLT_TRACE_STREAM << stack.size() << "\n";
|
BLT_TRACE_STREAM << stack.size() << "\n";
|
||||||
basic_mixed_4.make_callable<blt::gp::detail::empty_t>()(nullptr, stack, stack);
|
basic_mixed_4.make_callable<blt::gp::detail::empty_t>()(nullptr, stack, stack);
|
||||||
|
@ -349,10 +349,10 @@ void test_mixed()
|
||||||
{
|
{
|
||||||
blt::gp::stack_allocator stack;
|
blt::gp::stack_allocator stack;
|
||||||
stack.push(std::array<blt::u8, blt::gp::stack_allocator::page_size_no_block() - sizeof(float)>{});
|
stack.push(std::array<blt::u8, blt::gp::stack_allocator::page_size_no_block() - sizeof(float)>{});
|
||||||
stack.push(50.0f);
|
|
||||||
stack.push(10.0f);
|
|
||||||
stack.push(true);
|
|
||||||
stack.push(false);
|
stack.push(false);
|
||||||
|
stack.push(true);
|
||||||
|
stack.push(10.0f);
|
||||||
|
stack.push(50.0f);
|
||||||
auto size = stack.size();
|
auto size = stack.size();
|
||||||
BLT_TRACE_STREAM << size << "\n";
|
BLT_TRACE_STREAM << size << "\n";
|
||||||
BLT_ASSERT(size.blocks > 1 && "Stack doesn't have more than one block!");
|
BLT_ASSERT(size.blocks > 1 && "Stack doesn't have more than one block!");
|
||||||
|
@ -371,9 +371,9 @@ void test_large_256()
|
||||||
BLT_INFO("Testing large 256 with stack");
|
BLT_INFO("Testing large 256 with stack");
|
||||||
{
|
{
|
||||||
blt::gp::stack_allocator stack;
|
blt::gp::stack_allocator stack;
|
||||||
stack.push(base_256);
|
|
||||||
stack.push(691.0f);
|
|
||||||
stack.push(69.420f);
|
stack.push(69.420f);
|
||||||
|
stack.push(691.0f);
|
||||||
|
stack.push(base_256);
|
||||||
|
|
||||||
BLT_TRACE_STREAM << stack.size() << "\n";
|
BLT_TRACE_STREAM << stack.size() << "\n";
|
||||||
large_256_basic_3.make_callable<blt::gp::detail::empty_t>()(nullptr, stack, stack);
|
large_256_basic_3.make_callable<blt::gp::detail::empty_t>()(nullptr, stack, stack);
|
||||||
|
@ -387,9 +387,9 @@ void test_large_256()
|
||||||
{
|
{
|
||||||
blt::gp::stack_allocator stack;
|
blt::gp::stack_allocator stack;
|
||||||
stack.push(std::array<blt::u8, blt::gp::stack_allocator::page_size_no_block() - sizeof(large_256)>{});
|
stack.push(std::array<blt::u8, blt::gp::stack_allocator::page_size_no_block() - sizeof(large_256)>{});
|
||||||
stack.push(base_256);
|
|
||||||
stack.push(691.0f);
|
|
||||||
stack.push(69.420f);
|
stack.push(69.420f);
|
||||||
|
stack.push(691.0f);
|
||||||
|
stack.push(base_256);
|
||||||
auto size = stack.size();
|
auto size = stack.size();
|
||||||
BLT_TRACE_STREAM << size << "\n";
|
BLT_TRACE_STREAM << size << "\n";
|
||||||
BLT_ASSERT(size.blocks > 1 && "Stack doesn't have more than one block!");
|
BLT_ASSERT(size.blocks > 1 && "Stack doesn't have more than one block!");
|
||||||
|
@ -408,9 +408,9 @@ void test_large_4096()
|
||||||
BLT_INFO("Testing large 4096 with stack");
|
BLT_INFO("Testing large 4096 with stack");
|
||||||
{
|
{
|
||||||
blt::gp::stack_allocator stack;
|
blt::gp::stack_allocator stack;
|
||||||
stack.push(base_4096);
|
|
||||||
stack.push(33.0f);
|
|
||||||
stack.push(true);
|
stack.push(true);
|
||||||
|
stack.push(33.0f);
|
||||||
|
stack.push(base_4096);
|
||||||
BLT_TRACE_STREAM << stack.size() << "\n";
|
BLT_TRACE_STREAM << stack.size() << "\n";
|
||||||
large_4096_basic_3b.make_callable<blt::gp::detail::empty_t>()(nullptr, stack, stack);
|
large_4096_basic_3b.make_callable<blt::gp::detail::empty_t>()(nullptr, stack, stack);
|
||||||
BLT_TRACE_STREAM << stack.size() << "\n";
|
BLT_TRACE_STREAM << stack.size() << "\n";
|
||||||
|
@ -422,9 +422,9 @@ void test_large_4096()
|
||||||
BLT_INFO("Testing large 4096 with stack over boundary");
|
BLT_INFO("Testing large 4096 with stack over boundary");
|
||||||
{
|
{
|
||||||
blt::gp::stack_allocator stack;
|
blt::gp::stack_allocator stack;
|
||||||
stack.push(base_4096);
|
|
||||||
stack.push(33.0f);
|
|
||||||
stack.push(true);
|
stack.push(true);
|
||||||
|
stack.push(33.0f);
|
||||||
|
stack.push(base_4096);
|
||||||
auto size = stack.size();
|
auto size = stack.size();
|
||||||
BLT_TRACE_STREAM << size << "\n";
|
BLT_TRACE_STREAM << size << "\n";
|
||||||
BLT_ASSERT(size.blocks > 1 && "Stack doesn't have more than one block!");
|
BLT_ASSERT(size.blocks > 1 && "Stack doesn't have more than one block!");
|
||||||
|
@ -442,9 +442,9 @@ void test_large_18290()
|
||||||
BLT_INFO("Testing large 18290 with stack");
|
BLT_INFO("Testing large 18290 with stack");
|
||||||
{
|
{
|
||||||
blt::gp::stack_allocator stack;
|
blt::gp::stack_allocator stack;
|
||||||
stack.push(base_18290);
|
|
||||||
stack.push(-2543.0f);
|
|
||||||
stack.push(true);
|
stack.push(true);
|
||||||
|
stack.push(-2543.0f);
|
||||||
|
stack.push(base_18290);
|
||||||
BLT_TRACE_STREAM << stack.size() << "\n";
|
BLT_TRACE_STREAM << stack.size() << "\n";
|
||||||
large_18290_basic_3b.make_callable<blt::gp::detail::empty_t>()(nullptr, stack, stack);
|
large_18290_basic_3b.make_callable<blt::gp::detail::empty_t>()(nullptr, stack, stack);
|
||||||
BLT_TRACE_STREAM << stack.size() << "\n";
|
BLT_TRACE_STREAM << stack.size() << "\n";
|
||||||
|
@ -457,9 +457,9 @@ void test_large_18290()
|
||||||
{
|
{
|
||||||
blt::gp::stack_allocator stack;
|
blt::gp::stack_allocator stack;
|
||||||
stack.push(std::array<blt::u8, 20480 - 18290 - blt::gp::stack_allocator::block_size()>());
|
stack.push(std::array<blt::u8, 20480 - 18290 - blt::gp::stack_allocator::block_size()>());
|
||||||
stack.push(base_18290);
|
|
||||||
stack.push(-2543.0f);
|
|
||||||
stack.push(true);
|
stack.push(true);
|
||||||
|
stack.push(-2543.0f);
|
||||||
|
stack.push(base_18290);
|
||||||
auto size = stack.size();
|
auto size = stack.size();
|
||||||
BLT_TRACE_STREAM << size << "\n";
|
BLT_TRACE_STREAM << size << "\n";
|
||||||
BLT_ASSERT(size.blocks > 1 && "Stack doesn't have more than one block!");
|
BLT_ASSERT(size.blocks > 1 && "Stack doesn't have more than one block!");
|
||||||
|
@ -474,15 +474,15 @@ void test_large_18290()
|
||||||
BLT_INFO("Testing large 18290 with stack over multiple boundaries");
|
BLT_INFO("Testing large 18290 with stack over multiple boundaries");
|
||||||
{
|
{
|
||||||
blt::gp::stack_allocator stack;
|
blt::gp::stack_allocator stack;
|
||||||
stack.push(base_18290);
|
stack.push(true);
|
||||||
stack.push(-2543.0f);
|
stack.push(-2543.0f);
|
||||||
stack.push(true);
|
stack.push(true);
|
||||||
|
stack.push(-2543.0f);
|
||||||
|
stack.push(base_18290);
|
||||||
auto size = stack.size();
|
auto size = stack.size();
|
||||||
BLT_TRACE_STREAM << size << "\n";
|
BLT_TRACE_STREAM << size << "\n";
|
||||||
large_18290_basic_3b.make_callable<blt::gp::detail::empty_t>()(nullptr, stack, stack);
|
large_18290_basic_3b.make_callable<blt::gp::detail::empty_t>()(nullptr, stack, stack);
|
||||||
BLT_TRACE_STREAM << stack.size() << "\n";
|
BLT_TRACE_STREAM << stack.size() << "\n";
|
||||||
stack.push(-2543.0f);
|
|
||||||
stack.push(true);
|
|
||||||
BLT_TRACE_STREAM << stack.size() << "\n";
|
BLT_TRACE_STREAM << stack.size() << "\n";
|
||||||
large_18290_basic_3b.make_callable<blt::gp::detail::empty_t>()(nullptr, stack, stack);
|
large_18290_basic_3b.make_callable<blt::gp::detail::empty_t>()(nullptr, stack, stack);
|
||||||
BLT_TRACE_STREAM << stack.size() << "\n";
|
BLT_TRACE_STREAM << stack.size() << "\n";
|
||||||
|
|
Loading…
Reference in New Issue