@@ -42,7 +42,7 @@ namespace executorch {
42
42
namespace etdump {
43
43
namespace {
44
44
45
- executorch_flatbuffer_ScalarType_enum_t get_flatbuffer_scalar_type (
45
+ Result< executorch_flatbuffer_ScalarType_enum_t> get_flatbuffer_scalar_type (
46
46
executorch::aten::ScalarType tensor_scalar_type) {
47
47
switch (tensor_scalar_type) {
48
48
case executorch::aten::ScalarType::Byte:
@@ -66,21 +66,26 @@ executorch_flatbuffer_ScalarType_enum_t get_flatbuffer_scalar_type(
66
66
case executorch::aten::ScalarType::UInt16:
67
67
return executorch_flatbuffer_ScalarType_UINT16;
68
68
default :
69
- ET_CHECK_MSG (
69
+ ET_CHECK_OR_RETURN_ERROR (
70
70
0 ,
71
+ InvalidArgument,
71
72
" This ScalarType = %hhd is not yet supported in ETDump" ,
72
73
static_cast <char >(tensor_scalar_type));
73
74
}
74
75
}
75
76
76
- etdump_Tensor_ref_t add_tensor_entry (
77
+ Result< etdump_Tensor_ref_t> add_tensor_entry (
77
78
flatcc_builder_t * builder_,
78
79
const executorch::aten::Tensor& tensor,
79
80
long offset) {
80
81
etdump_Tensor_start (builder_);
81
82
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 ());
84
89
etdump_Tensor_sizes_start (builder_);
85
90
86
91
for (auto dim : tensor.sizes ()) {
@@ -390,18 +395,26 @@ Result<bool> ETDumpGen::log_intermediate_output_delegate_helper(
390
395
// Check the type of `output` then call the corresponding logging functions
391
396
if constexpr (std::is_same<T, Tensor>::value) {
392
397
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
+ }
394
403
395
404
etdump_Value_start (builder_);
396
405
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 () );
398
407
399
408
} else if constexpr (std::is_same<T, ArrayRef<Tensor>>::value) {
400
409
etdump_Tensor_vec_start (builder_);
401
410
for (size_t i = 0 ; i < output.size (); ++i) {
402
411
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 ());
405
418
}
406
419
etdump_Tensor_vec_ref_t tensor_vec_ref = etdump_Tensor_vec_end (builder_);
407
420
etdump_TensorList_ref_t tensor_list_ref =
@@ -538,7 +551,9 @@ void ETDumpGen::set_data_sink(DataSinkBase* data_sink) {
538
551
data_sink_ = data_sink;
539
552
}
540
553
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) {
542
557
check_ready_to_add_events ();
543
558
544
559
etdump_DebugEvent_start (builder_);
@@ -550,12 +565,15 @@ void ETDumpGen::log_evalue(const EValue& evalue, LoggedEValueType evalue_type) {
550
565
case Tag::Tensor: {
551
566
executorch::aten::Tensor tensor = evalue.toTensor ();
552
567
long offset = write_tensor_or_raise_error (tensor);
553
- etdump_Tensor_ref_t tensor_ref =
568
+ Result< etdump_Tensor_ref_t> tensor_ref =
554
569
add_tensor_entry (builder_, tensor, offset);
570
+ if (!tensor_ref.ok ()) {
571
+ return tensor_ref.error ();
572
+ }
555
573
556
574
etdump_Value_start (builder_);
557
575
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 () );
559
577
if (evalue_type == LoggedEValueType::kProgramOutput ) {
560
578
auto bool_ref = etdump_Bool_create (builder_, FLATBUFFERS_TRUE);
561
579
etdump_Value_output_add (builder_, bool_ref);
@@ -572,8 +590,12 @@ void ETDumpGen::log_evalue(const EValue& evalue, LoggedEValueType evalue_type) {
572
590
etdump_Tensor_vec_start (builder_);
573
591
for (size_t i = 0 ; i < tensors.size (); ++i) {
574
592
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 ());
577
599
}
578
600
etdump_Tensor_vec_ref_t tensor_vec_ref = etdump_Tensor_vec_end (builder_);
579
601
etdump_TensorList_ref_t tensor_list_ref =
@@ -645,6 +667,7 @@ void ETDumpGen::log_evalue(const EValue& evalue, LoggedEValueType evalue_type) {
645
667
etdump_RunData_events_push_start (builder_);
646
668
etdump_Event_debug_event_add (builder_, debug_event);
647
669
etdump_RunData_events_push_end (builder_);
670
+ return true ;
648
671
}
649
672
650
673
size_t ETDumpGen::get_num_blocks () {
0 commit comments