@@ -42,7 +42,7 @@ namespace executorch {
4242namespace etdump {
4343namespace {
4444
45- executorch_flatbuffer_ScalarType_enum_t get_flatbuffer_scalar_type (
45+ Result< executorch_flatbuffer_ScalarType_enum_t> get_flatbuffer_scalar_type (
4646 executorch::aten::ScalarType tensor_scalar_type) {
4747 switch (tensor_scalar_type) {
4848 case executorch::aten::ScalarType::Byte:
@@ -66,21 +66,26 @@ executorch_flatbuffer_ScalarType_enum_t get_flatbuffer_scalar_type(
6666 case executorch::aten::ScalarType::UInt16:
6767 return executorch_flatbuffer_ScalarType_UINT16;
6868 default :
69- ET_CHECK_MSG (
69+ ET_CHECK_OR_RETURN_ERROR (
7070 0 ,
71+ InvalidArgument,
7172 " This ScalarType = %hhd is not yet supported in ETDump" ,
7273 static_cast <char >(tensor_scalar_type));
7374 }
7475}
7576
76- etdump_Tensor_ref_t add_tensor_entry (
77+ Result< etdump_Tensor_ref_t> add_tensor_entry (
7778 flatcc_builder_t * builder_,
7879 const executorch::aten::Tensor& tensor,
7980 long offset) {
8081 etdump_Tensor_start (builder_);
8182
82- etdump_Tensor_scalar_type_add (
83- builder_, get_flatbuffer_scalar_type (tensor.scalar_type ()));
83+ Result<executorch_flatbuffer_ScalarType_enum_t> scalar_type =
84+ get_flatbuffer_scalar_type (tensor.scalar_type ());
85+ if (!scalar_type.ok ()) {
86+ return scalar_type.error ();
87+ }
88+ etdump_Tensor_scalar_type_add (builder_, scalar_type.get ());
8489 etdump_Tensor_sizes_start (builder_);
8590
8691 for (auto dim : tensor.sizes ()) {
@@ -390,18 +395,26 @@ Result<bool> ETDumpGen::log_intermediate_output_delegate_helper(
390395 // Check the type of `output` then call the corresponding logging functions
391396 if constexpr (std::is_same<T, Tensor>::value) {
392397 long offset = write_tensor_or_raise_error (output);
393- etdump_Tensor_ref_t tensor_ref = add_tensor_entry (builder_, output, offset);
398+ Result<etdump_Tensor_ref_t> tensor_ref =
399+ add_tensor_entry (builder_, output, offset);
400+ if (!tensor_ref.ok ()) {
401+ return tensor_ref.error ();
402+ }
394403
395404 etdump_Value_start (builder_);
396405 etdump_Value_val_add (builder_, etdump_ValueType_Tensor);
397- etdump_Value_tensor_add (builder_, tensor_ref);
406+ etdump_Value_tensor_add (builder_, tensor_ref. get () );
398407
399408 } else if constexpr (std::is_same<T, ArrayRef<Tensor>>::value) {
400409 etdump_Tensor_vec_start (builder_);
401410 for (size_t i = 0 ; i < output.size (); ++i) {
402411 long offset = write_tensor_or_raise_error (output[i]);
403- etdump_Tensor_vec_push (
404- builder_, add_tensor_entry (builder_, output[i], offset));
412+ Result<etdump_Tensor_ref_t> tensor_ref =
413+ add_tensor_entry (builder_, output[i], offset);
414+ if (!tensor_ref.ok ()) {
415+ return tensor_ref.error ();
416+ }
417+ etdump_Tensor_vec_push (builder_, tensor_ref.get ());
405418 }
406419 etdump_Tensor_vec_ref_t tensor_vec_ref = etdump_Tensor_vec_end (builder_);
407420 etdump_TensorList_ref_t tensor_list_ref =
@@ -538,7 +551,9 @@ void ETDumpGen::set_data_sink(DataSinkBase* data_sink) {
538551 data_sink_ = data_sink;
539552}
540553
541- void ETDumpGen::log_evalue (const EValue& evalue, LoggedEValueType evalue_type) {
554+ Result<bool > ETDumpGen::log_evalue (
555+ const EValue& evalue,
556+ LoggedEValueType evalue_type) {
542557 check_ready_to_add_events ();
543558
544559 etdump_DebugEvent_start (builder_);
@@ -550,12 +565,15 @@ void ETDumpGen::log_evalue(const EValue& evalue, LoggedEValueType evalue_type) {
550565 case Tag::Tensor: {
551566 executorch::aten::Tensor tensor = evalue.toTensor ();
552567 long offset = write_tensor_or_raise_error (tensor);
553- etdump_Tensor_ref_t tensor_ref =
568+ Result< etdump_Tensor_ref_t> tensor_ref =
554569 add_tensor_entry (builder_, tensor, offset);
570+ if (!tensor_ref.ok ()) {
571+ return tensor_ref.error ();
572+ }
555573
556574 etdump_Value_start (builder_);
557575 etdump_Value_val_add (builder_, etdump_ValueType_Tensor);
558- etdump_Value_tensor_add (builder_, tensor_ref);
576+ etdump_Value_tensor_add (builder_, tensor_ref. get () );
559577 if (evalue_type == LoggedEValueType::kProgramOutput ) {
560578 auto bool_ref = etdump_Bool_create (builder_, FLATBUFFERS_TRUE);
561579 etdump_Value_output_add (builder_, bool_ref);
@@ -572,8 +590,12 @@ void ETDumpGen::log_evalue(const EValue& evalue, LoggedEValueType evalue_type) {
572590 etdump_Tensor_vec_start (builder_);
573591 for (size_t i = 0 ; i < tensors.size (); ++i) {
574592 long offset = write_tensor_or_raise_error (tensors[i]);
575- etdump_Tensor_vec_push (
576- builder_, add_tensor_entry (builder_, tensors[i], offset));
593+ Result<etdump_Tensor_ref_t> tensor_ref =
594+ add_tensor_entry (builder_, tensors[i], offset);
595+ if (!tensor_ref.ok ()) {
596+ return tensor_ref.error ();
597+ }
598+ etdump_Tensor_vec_push (builder_, tensor_ref.get ());
577599 }
578600 etdump_Tensor_vec_ref_t tensor_vec_ref = etdump_Tensor_vec_end (builder_);
579601 etdump_TensorList_ref_t tensor_list_ref =
@@ -645,6 +667,7 @@ void ETDumpGen::log_evalue(const EValue& evalue, LoggedEValueType evalue_type) {
645667 etdump_RunData_events_push_start (builder_);
646668 etdump_Event_debug_event_add (builder_, debug_event);
647669 etdump_RunData_events_push_end (builder_);
670+ return true ;
648671}
649672
650673size_t ETDumpGen::get_num_blocks () {
0 commit comments