@@ -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 ()) {
@@ -398,18 +403,26 @@ Result<bool> ETDumpGen::log_intermediate_output_delegate_helper(
398403 // Check the type of `output` then call the corresponding logging functions
399404 if constexpr (std::is_same<T, Tensor>::value) {
400405 long offset = write_tensor_or_raise_error (output);
401- etdump_Tensor_ref_t tensor_ref = add_tensor_entry (builder_, output, offset);
406+ Result<etdump_Tensor_ref_t> tensor_ref =
407+ add_tensor_entry (builder_, output, offset);
408+ if (!tensor_ref.ok ()) {
409+ return tensor_ref.error ();
410+ }
402411
403412 etdump_Value_start (builder_);
404413 etdump_Value_val_add (builder_, etdump_ValueType_Tensor);
405- etdump_Value_tensor_add (builder_, tensor_ref);
414+ etdump_Value_tensor_add (builder_, tensor_ref. get () );
406415
407416 } else if constexpr (std::is_same<T, ArrayRef<Tensor>>::value) {
408417 etdump_Tensor_vec_start (builder_);
409418 for (size_t i = 0 ; i < output.size (); ++i) {
410419 long offset = write_tensor_or_raise_error (output[i]);
411- etdump_Tensor_vec_push (
412- builder_, add_tensor_entry (builder_, output[i], offset));
420+ Result<etdump_Tensor_ref_t> tensor_ref =
421+ add_tensor_entry (builder_, output[i], offset);
422+ if (!tensor_ref.ok ()) {
423+ return tensor_ref.error ();
424+ }
425+ etdump_Tensor_vec_push (builder_, tensor_ref.get ());
413426 }
414427 etdump_Tensor_vec_ref_t tensor_vec_ref = etdump_Tensor_vec_end (builder_);
415428 etdump_TensorList_ref_t tensor_list_ref =
@@ -546,7 +559,9 @@ void ETDumpGen::set_data_sink(DataSinkBase* data_sink) {
546559 data_sink_ = data_sink;
547560}
548561
549- void ETDumpGen::log_evalue (const EValue& evalue, LoggedEValueType evalue_type) {
562+ Result<bool > ETDumpGen::log_evalue (
563+ const EValue& evalue,
564+ LoggedEValueType evalue_type) {
550565 check_ready_to_add_events ();
551566
552567 etdump_DebugEvent_start (builder_);
@@ -558,12 +573,15 @@ void ETDumpGen::log_evalue(const EValue& evalue, LoggedEValueType evalue_type) {
558573 case Tag::Tensor: {
559574 executorch::aten::Tensor tensor = evalue.toTensor ();
560575 long offset = write_tensor_or_raise_error (tensor);
561- etdump_Tensor_ref_t tensor_ref =
576+ Result< etdump_Tensor_ref_t> tensor_ref =
562577 add_tensor_entry (builder_, tensor, offset);
578+ if (!tensor_ref.ok ()) {
579+ return tensor_ref.error ();
580+ }
563581
564582 etdump_Value_start (builder_);
565583 etdump_Value_val_add (builder_, etdump_ValueType_Tensor);
566- etdump_Value_tensor_add (builder_, tensor_ref);
584+ etdump_Value_tensor_add (builder_, tensor_ref. get () );
567585 if (evalue_type == LoggedEValueType::kProgramOutput ) {
568586 auto bool_ref = etdump_Bool_create (builder_, FLATBUFFERS_TRUE);
569587 etdump_Value_output_add (builder_, bool_ref);
@@ -580,8 +598,12 @@ void ETDumpGen::log_evalue(const EValue& evalue, LoggedEValueType evalue_type) {
580598 etdump_Tensor_vec_start (builder_);
581599 for (size_t i = 0 ; i < tensors.size (); ++i) {
582600 long offset = write_tensor_or_raise_error (tensors[i]);
583- etdump_Tensor_vec_push (
584- builder_, add_tensor_entry (builder_, tensors[i], offset));
601+ Result<etdump_Tensor_ref_t> tensor_ref =
602+ add_tensor_entry (builder_, tensors[i], offset);
603+ if (!tensor_ref.ok ()) {
604+ return tensor_ref.error ();
605+ }
606+ etdump_Tensor_vec_push (builder_, tensor_ref.get ());
585607 }
586608 etdump_Tensor_vec_ref_t tensor_vec_ref = etdump_Tensor_vec_end (builder_);
587609 etdump_TensorList_ref_t tensor_list_ref =
@@ -653,6 +675,7 @@ void ETDumpGen::log_evalue(const EValue& evalue, LoggedEValueType evalue_type) {
653675 etdump_RunData_events_push_start (builder_);
654676 etdump_Event_debug_event_add (builder_, debug_event);
655677 etdump_RunData_events_push_end (builder_);
678+ return true ;
656679}
657680
658681size_t ETDumpGen::get_num_blocks () {
0 commit comments