fix the stupid stack issue
parent
6eea15ae26
commit
3e698b86eb
|
@ -1,5 +1,5 @@
|
||||||
cmake_minimum_required(VERSION 3.25)
|
cmake_minimum_required(VERSION 3.25)
|
||||||
project(blt-gp VERSION 0.0.113)
|
project(blt-gp VERSION 0.0.114)
|
||||||
|
|
||||||
include(CTest)
|
include(CTest)
|
||||||
|
|
||||||
|
|
|
@ -183,7 +183,8 @@ 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);
|
||||||
const auto& type_info = program.get_operator_info(ops_r[begin_point].id);
|
auto begin_operator_id = 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;
|
||||||
|
@ -194,6 +195,7 @@ 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--)
|
||||||
{
|
{
|
||||||
|
@ -201,7 +203,8 @@ 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, vals_r, new_ops_r.end() - 1, new_ops_r.begin() - 1);
|
transfer_backward(new_vals_r, new_vals_flip, 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;
|
||||||
|
@ -235,6 +238,7 @@ 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;
|
||||||
|
@ -244,7 +248,6 @@ namespace blt::gp
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
throw std::exception();
|
throw std::exception();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return c;
|
return c;
|
||||||
|
|
Loading…
Reference in New Issue