Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2017-05-11

| Channels | #divine index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
01:50 ilbot3 joined #divine
01:50 Topic for #divine is now DIVINE | http://divine.fi.muni.cz | http://irclog.perlgeek.de/divine/
04:23 mornfall yaqwsx: sry, budeš muset vyrobit nový patch
06:40 xstill_ yaqwsx: gratuluji k pozici 5. prográmátora DIVINE podle počtu patchů, další cíl za 83 patchů :-p
07:26 yaqwsx xstill_: Děkuji, děkuji!
07:26 yaqwsx Teď by mě ale zajímalo, proč Clang vygeneroval ten zvláštní prototyp funkce
07:27 xstill_ a z čeho to vygeneroval?
07:28 yaqwsx Fault handler má mít prototyp: void temporaryFaultHandler( _VM_Fault, _VM_Frame *, void (*)(), ... )  a mÄ›l prototyp void temporaryFaultHandler( _VM_Fault, _VM_Frame, void (*)(), ... ). V ten moment jsem v LLVM naÅ¡el hlavičku void @_ZN6__dios21temporaryFaultHandlerE9_VM_Fault9_VM_FramePFvvEz(i32, void ()* nocapture readnone %.coerce0, %struct._VM_Frame* nocapture readnone %.coerce1, void ()* nocapture readnone, ...)
07:29 yaqwsx Přibyl tam jeden argument
07:34 mornfall yaqwsx: aggregate parametr se rozbalil?
07:35 mornfall yaqwsx: _VM_Frame se skládá z void ()* a _VM_Frame*
07:35 mornfall (to jsou ty .coerce)
07:36 yaqwsx mornfall: Ok, tak pak už je to jasné...
07:36 mornfall intuitivní to pravda moc není
07:41 xstill joined #divine
11:41 yaqwsx mornfall: Právě jsem pushnul opravené patche ke mě na Arke
12:03 yaqwsx Jinak ještě k LLVM - to je součástí Cčkové standardu, že struktury předávané hodnotou se rozbalují?
12:06 mornfall to skoro určitě ne, ale možná to specifikuje calling convention
12:07 yaqwsx Žil jsem totiž v domění, že se to stejně předá pointerem na kopii. A prot omě to překvapuje.
12:09 mornfall no to určitě ne
12:09 mornfall (to se neděje v podstatě nikdy)
12:09 mornfall typicky se to předá pamětí, ale ukazatel na tu paměť se nikam neukládá
12:09 mornfall prostě to přijde v pořadí a zabere to nějakou velikost (tzn. tuple na zásobníku)
12:10 mornfall ale amd64 rádo cpe argumenty do registrů a pro některý struktury to jde lehce rozbít na skaláry a nacpat do těch registrů
12:10 mornfall takže to by mohl být důvod proč se to tady stalo
12:10 yaqwsx Ok, takže struktura se nacpe do registrů + zbytek na zásobník
12:10 yaqwsx Ok, tak dává smysl, že to LLVM přeloží rozbaleně.
12:11 yaqwsx Ok, zase o něco vzdělanější. Díky
12:11 mornfall no ne, takhle se to nacpe do registrů asi všechno, nemělo to tak moc parametrů
12:11 yaqwsx mornfall: Měl jsem na mysli obecný případ.
12:12 mornfall obecně to záleží na tom kolikátá ta struktura v tom seznamu bude a kolik zbývá volných registrů
12:12 mornfall http://chamilo2.grenet.fr/inp/courses/ENSIMAG3MM1LDB/document/doc_abi_ia64.pdf
12:12 mornfall 3.2 function calling sequence
12:13 mornfall klasifikace struktur začíná na str. 18 úplně dole
12:15 yaqwsx Hm, ok ale hypotetická otázka - LLVM by mělo být platformově nezávislé. Takže hypoteticky může existovat platforma, která definuje calling konvence jinak (třeba předávání struktur pointerem). Potom mi připadá zvláštní, že si LLVM může rovnou dovolit strukturu rozbalit do argumentů.
12:15 yaqwsx Čekal bych, že se toto bude dít až při loweringu na cílový ASM
12:16 mornfall no to je právě složitější
12:16 mornfall některý platform-dependent věci řeší už frontend
12:16 xstill no on bitcode není platformě nezávislý úplně, LLVM musí vědět na jakou platformu to pojede
12:17 xstill a volací konvence jsou u funkcí specifikované
12:20 yaqwsx Ah, ok.
12:22 xstill (nicméně počítám, že takové věci jako kolik argumentů jde registrem musí řešit skutečně codegen)
20:30 xheno mornfall: môžeš odomňa pullnuť 2 patche. Riešia chyby, čo mi Vláďa nahlásil.

| Channels | #divine index | Today | | Search | Google Search | Plain-Text | summary