Checkpoint the party/runtime stack before share-program and malicious-mode work.
Ship the TLS mesh, composer, Beaver/Yao/leaf MPC, prep/online paths, apps, and docs so the tree is pushable before elevating share_expr, security_mode, and prep resume. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
695f8e84f7
commit
0d22946a0e
1835 changed files with 170291 additions and 2849 deletions
|
|
@ -6,6 +6,7 @@
|
|||
/// Trivially default-constructible slots are left uninitialized
|
||||
/// because evaluation overwrites every slot it is responsible for.
|
||||
///
|
||||
/// `bit` / `gf2`, `twobit` / `gf22`, and `nyble` / `gf24` slots are packed.
|
||||
/// `eval_interval` and recipe `eval_sequence` take the buffer by
|
||||
/// non-const reference. The returned iterable refers into it.
|
||||
/// @snippet evaluation/output_buffers.cpp output-buffer
|
||||
|
|
@ -314,11 +315,21 @@ auto make_output_buffer_for_interval(InputT from, InputT to)
|
|||
make_output_buffer_for_interval<DpfKey, Is>(from, to)...);
|
||||
}
|
||||
|
||||
/// @brief Buffer sized for the tree walk of `[from, to]` after `offset_x`.
|
||||
/// @details Matches `make_basic_interval_memoizer(dpf, from, to)`: leaf packing
|
||||
/// depends on alignment once a wildcard offset is ready.
|
||||
template <std::size_t I = 0,
|
||||
typename DpfKey,
|
||||
typename InputT>
|
||||
inline auto make_output_buffer_for_interval(const DpfKey &, InputT from, InputT to)
|
||||
inline auto make_output_buffer_for_interval(const DpfKey & dpf, InputT from, InputT to)
|
||||
{
|
||||
using input_type = typename DpfKey::input_type;
|
||||
if (dpf.offset_x.is_ready())
|
||||
{
|
||||
return make_output_buffer_for_interval<DpfKey, I>(
|
||||
dpf.offset_x(static_cast<input_type>(from)),
|
||||
dpf.offset_x(static_cast<input_type>(to)));
|
||||
}
|
||||
return make_output_buffer_for_interval<DpfKey, I>(from, to);
|
||||
}
|
||||
|
||||
|
|
@ -327,8 +338,15 @@ template <std::size_t I0,
|
|||
std::size_t ...Is,
|
||||
typename DpfKey,
|
||||
typename InputT>
|
||||
inline auto make_output_buffer_for_interval(const DpfKey &, InputT from, InputT to)
|
||||
inline auto make_output_buffer_for_interval(const DpfKey & dpf, InputT from, InputT to)
|
||||
{
|
||||
using input_type = typename DpfKey::input_type;
|
||||
if (dpf.offset_x.is_ready())
|
||||
{
|
||||
const auto tfrom = dpf.offset_x(static_cast<input_type>(from));
|
||||
const auto tto = dpf.offset_x(static_cast<input_type>(to));
|
||||
return make_output_buffer_for_interval<DpfKey, I0, I1, Is...>(tfrom, tto);
|
||||
}
|
||||
return make_output_buffer_for_interval<DpfKey, I0, I1, Is...>(from, to);
|
||||
}
|
||||
|
||||
|
|
@ -382,6 +400,7 @@ template <typename DpfKey,
|
|||
typename ReturnType = return_entire_node_tag_>
|
||||
auto make_output_buffer_for_subsequence(ForwardIterator begin, ForwardIterator end, ReturnType return_type = ReturnType{})
|
||||
{
|
||||
(void)return_type;
|
||||
using dpf_type = DpfKey;
|
||||
using output_type = typename DpfKey::concrete_output_type<I>;
|
||||
using buffer_elem = leaf_buffer_elem_t<DpfKey, output_type>;
|
||||
|
|
@ -447,6 +466,7 @@ template <typename DpfKey,
|
|||
typename ReturnType = return_entire_node_tag_>
|
||||
auto make_output_buffer_for_recipe_subsequence(const sequence_recipe & recipe, ReturnType return_type = ReturnType{})
|
||||
{
|
||||
(void)return_type;
|
||||
using dpf_type = DpfKey;
|
||||
using output_type = typename DpfKey::concrete_output_type<I>;
|
||||
using buffer_elem = leaf_buffer_elem_t<DpfKey, output_type>;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue