diff options
author | Arne Juul <arnej@verizonmedia.com> | 2021-03-11 14:08:30 +0000 |
---|---|---|
committer | Arne Juul <arnej@verizonmedia.com> | 2021-03-11 14:08:30 +0000 |
commit | 78a0555c821f49c5a8fa0d1bce45b6483869f342 (patch) | |
tree | 4345d9fc8d9b2caa8fa3b45c6a1697d2f25d23f2 /eval | |
parent | 5e818f9b13585af3dd4e4e3572dc9e386b74ad67 (diff) |
typify on input cell meta
Diffstat (limited to 'eval')
-rw-r--r-- | eval/src/vespa/eval/instruction/mixed_map_function.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/eval/src/vespa/eval/instruction/mixed_map_function.cpp b/eval/src/vespa/eval/instruction/mixed_map_function.cpp index 2856539a703..22dfb15be20 100644 --- a/eval/src/vespa/eval/instruction/mixed_map_function.cpp +++ b/eval/src/vespa/eval/instruction/mixed_map_function.cpp @@ -28,9 +28,11 @@ void my_inplace_map_op(State &state, uint64_t param) { //----------------------------------------------------------------------------- struct MyGetFun { - template <typename CM, typename Fun> static auto invoke() { - using CT = CellValueType<CM::value.cell_type>; - return my_inplace_map_op<CT, Fun>; + template <typename ICM, typename Fun> static auto invoke() { + using ICT = CellValueType<ICM::value.cell_type>; + using OCT = CellValueType<ICM::value.map().cell_type>; + assert((std::is_same_v<ICT,OCT>)); + return my_inplace_map_op<OCT, Fun>; } }; @@ -52,8 +54,8 @@ MixedMapFunction::~MixedMapFunction() = default; Instruction MixedMapFunction::compile_self(const ValueBuilderFactory &, Stash &) const { - auto op = typify_invoke<2,MyTypify,MyGetFun>(result_type().cell_meta().limit().not_scalar(), - function()); + auto input_cell_meta = child().result_type().cell_meta().limit().not_scalar(); + auto op = typify_invoke<2,MyTypify,MyGetFun>(input_cell_meta, function()); static_assert(sizeof(uint64_t) == sizeof(function())); return Instruction(op, (uint64_t)(function())); } |