| 38 | namespace port { |
| 39 | |
| 40 | string MaybeAbiDemangle(const char* name) { |
| 41 | #if defined(_MSC_VER) |
| 42 | std::unique_ptr<char> demangled{__unDName(nullptr, name, 0, std::malloc, |
| 43 | std::free, |
| 44 | static_cast<unsigned short>(0))}; |
| 45 | |
| 46 | return string(demangled.get() != nullptr ? demangled.get() : name); |
| 47 | #else |
| 48 | int status = 0; |
| 49 | std::unique_ptr<char, void (*)(void*)> res{ |
| 50 | abi::__cxa_demangle(name, nullptr, nullptr, &status), std::free}; |
| 51 | return (status == 0) ? res.get() : name; |
| 52 | #endif |
| 53 | } |
| 54 | |
| 55 | } // namespace port |
| 56 | } // namespace tensorflow |