MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / swap

Method swap

tensorflow/core/framework/variant.h:668–724  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

666}
667
668inline void Variant::swap(Variant& other) noexcept {
669 if (is_empty()) {
670 if (other.IsInlineValue()) {
671 value_.ResetMemory();
672 value_.inline_value = std::move(other.value_.inline_value);
673 other.value_.ResetMemory();
674 other.value_.heap_value = HeapValue();
675 is_inline_ = true;
676 other.is_inline_ = false;
677 } else {
678 value_.ResetMemory();
679 value_.heap_value = std::move(other.value_.heap_value);
680 other.value_.ResetMemory();
681 other.value_.heap_value = HeapValue();
682 is_inline_ = false;
683 other.is_inline_ = false;
684 }
685 } else if (other.is_empty()) {
686 if (IsInlineValue()) {
687 other.value_.ResetMemory();
688 other.value_.inline_value = std::move(value_.inline_value);
689 value_.ResetMemory();
690 value_.heap_value = HeapValue();
691 other.is_inline_ = true;
692 is_inline_ = false;
693 } else {
694 other.value_.ResetMemory();
695 other.value_.heap_value = std::move(value_.heap_value);
696 value_.ResetMemory();
697 value_.heap_value = HeapValue();
698 other.is_inline_ = false;
699 is_inline_ = false;
700 }
701 } else { // Both Variants have values.
702 if (other.IsInlineValue() && IsInlineValue()) {
703 std::swap(value_.inline_value, other.value_.inline_value);
704 } else if (!other.IsInlineValue() && !IsInlineValue()) {
705 std::swap(value_.heap_value, other.value_.heap_value);
706 } else if (other.IsInlineValue() && !IsInlineValue()) {
707 HeapValue v = std::move(value_.heap_value);
708 value_.ResetMemory();
709 value_.inline_value = std::move(other.value_.inline_value);
710 other.value_.ResetMemory();
711 other.value_.heap_value = std::move(v);
712 is_inline_ = true;
713 other.is_inline_ = false;
714 } else { // !other.IsInlineValue() && IsInlineValue()
715 HeapValue v = std::move(other.value_.heap_value);
716 other.value_.ResetMemory();
717 other.value_.inline_value = std::move(value_.inline_value);
718 value_.ResetMemory();
719 value_.heap_value = std::move(v);
720 is_inline_ = false;
721 other.is_inline_ = true;
722 }
723 }
724}
725

Callers 15

RemoveUnusedNodesFunction · 0.45
UpdateServerDefMethod · 0.45
GenerateEntryListMethod · 0.45
ClearDecrefCacheFunction · 0.45
TEST_FFunction · 0.45
RedoAllDelegatesMethod · 0.45
ConsumeTokenMethod · 0.45
RunMethod · 0.45
RunMethod · 0.45
ReduceGenericFunction · 0.45
DecodeMethod · 0.45
ExtractMethod · 0.45

Calls 3

IsInlineValueMethod · 0.80
ResetMemoryMethod · 0.80
is_emptyMethod · 0.45

Tested by 3

TEST_FFunction · 0.36
BroadcastableDimsMethod · 0.36
TestFastParseFunction · 0.36