timotimo | i'm quite glad that spesh is going to be very good at these pseudo-getter-setters we have all ove rnqp | 00:22 | |
and they should also easily be inlinable most of the time | 00:23 | ||
which is even nicer :) | |||
moarvm gets a segfault in scan_registes on a few spectests with my nqp and rakudo branches for lazy evaluated hashes | 00:51 | ||
oh, i was on the inline branch | 00:59 | ||
amazing that it lasted until the spectests :) | 01:00 | ||
02:33
btyler joined
|
|||
dalek | arVM/moar-jit: fde55e3 | (Bart Wiegmans)++ | src/jit/jit.c: Use malloc/free for dasm globals This will hopefully fix the build for windows. Note that I windows calling conventions are different from Linux or any other system, so I'll need to modify emit_call_c for it to work. |
05:48 | |
nwc10 | jnthn: works on "my" apart from t/spec/S02-lexical-conventions/comments.rakudo.moar t/spec/S02-names/identifier.t t/spec/S04-statements/do.rakudo.moar t/spec/S05-metasyntax/litvar.t t/spec/S05-transliteration/trans.rakudo.moar t/spec/S17-lowlevel/lock.rakudo.moar t/spec/integration/advent2010-day21.t t/spec/integration/advent2012-day10.t | 05:55 | |
I think one of those isn't an inlining error | |||
jnthn: paste.scsys.co.uk/393986 is output from ASAN | 05:57 | ||
nwc10 hasn't been paying attention - it has gained stack backtraces | |||
06:21
lizmat joined
06:28
woolfy joined
06:51
woolfy left
07:07
zakharyas joined
|
|||
nwc10 | no, GOD is real unless declared integer. Er, all of the above are real (new) regressions, apart from t/spec/S17-lowlevel/lock.rakudo.moar | 07:07 | |
07:24
woosley left,
FROGGS joined
07:53
brrt joined
|
|||
jnthn | nwc10: Thanks for the output | 08:14 | |
nwc10 | valgrind output coming soon | 08:15 | |
brrt | \o #moarvm | 08:16 | |
jnthn - had a chance to test moar-jit on windows again by any chance? | |||
crashes, right :-) | 08:17 | ||
jnthn | Not yet :) | ||
Was just trying to figure out why half my attempts to connect to anything hit timeouts or DNS res fails... | 08:18 | ||
brrt | hmm | ||
maybe somebody is ddos'ing your isp | 08:19 | ||
jnthn | Well, it's been going on since yesterday | ||
nwc10 | jnthn: much valgrind output: paste.scsys.co.uk/394048 | ||
Have only skimmed it, but 2 or 3 bugs reoccur | 08:20 | ||
jnthn | I was thinking it was somewhere ISP-wards, until I got a couple of timeouts looking at my router's info page. Which suggested it was more local ;) | ||
08:20
lizmat joined
|
|||
nwc10 | jnthn: I'd have strong words with your sysadmin :-) | 08:20 | |
jnthn | Restarting that rather overheated box sat under my desk seems to have helped :) | ||
brrt | nice :-) | ||
maybe not put it under your desk | |||
nwc10 | jnthn: not sure why my firefox thinks that this line: | 08:21 | |
ok 11 - embedded comment with #`įį | |||
jnthn | Hmm | ||
nwc10 | deseved a Unicode replacement character | ||
jnthn | brrt: Well, it's got a decent bit of airflow down there... | ||
brrt | fair enough, i don't know your setup :-) | 08:22 | |
brrt is a bit crossed with the whole windows-x64 vs at&t-x64 affair | |||
jnthn | brrt: Now jit.c compiles | ||
brrt | awesome | ||
jnthn | mmap.c | 08:23 | |
src\platform\win32\mmap.c(21) : error C2065: 'MVM_PAGE_NOACCESS' : undeclared identifier | |||
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\amd64\cl.EXE"' : return code '0x2' | |||
Stop. | |||
brrt | what | ||
oh | |||
i see | |||
it should be just PAGE_NOACCESS, i'm fixing it :-) | 08:25 | ||
dalek | arVM/moar-jit: c63bb87 | (Bart Wiegmans)++ | src/platform/win32/mmap.c: Constant name typo for win32 |
08:26 | |
brrt should look up cross compilation for win64 | |||
mingw64 ought to be able to do it? or is that the other way arround | 08:28 | ||
or maybe a vm | 08:30 | ||
jnthn | I'd go for a VM | 08:34 | |
Yes, that patch helped | |||
brrt | \o/ | 08:35 | |
does it crash? :-D | |||
nwc10 | does it blend? :-) | ||
brrt | i dunno | ||
:-p | |||
officially i have a license for win8 on this machine, so all i have to do is get it off the HDD | 08:36 | ||
jnthn | brrt: You got that script that I can use to test it? | ||
jnthn has to rebuild NQP | 08:37 | ||
brrt | its called foo.nqp and it ought to be checked in | ||
yes, or i have to merge master, whichever is easier | |||
jnthn | SEGV | 08:42 | |
Last line wsa "Emit constant arg 0" | 08:43 | ||
brrt | hmmmm | ||
thats not necessarily what i'd expect | |||
oh, no, that is what i expect | |||
all is well | |||
:-) | |||
hmmm | 08:44 | ||
or maybe not | |||
i think you should see 'loop iteration 14' before that | |||
if not, there is a bug in jit.c | |||
if so, there is a bug - but a known one - in argument-passing in x86_64.dasc | 08:45 | ||
jnthn | No, don't see that. | ||
brrt | which i'll be renaming to emit_x86_64.dasc | ||
ok, i'd be very happy with debug output of any sorts :-) | |||
jnthn should just have done a debug build in the first place... | |||
Eww, heavy rain. | 08:46 | ||
brrt | rain in sweden? | 08:48 | |
jnthn | Apparently :) | 08:49 | |
It wasn't exactly forecast... | |||
brrt | it's still sunny here | ||
jnthn | Wow. It's really hammering down. | 08:50 | |
brrt | well, think of the weather when it will be over, fresh air, wet grass | ||
jnthn | Well;, bother... :( | 08:58 | |
The build with debug symbols works o.O | |||
brrt | what | ||
nwc10 | debugging builds cause all variables to be initialised to 0? | ||
brrt | :-o | ||
it still shouldn't work | |||
jnthn | Return value: 4 | 08:59 | |
Loop nr: 99 | |||
OH HAI | |||
Return value: 4 | |||
Loop nr: 100 | |||
OH HAI | |||
Return value: 4 | |||
That's how it ends | |||
brrt | oh | 09:00 | |
hmmm | |||
then the jit compiler doesn't run at all | |||
jnthn | oh | ||
yeah, I didn't compile with --enable-jit when I did the debug build | |||
duh! | |||
brrt | because the jit compiler can't process say() just yet | ||
jnthn | Take 3... :) | 09:01 | |
brrt | defiicits-as-features ftw :-D | ||
good luck :-) | |||
jnthn | yeah, crashes :) | 09:03 | |
brrt | ok, last line? | 09:05 | |
:-) | |||
brrt should be able to make a vhd from his hdd but hopes he doesn't have to re-install the hdd to do so | 09:06 | ||
jnthn | brrt: It's a null pointer access on the line dasm_encode(&state, memory); | ||
brrt | ok... that means its probably an issue with memory | 09:07 | |
because if the &state was null it'd crash earlier | |||
jnthn | yeah, that's my guess | ||
verifying; need to get it to d a non-optimized or it can't tell me what's in memory. | |||
yeah, memroy is NULL | 09:08 | ||
no pochemu... | |||
I'm guessing we're misusing VirtualAlloc somehow. | 09:09 | ||
brrt | hmmm | 09:10 | |
i think so too, but no idea why | 09:11 | ||
msdn.microsoft.com/en-us/library/wi...85%29.aspx says this should be ok | 09:12 | ||
lizmat | the documentation is always right :-) | ||
jnthn | ERROR_INVALID_PARAMETER | 09:13 | |
brrt | hmmmm | ||
page mode is wrong? | |||
dalek | arVM/moar-jit: d85aa31 | jnthn++ | src/platform/win32/mmap.c: Panic if VirtualAlloc fails. So the error doesn't end up with a NULL pointer use elsewhere. |
||
jnthn | That's my guess | 09:14 | |
brrt | oh, i see | 09:15 | |
page_mode arg should be prot_mode | |||
can you see if that helps? | |||
jnthn | oh, duh | 09:16 | |
yeah, jsut saw that | |||
yeah, helps | 09:18 | ||
now: | |||
Return value: 4 | |||
Loop nr: 14 | |||
Return value: 0 | |||
Loop nr: 15 | |||
And my debugger is very confused | |||
I'm guessing the stack got corrupted ;) | |||
At least, I'm pretty sure "4" isn't a valid stack frame location :) | 09:19 | ||
brrt | no | ||
but i expect so | |||
good | |||
jnthn | ok :) | ||
dalek | arVM/moar-jit: 0bdfcc5 | jnthn++ | src/platform/win32/mmap.c: Use correct variable for protection flags. |
09:20 | |
brrt is working on the remapping of registers for win64 sensitivity | |||
jnthn | Let me know if you want moar testing again at some point :) | ||
brrt | i will | ||
dalek | arVM/inline: 8752a80 | jnthn++ | src/spesh/inline.c: Try to avoid looking at uninitialized memory. Hopefully fixes a Valgrind error reported by nwc10++. |
09:27 | |
09:28
FROGGS joined
|
|||
nwc10 | MOAR testing... | 09:29 | |
brrt | nwc10++ for all the testing | 09:30 | |
jnthn | That's only one of them. Also I should do some $dayjob things and tonight we have an open evening I should go along to. :) So I may not get to the others until rather later, or if there's enough free beer at $event then tomorrow. :) | 09:32 | |
nwc10 | is event's free beer likely to be good? | ||
jnthn | Um | ||
Not sure | |||
I know there's something good in the office fridge... :) | 09:33 | ||
nwc10 | there's something good in *our* office fridge, but it's for this evening, elsewhere | ||
jnthn | Office admin: "What beer should we get for the evening team meetup?" Us: "IPAs...imperial stouts..." :) | 09:34 | |
And we didn't drink all the things. So I think there's some nice stuff left from then :) | |||
nwc10 | www.westons-cider.co.uk/products/wyld-wood/ | ||
jnthn hasn't really had cider in quite a while... | |||
nwc10 | jnthn: is "what sort of beer do you like?" one of the pre-interviewing screening questions? | 09:35 | |
the Austrians don't really seem to understand cider (yet), despite growing apples | |||
09:35
donaldh joined
|
|||
nwc10 | and no-one in Frankfurt has figured out that you can ship apfelwein here and flog it | 09:35 | |
brrt 's favorite beer: www.latrappetrappist.com/en-en/trap...-trappist/ | 09:36 | ||
nwc10 | and it seems that outside of the UK, Carlsberg think that it's just fine to produce Somersby in that well known cider making country, Croatia. | 09:37 | |
:-( | |||
jnthn | brrt: ooh, not bad...I prefer the La Trappe Tripel, though... :) | ||
huh, there's a la trappe oak aged?! | 09:38 | ||
brrt | it seems so | ||
jnthn | Where can I buy this stuff :D | ||
xiaomiao prefers Rochefort | 09:39 | ||
but good beer is good, so I'm not going to complain :) | |||
jnthn | xiaomiao: ooh, which Rochefort? | ||
jnthn likes 10 best :) | |||
xiaomiao | jnthn: depends on my mood, the 10 is sometimes a bit heavy | ||
limits me to two beers an evening | |||
the 6 is a lot more social-compatible ;) | 09:40 | ||
jnthn | True :) | ||
brrt | i have no idea, 'witte trappist' can't be bought in most dutch shops at all :-( | ||
jnthn | Yeah. I can get the quadrupel la trappe ordered at systemet here in Sweden, it seems, but no sign of the oak aged | ||
ooh, I can order witte trappist too :) | 09:41 | ||
xiaomiao | I'm a bit sad that the Cantillon is no longer distributed by the local distributors | ||
that's a weird Kriek :) | |||
jnthn | Gee, they sell a 750ml bottle of the La Trappe Quadrupel. That's either a long evening, or for sharing. :) | 09:42 | |
brrt | its a nice, light white beer, and if you're having it then i'm having it | ||
sharing :-) | |||
jnthn | :) | 09:44 | |
jnthn figures he should stop looking at the beer shop site and hack on scary thing instead. | |||
nwc10 | only until the tests start running... | 09:45 | |
jnthn | Oh, by scary thing I menat my little $dayjob project :) | ||
brrt would have wanted scary $dayjob project when he had a $dayjob | 09:46 | ||
anyway, can i ask one more thing? | |||
jnthn | Sure | 09:47 | |
.oO( So long as it's not, "so what the heck are you doing with IQbservable<T> at $dayjob anyway"... :) ) |
09:48 | ||
brrt | it turns out that there are no less than 6 general-purpose callee-saved registers in both windows and SysV x64 call conventions | 09:49 | |
(and that i've been overwriting them unwittingly) | |||
anyway, i think it'd be a good idea to move special-purpose moarvm variables (like, register work base pointer, register arg base pointer) to those registers | 09:50 | ||
jnthn | Yeah, makes sense. | ||
brrt | totally unscientifically i also know that most compilers most of the time do not use the r12-15 registers | ||
jnthn | If we've a load of free registers, then spesh_slots is worth having in one too | 09:51 | |
At least, if you see an instruction where we'll look at it. | |||
brrt | hmmm | 09:52 | |
6 slots | |||
but i do have to save 'm on stack on entry | |||
jnthn | Yeah | ||
That's why I said "where we'll look at it" :) | |||
Oh, though... | |||
Anything that's in a spesh slot and in gen2 doesn't need looking up | |||
Can just shove the static memory address right into the machine code. | 09:53 | ||
brrt | yes | ||
although i'm ambiguous between static memory addresses in machine code and a possible 'data' segment in the output | 09:54 | ||
if the latter would be possible, it might save some instructions | |||
or not | |||
i don't know | |||
jnthn | :) | ||
brrt | anyway, its a bit of puzzle work but i'll get there :-) | 09:56 | |
nwc10 | jnthn: for later, ASAN results: 8752a809d7083b5b7 | 09:58 | |
er | |||
paste.scsys.co.uk/394090 | |||
brrt | &lunch, i'll be offline this evening, too | 10:10 | |
this afternoon, i mean | |||
10:11
brrt left
10:34
donaldh joined
|
|||
nwc10 | jnthn: for later, valgrind results: 8752a809d7083b5b7 | 10:42 | |
bother. | |||
paste.scsys.co.uk/394108 | |||
do you think I can do that a third time? :-) | |||
12:01
cognominal joined
12:21
jnap joined
13:19
woolfy joined
|
|||
timotimo | it seems like the lazy hashes for qast nodes thing reduced the speed of core setting compilation by about half a second | 13:37 | |
lizmat | that feels like noise to me, fwiw | 13:44 | |
nwc10 | are you able to measure a difference in memory use? | ||
timotimo | i took three before and three after measurements | ||
yes, 11 mb less | |||
out of ~760mb | |||
nwc10 | so that's not noise :-) | ||
timotimo | that part isn't, no. | ||
there's still things that break; i'll have to look closer at that | 13:45 | ||
lizmat | and CPU usage, was that down? | ||
or up? | |||
timotimo | didn't look at that | ||
and i rebooted to get new kernel and gpu drivers | 13:48 | ||
and i didn't save the stuff | |||
FROGGS | timotimo: you removed the 'method hash is associative_delegate' or what it is called? | 13:57 | |
timotimo | has %!annotations is associative_delegate | 13:58 | |
yes, i removed that | |||
FROGGS | ahh, yes | ||
timotimo++ | |||
14:04
btyler joined
|
|||
timotimo | hold you ++es for a moment; nqp currently only builds on moar :) | 14:11 | |
and p5 regexes are bust, too | |||
FROGGS | who needs p5 regexes anyway :P | 14:14 | |
and you mix in a role where we need to store informations? | |||
timotimo | yes | 14:17 | |
and the "hash" method seems to not be used at all so far | |||
so i could just kick that | |||
i don't understand why parrot gets a NPMCA in get_bool in this particular method | 14:19 | ||
FROGGS | can you paste your diff and the backtrace? | ||
timotimo | and the jvm has a NullPointerException | 14:20 | |
the branches are called "qast_lazy_annotations" in nqp | |||
gist.github.com/timo/3a9cf0472c0f84642dac | 14:21 | ||
the line numbers are probably bogus, though | |||
- $ast := $ast.ann('sink') if nqp::defined($ast.ann('sink')); | 14:22 | ||
+ $ast := $ast.ann('sink') if $ast.has_ann('sink'); | |||
this is the only local patch i have and it doesn't change the problem | |||
FROGGS | and that $ast has that method has_ann? | 14:23 | |
ohh | 14:24 | ||
now I see how you do it :o) | |||
timotimo | aye :) | 14:25 | |
the only thing that's not straightforard in this branch is finding where $foo<...> refers to an annotation rather than to an actual hash | |||
FROGGS | *nod* | 14:28 | |
14:34
lizmat_ joined
|
|||
timotimo | will you try to reproduce an fix? :) | 14:34 | |
FROGGS | I don't see why it NPEsses... | ||
can do that in at bit... | 14:35 | ||
a* | 14:36 | ||
14:37
brrt joined
|
|||
timotimo | that'd be swell! :) | 14:44 | |
FROGGS | spiffy! | 14:47 | |
lizmat | FROGGS:: are you still working on the CompUnitRepo::Local stuff, or can I do there whatever I want! | ||
:-) | |||
FROGGS | hehe | 14:48 | |
I'm not sure you can do whatever you want... but no, I am not working on that bit atm | |||
dalek | arVM/moar-jit: f533b40 | (Bart Wiegmans)++ | src/ (5 files): Use abstracted registers for variable access. This will allow us to work more easily with the ABI differences between Win64 and the rest of the world. Also using callee-save registers for special interpreter variables such as our work register base. This makes entry and exit somewhat more expensive but callouts from JIT to C are cheaper. |
14:50 | |
brrt | now i'll have to figure out how luajit passes arguments to dynasm | 14:52 | |
FROGGS | and then? celebrate? :o) | 14:53 | |
lizmat | FROGGS: ok, I will take care of the CURLies then :-) | 14:54 | |
brrt | i.e. the luajit sources use if/else statements to discriminate between win64 / x86 / rest | 14:55 | |
and i need to figure out how they do that | |||
and yes, then celebrate | |||
FROGGS | yeah, I'm taking care of fetching MIRRORED.BY and p6dists.json.gz... the CUR's are working good enough for me atm | ||
:o) | 14:56 | ||
brrt | btw, have i said sufficient nasty things about the whole register-argument-passing things yet? | 14:57 | |
i know /one/ good thing about it | |||
which is that the threadcontext argument passed to all functions doesn't actually have to be copied | |||
timotimo | that's helpful | 14:58 | |
brrt | i.e. it can - in principle - stay in rdi / rcx | ||
FOREVER | |||
timotimo | dun dun DUUUUUUUUN | ||
brrt | as long as nobody else wants that argument, that is | ||
timotimo | i don't want to haev that argument with you | 14:59 | |
brrt | (that means it is probably more efficient to pass it to every function than to have functions that don't take it as an argument) | ||
not that sort of argument | |||
i mean parameter | |||
:-) | 15:00 | ||
ugh, minor isssue, dynasm will build different things for windows and linux | 15:14 | ||
which is annoying | |||
because | |||
i want the output c file to be checked in | |||
so that regular folks don't have to have lua installed | |||
or | 15:15 | ||
FROGGS | well, then check several in, and Configure.pl picks the correct one and copies it | ||
brrt | i may have a solution | ||
thats my solution :-) | |||
FROGGS | :o) | ||
gorram it... perl6-p is so annoyingly slow | 15:18 | ||
timotimo | if only we hadn't started work on moarvm, we wouldn't be complaining about perl6-p and -j being too slow :P | 15:19 | |
FROGGS | *g* | ||
true | |||
brrt | they'd be complaining that perl6 is slow, per se :-p | 15:20 | |
timotimo | heh. | ||
brrt | as they did, in fact | ||
hmm | |||
timotimo | except after we started focusing on performance more, people started saying "how can you be working on performance if 6.0.0 isn't even finished?" | 15:21 | |
and before that they said "this is unusably slow!" | |||
FROGGS | they always have excuses for not using it :o) | ||
timotimo | more than just "not using", though | 15:22 | |
FROGGS | or just for ranting | ||
brrt | nobody uses any language before anybody makes any money with it | ||
i.e. who used ruby before 37 signals got rich? | |||
timotimo | still wondering if maybe i should build a json parser that is faster than grammar-based by doing dirty tricks? | ||
brrt | 'enthusiasts'. exactl | ||
that, or speed up grammars :o) | |||
timotimo | well, having the inlining work will be very good for that purpose | 15:23 | |
brrt | anyway, i'm pondering the 'correct' route for the dasm generation a bit more, because i don't want to bubble the polymorphism up too far | ||
timotimo | i don't know how to interpret that statement | 15:24 | |
brrt | i need to hack the makefile to have dynasm output the correct .c file for both supported architectures | 15:25 | |
basically, i have one file, foo.dasc, and i want to output foo-win64.dasc and foo-posix.dasc, or something like that | 15:26 | ||
thats possible right? but with hardcoding | 15:27 | ||
i have 'm softcoded now | |||
maybe 'this is easy with hardcoding' is the right answer, anyway | 15:28 | ||
timotimo | that seems doable; the configure.pl knows what to do, no? | ||
brrt | yes | ||
i'll get there, dinner first :-) | |||
15:28
brrt left
16:19
FROGGS joined
16:22
woolfy left
17:24
mann joined
|
|||
mann | I'm new to IRC, is this the channel i should be in for RVM help? | 17:30 | |
17:30
jnap1 joined
|
|||
btyler | mann: this is moarvm, a virtual machine for perl6. are you looking for R(uby) V(ersion) M(anager) in #rvm? | 17:32 | |
mann | I am. When i try and join that channel though it spits back to me that I'm not identified with services. | 17:33 | |
i only get that message with #rvm not with this moarvm channel or ruby-lang channel. | 17:34 | ||
not sure what i'm doing incorrectly | |||
FROGGS | mann, I can join #rvm without problems | 17:35 | |
but... perhaps they allow only ppl who have registered their nickname? | 17:36 | ||
(I have) | |||
mann | frogg, i followed the instrctions to register my name and it seemed to work. butnot sure why it not being accepted for #rvm. I'll go back and try again. thanks for the guidance frogg and btyler | 17:38 | |
FROGGS | you're welcome | 17:40 | |
mann | frogg, here is the specific message i get..#rvm :Cannot join channel (+r) - you need to be identified with services | ||
FROGGS | mann: see freenode.net/faq.shtml#plusr | 17:41 | |
mann | FROGGS, will do. thanks. | ||
FROGGS, that helped me realize that IRC sends an email to email address that i need to then paste a snippet into the irc client to finish the registration. now i can get into #rvm. kudos. | 17:46 | ||
FROGGS | :o) | 17:47 | |
japhb_ | Only on a perl6-community channel would I see someone so kindly help a newbie attempting to go somehwere else ... | 17:50 | |
FROGGS++ | |||
18:02
mann left
|
|||
[Coke] | *++ | 18:18 | |
18:54
krunen joined
|
|||
rurban_ | do you know something about unicode whitespace changes lately? parrot with icu 5.2 cannot parse some character names anymore: github.com/rurban/roast/commit/f4b...649e1de52e | 19:05 | |
"LINE FEED (LF)" | |||
"CARRIAGE RETURN (CR)" | |||
"NULL" | |||
"NEXT LINE (NEL)" | |||
"CHARACTER TABULATION" | |||
FROGGS | MoarVM/UNIDATA/UnicodeData.txt:11:000A;<control>;Cc;0;B;;;;;N;LINE FEED (LF);;;; | 19:07 | |
that is Unicode 6.3 btw | |||
so, MoarVM looks up that name there also, icu perhaps does not | |||
(or we have to query it differently) | 19:08 | ||
rurban_ | unicode-search.net/unicode-namesear...mit=Submit says "LINE FEED (LF)" is deprecated | 19:09 | |
But it doesn't tell me the canonical name for it | 19:10 | ||
Yes, I've got the same in my perl5 UnicodeData.txt line. A parrot problem | 19:14 | ||
20:00
cognominal__ joined
|
|||
dalek | arVM/moar-jit: 700c96b | (Bart Wiegmans)++ | / (6 files): Add support for win32-x64 ABI This means some hardcoding, but the building part seems to wok. I don't know if the changes to the actually work, that would require actual testing :-) |
21:01 | |
jnthn | evening, #moarvm | 21:09 | |
timotimo | hi there jnthn | 21:10 | |
FROGGS | hi jnthn | ||
jnthn | 2 year we're-at-this-office party actually had nice beer \o/ | 21:11 | |
FROGGS | \o/ | ||
[Coke] cannot remember the last time he had officebier | 21:14 | ||
23:06
FROGGS joined
23:49
oetiker joined
|