Co to znaczy?
Kompilator Swift oznacza argumenty funkcji z wielu powodów, związanych głównie z wewnętrznymi optymalizacjami. Na twoje pytanie skoncentrujemy się na manglerze, ponieważ to właśnie przyczynia się do twojego pretty stack trace i drukarki węzła. Począwszy od chwili tego stanowiska, mangler specjalizacja funkcja ma 6 znaków można go zastosować do argumentu:
Martwe
argument jest nieużywany w ciele funkcji i może być usunięta w przepustka eliminująca martwą kłótnię.
Zamknięcie
Argument jest zamknięcie i może wymagać dalszego przekręcona/demangling.
Stała
Argument jest stała.
Należący do Gwarantowanych
dzwoniący własność transfery argumentów własności do odbierającym. Argument ma zatem silne odniesienie z nim związane [wywołującego] i gwarantuje, że przeżyje wywołanie, więc kompilator zezwala wywołującemu na przeniesienie transferu, a zamiast tego zachowuje się agregacja.
SROA
Scalar Replacement of Aggregates wprost powinny zoptymalizować ten argument.
Wyjść do wartości
Parametr cechował inout ale wywoływany w rzeczywistości nie mutować go.
Drukarka Węzeł AST dodaje jeszcze jeden Oznacz
Dla wszystkich zamiarów i celów my tylko dbają o Dead
, Owned to Guaranteed
i Exploded
.
Jedynym, który nadal może wydawać się dziwny, jest Exploded
. Explosion jest konstruktem optymalizacyjnym używanym przez kompilator Swift do określenia strategii rozpakowywania wartości z małych struktur i wyliczeń do rejestrów. Tak więc, kiedy drukarka węzłowa mówi, że wartość to Exploded
, oznacza to, że już rozpakowała ją do rejestrów przed wywołaniem.
ma znaczenie dla celów debugowania?
Nie.
Podobne pytanie: http://stackoverflow.com/questions/31397116/what-does-arg-exploded-mean-in-swift-crash-log – JAL