Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2013-09-01

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

All times shown according to UTC.

Time Nick Message
08:23 xstill hm, vygenerovat 1 stav když je modelem pool trvá asi pěkně dlouho...
09:04 spito joined #divine
09:34 mornfall xstill: si můžeš vypnout redukce ;-)
09:36 xstill No nevím co by z toho vyšlo...
09:36 xstill ono to pořád dělá pointer-tracking
09:36 xstill pool je moc velký
09:36 spito left #divine
09:36 mornfall tak, vzhledem k tomu že blok je 2M
09:37 spito joined #divine
09:38 mornfall kanonizovat 2M haldu asi není jen tak
09:39 xstill to asi není, protože to ještě neudělalo další stav od těch 11:2
09:39 mornfall :D
09:39 mornfall jestli tam není nějakej bug
09:39 mornfall jakože žádnej, nebo žádnej novej?
09:39 xstill no tak chvíli jsem to měl na debuggeru a vypadalo to celkem v pořádku
09:39 xstill žádnej novej
09:40 xstill těch prvních 7 bylo asi než se pool vůbec vytvořil
09:40 xstill od té doby to stojí
09:40 mornfall nj
09:40 mornfall něco asi bude potřeba vylepšit
09:41 mornfall zatím bych tam dal asi menší konstanty :-)
13:22 mornfall a co teď
13:23 xstill jak co teď?
13:23 xstill právě kompiluji ty změny na variadic
13:23 xstill a divine nevygeneroval žádný nový stav...
13:29 mornfall nj, někde tam bude bota :-)
13:29 mornfall ani nevim jakou časovou složitost má ta kanonizace
13:33 xstill ono asi trvá strašně dlouho prověřit ten pointer na pool -- podle zdrojáku jsem pochopil, že to pro každou pozici v té paměti zarovnanou mod 4 testuje jestli to není pointer
13:34 xstill jinak díky za ten vararg -- jednoduchej příklad na c++11 thready už zdá se jede
13:39 mornfall to sice testuje, ale to je dost levný test
13:42 mornfall (v zásadě by tenhle ten kus měl jet zhruba stejně rychle jako kopírování, krát nějaká mala konstanta)
13:42 mornfall to bude něco jinýho
13:47 mornfall hm, /nix/store/79la9ll9niz3nxhfs9w64dgp8hh5d8nj-binutils-2.23.1/bin/ld.gold: error: ./libstdc++.a: multiple definition of 'std::atomic_flag_test_and_set_explicit(std::atomic_flag*, std::memory_order)'
13:47 xstill kde?
13:48 mornfall obojí v libstdc++.a, překládám jen #include <wibble/sys/thread.h>
13:50 mornfall zkusim zrušit compatibility-atomic-c++0x.cc
13:51 xstill jo přesně to jsem našel
13:51 xstill je to stejně nějakej humus
13:52 mornfall to zrovna moc nepomohlo
13:53 xstill divné další výskyt té funkce je jen v <atomic>
13:54 mornfall meh :-)
13:57 mornfall v tom compatibility toho je víc takovýho
13:57 mornfall ale řekl bych že problém je v tom že tam nemáš inline static
13:57 mornfall v usr-atomic.h
13:58 mornfall jsou tam ty 4 globální fce co nejsou šablony
13:58 mornfall a nagenerujou se do každýho .o který je použije
13:58 xstill hm, to je asi fakt
13:58 mornfall zkusím
14:00 mornfall jo, pomohlo
14:04 xstill tak, já ještě kdybych měl _ZTIN10__cxxabiv115__forced_unwindE (typeinfo for __cxxabiv1::__forced_unwind) tak by asi šlo přeložit C++11 thready i s výjimkama
14:06 mornfall zkus ke usr-cstdlib.cpp:104 přidat implementaci
14:06 mornfall to by mělo stačit
14:06 mornfall (virtuální destruktor)
14:07 xstill jako strukturu __forced_unwind s virtuálním destruktorem?
14:08 mornfall no ona tam ta struktura je
14:08 xstill kde?
14:09 mornfall kruci :D
14:09 xstill já v usr-cstdlib.cpp žádný řádek 104 nemám
14:09 mornfall +namespace __cxxabiv115 {
14:09 mornfall +    struct __forced_unwind {
14:09 mornfall +        virtual ~__forced_unwind() throw();
14:09 mornfall +        virtual void __pure_dummy() = 0;
14:09 mornfall +    };
14:09 mornfall +}
14:09 mornfall to jsou ty nezarecordovaný patche
14:10 xstill počkej co tam dělá ta 15
14:10 xstill ?
14:10 xstill mornfall: mělo by to být __cxxabiv1, ne?
14:11 mornfall asi mělo
14:11 mornfall hm
14:12 mornfall určitě mělo
14:12 mornfall můžeš zkusit jestli to pomůže? (s 1 místo 115)
14:12 mornfall a jestli tam je potřeba implementace toho destruktoru nebo stačí deklarace...
14:13 mornfall otázka je kde jsem k tomuhle kusu kódu přišel
14:13 xstill zkusím
14:13 mornfall hm, nesmysl
14:14 mornfall tohle je ve cxxabi_forced.h, tam má přijít jen ten destruktor
14:14 mornfall (do usr-cstdlib.cpp)
14:14 xstill jako implementace?
14:14 mornfall j
14:15 mornfall hned to udělám jak to má být
14:16 mornfall aspoň už vím proč to nebylo zarecordovaný ;-)
14:20 mornfall takhle by to mělo projít
14:20 mornfall cstdlib.bc ten symbol teď obsahuje
14:22 xstill vyzkouším
14:29 xstill jo běží to
14:32 xstill ale thready ještě nebudou, dostal jsem BAD DEREFERENCE někde v shared_ptr
17:48 mornfall Hm, ten exception handling v LLVM je lehce na palici.
17:56 xstill jakto?
17:57 mornfall no, třeba to nemá instrukci na vyhození výjimky, ale generuje se volání _Unwind_RaiseException
17:57 mornfall a codegenerátory překládaj landingpady na nějaký DWARF metadata pro libunwind
17:58 mornfall libunwind je hotový monstrum
17:58 xstill hm, to nezní moc vesele
17:59 xstill a o libunwind jsem v životě neslyšel
17:59 mornfall který ten unwinding dělá tak, že si ze zásobníku najde hodnoty registrů a tak
17:59 mornfall a nacpe je do procesoru
18:00 mornfall prostě ví o každý platformě jak vypadá stackframe a kde má co hledat
18:00 mornfall resp. část toho vyčte z těch DWARF metadat
18:01 mornfall a landingpad jako parametr bere libunwind-ovou "personality" funkci
18:02 mornfall libunwind normálně funguje tak, že prvně prochází zásobník a v každým frame-u zavolá personality funkci aby se zeptal jestli ten frame umí chytnout danou výjimku
18:02 mornfall a když najde ten správnej, tak začne od začátku
18:03 xstill není to jednoduché...
18:03 mornfall a volá personality funkci které nějak podstrčí stav registrů, aby mohla zavolat destruktory
18:03 mornfall je to peklo :-)
18:04 mornfall horší je, že libsupc++ do toho nějak ještě komunikuje s libunwind bokem, mimo landingpady a spol
18:10 mornfall jeeeejda
18:12 xstill ?
18:15 mornfall to je složitý jak rádio, achjo
18:17 xstill to je blbý
18:18 mornfall ale už jsem se dostal až k tomu že to zavolá setcontext()
18:19 mornfall man setcontext -- to jsem ani nevěděl že něco takovýho existuje
18:21 mornfall nebo někdy taky sigreturn
18:23 xstill to jsou věci
19:45 _ilbot joined #divine
19:45 Topic for #divine is now DiVinE: A Parallel LTL Model Checker (http://divine.fi.muni.cz) | http://irclog.perlgeek.de/divine/
20:58 spito left #divine

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