|
github.com/moarvm/moarvm | IRC logs at irclog.perlgeek.de/moarvm/today Set by moderator on 25 August 2013. |
|||
|
00:02
benabik joined
00:09
jnap joined
00:21
jnap joined
00:51
FROGGS joined
|
|||
| dalek | arVM: f3ceedd | jimmy++ | build/setup.pm: Add -lkvm on OpenBSD NetBSD |
01:15 | |
|
01:38
FROGGS joined
02:01
cognominal joined
|
|||
| dalek | arVM: 1b7507f | jimmy++ | / (2 files): [build] remove CoreFoundation dependency |
02:15 | |
| arVM: b391438 | jimmy++ | build/setup.pm: fixed darwin build |
02:19 | ||
| arVM: 64d89c5 | diakopter++ | nqp-cc/t/moar/ (3 files): kill broken tests "fernau" |
02:35 | ||
| arVM: c9b0ea8 | diakopter++ | / (2 files): Merge branch 'master' of github.com/MoarVM/MoarVM |
|||
| arVM: a5e9118 | diakopter++ | src/core/exceptions.c: note todo |
02:56 | ||
| arVM: 36b1491 | diakopter++ | src/core/exceptions.c: note todo better |
02:58 | ||
|
03:04
FROGGS joined
|
|||
| JimmyZ | diakopter: why needs cache? Isn't MVM_exception_backtrace_line called before exit()? | 03:10 | |
| diakopter | tracing is slow | ||
| could be much faster | |||
| me likey tracing | |||
| JimmyZ | oh | 03:11 | |
| yes, tracing need it | |||
| diakopter: do you know why the top trace is always unkonw? | 03:12 | ||
| diakopter | I'm looking at that now | ||
| JimmyZ | *unkown | ||
| great | |||
| so it could be nice to cache it only when make TRACING=1 | 03:14 | ||
| diakopter | .tell not_gerd if you didn't build with TRACING=1 but then you do, it doesn't rebuild something so --tracing option doesn't appear in the help and doesn't work | ||
| yoleaux | diakopter: I'll pass your message to not_gerd. | ||
| diakopter | JimmyZ: heh, okay | ||
| it's hard to debug tracing using tracing | 03:18 | ||
| JimmyZ | :) | ||
| add a printf("==== start =====\\n") in interp.c before after call MVM_exception_backtrace_line helps | 03:20 | ||
| diakopter | sweet... Your Amazon.com order of "Microsoft Sculpt Ergonomic Desktop (L5V-00001)" has shipped! | 03:23 | |
| awesome | |||
| JimmyZ | that's nice | 03:25 | |
| Did you have a cherry keyborad? | 03:28 | ||
| diakopter | I have the non-wireless predecessor | ||
| at work and home | |||
| 7000 | |||
|
03:30
Tene joined
|
|||
| JimmyZ | e | 03:31 | |
|
04:31
cognominal joined
05:04
FROGGS joined
05:14
ggoebel2 joined
05:37
cognominal joined
06:30
FROGGS joined
07:54
odc joined
08:45
foo_bar_baz joined
08:57
donaldh joined
09:37
dalek joined
12:24
jnap joined
12:27
grondilu joined
12:55
jnap joined
13:05
not_gerd joined
|
|||
| not_gerd | O/ | 13:05 | |
| yoleaux | 03:14Z <diakopter> not_gerd: if you didn't build with TRACING=1 but then you do, it doesn't rebuild something so --tracing option doesn't appear in the help and doesn't work | ||
| not_gerd | .tell diakopter `make tracing` and `make no-tracing` should take care of deleting main.o and core/interp.o | 13:06 | |
| yoleaux | not_gerd: I'll pass your message to diakopter. | ||
| not_gerd | gist.github.com/gerdr/30f83aabd3c323249f08 | 13:09 | |
| is a 20% gcc-only performance improvement to fib(35) worth the effort of adding a goto-based runloop? | 13:10 | ||
| jnthn | not_gerd: Depends on the development overhead to maintain it... | 13:11 | |
| JimmyZ | not_gerd: did you see extops.markdown? | 13:12 | |
| not_gerd | jnthn: computed gotos are mostly drop-in (ie could be handled via #ifdefs) | 13:13 | |
| JimmyZ | It is | ||
| not known whether the various C compilers compile these any more efficiently | |||
| than a flat switch/case of all 65536 potential opcodes with all cases | |||
| enumerated (in order). | |||
| jnthn | not_gerd: *nod* | ||
| JimmyZ | in extops :) | ||
| jnthn | not_gerd: I think we want it eventually. I mean, it's a notable win. | ||
| JimmyZ | that is: remove bank | 13:14 | |
| jnthn | not_gerd: For now perhaps development velocity is more important and so the current simplicity is worth holding onto for a bit. | ||
| JimmyZ: The op bank thing's utility was greatly diminished when the ext-ops spec didn't decide to do loading at bank granularity, which was the original plan... | |||
| dalek | arVM/cgoto: 7ccd7f1 | (Gerhard R)++ | src/core/interp.c: Implement runloop using computed gotos |
13:15 | |
| not_gerd | ^ if anyone wants to play with it | ||
| JimmyZ | jnthn: and in core? | 13:16 | |
| jnthn | JimmyZ: There it was largely organizational. | 13:17 | |
| nwc10 | IIRC Sun's compiler also did computed goto | ||
| but no which generation of Sun's compiler, as they bought at least one exernal compiler vendor | |||
| not_gerd | but MSVC doesn't | ||
| nwc10 | however, I think stick with simplicity for now | ||
| not_gerd | and with the removal of inline asm, you can't even hack around it | ||
| nwc10 | at least until Panda works | ||
| JimmyZ | not_gerd: how about clang? | ||
| not_gerd | JimmyZ: clang should do it | 13:18 | |
| nwc10 | one of the classic Parrot mistakes was to re-re-redo working code | ||
| JimmyZ | not_gerd: that's enough | ||
| nwc10 | instead of actually finishing the missing parts | ||
| and getting to the big picture | |||
| it would be a shame to repeat that | |||
| jnthn | nwc10: Yes, exactly. | 13:19 | |
| JimmyZ | jnthn: I have some problems to follow you. Could you tell me the bank will be removed or not, or how to be diminished? | 13:21 | |
| not_gerd | the nice thing about computed gotos is that if you don't do anything fancy, the structure of the switch loop is reproduced | ||
| get rid of switch() and default, replace case by labels and break by continue and you're good to go | |||
| JimmyZ has to improve his english knowledge | |||
| jnthn | JimmyZ: I didn't decide if it will be removed yet. I just meant that it is now not as useful as I had expected. | 13:22 | |
| JimmyZ | jnthn: oh, thanks | ||
| jnthn | JimmyZ: My original idea was that dynamic ops would just get a bank ID. | ||
| JimmyZ | that's much clearer to me | ||
| jnthn | JimmyZ: But we didn't end up designing it that way. | 13:23 | |
| JimmyZ: So now there's not a very strong reason to keep the banks. | |||
| JimmyZ | jnthn: aye | ||
| jnthn | At some point we need to go and do an ops cleanup anyway. | ||
| The numbers need to become stable at some point. | 13:24 | ||
| JimmyZ | I guess just needs re-order ops after running rakudo | ||
| jnthn | We may want it sooner. | ||
| JimmyZ | oh | ||
| jnthn | NQP bootstrap is what will force the issue. | ||
| Once we are storing the stage0 bytecode, we have no choice but to retain at least some bytecode back-compat. | |||
| JimmyZ | oh, that's right | ||
| jnthn | It's good dogfooding. Anybody who breaks back-compat won't be able to build an NQP. :D | 13:25 | |
| JimmyZ | fair enough | ||
| not_gerd: this branch doesn't work for msvc? | 13:30 | ||
| jnthn | MSVC doesn't do computed goto, so no, it won't work | ||
| not_gerd | JimmyZ: right now, no | ||
| you'd have to add some macros to abstract away the differences between switch and goto | 13:31 | ||
| JimmyZ | I'd like +1 to merge cgoto if it doesn't break msvc :P | 13:36 | |
| not_gerd | +/- 0 | 13:37 | |
| can easily wait until a more appropriate time | |||
| nwc10 | I don't think that it is yet an appropriate time. | ||
| not_gerd | did someone fix moar/threads.t? | 13:45 | |
| or did it magically fic itself? | |||
| *fix | |||
| JimmyZ | not_gerd: it exits before hangs | ||
| diakopter++ added an exits there | 13:46 | ||
| jnthn | It's a memory corruption issue at its heart, so sometimes you Get Lucky... | 13:47 | |
| dalek | arVM/warnings: f3a8cc1 | (Gerhard R)++ | build/setup.pm: Add -lkvm on FreeBSD |
13:48 | |
| MoarVM/warnings: 15fedd9 | jnthn++ | nqp-cc/t/qast/qast_core.t: | |||
| MoarVM/warnings: Add qast_core.t tests, from nqp-jvm-prep. | |||
|
13:49
dalek joined
13:50
dalek joined
|
|||
| not_gerd | ^ branch maintenance | 13:50 | |
| I'll keep those alive until someone merges them in ot tells me to stop bothering ;) | |||
| *or | |||
| JimmyZ | I wouldn't mind merge it | 13:51 | |
| diakopter | . | 14:13 | |
| yoleaux | 13:06Z <not_gerd> diakopter: `make tracing` and `make no-tracing` should take care of deleting main.o and core/interp.o | ||
|
14:19
FROGGS joined
|
|||
| JimmyZ | thread.t hangs in MVM_gc_enter_from_interrupt | 14:25 | |
|
14:50
FROGGS joined
15:05
benabik joined
15:07
FROGGS joined
17:08
FROGGS joined
17:18
yoleaux joined
18:11
yoleaux joined
|
|||
| nwc10 | If I try the code example in the README, I get: | 18:17 | |
| $ ../moarvm nqp.moarvm -e 'say("Alive!")' | |||
| Not enough positional arguments; needed 1, got 0 line 1 in <unknown> (op <unknown>, instr 0<unknown>, frame frame_name_3158, compunit nqp.moarvm) | |||
| ... | |||
| and a lot of backtrace | |||
| this is current HEAD | 18:18 | ||
| FROGGS | $ ../moarvm nqp.moarvm -e '1' # same for this? | ||
| nwc10 | yes | ||
| FROGGS | then it is (still) about nqp's MAIN | ||
| nwc10 | OK | ||
| FROGGS | jnthn++ said something about it | ||
|
18:26
donaldh joined
|
|||
| diakopter | nwc10: the code example that says "Very soon, you will be able to run some NQP code by doing"? | 18:27 | |
| :P | 18:28 | ||
| that's under the VAPORWARE section | |||
| nwc10 | that would be the problem. :-) | ||
| nqp nqp-moar-cc.nqp -e "say('Hello, MoarVM')" | |||
| works | |||
| FROGGS | diakopter: is there something I can do? | ||
| diakopter | FROGGS: yes :) | ||
| FROGGS | tell me | 18:29 | |
| diakopter | see the irclogs for 2 days ago | ||
| jnthn | The next blocker is in code-gen | ||
| if foo() -> $x { } | |||
| doesn't yet pass | |||
| nwc10 | use more 'condensers'; | ||
| FROGGS | hmmm | ||
| diakopter | FROGGS: I was going to suggest working on the NativeCall stuff actually | ||
| instead of immediate blockers | |||
| FROGGS | jnthn: that does not sound like a LHF :o) | ||
| jnthn | FROGGS: Just needs a little hacking on the code-gen :P | 18:30 | |
| FROGGS | *g* | ||
| diakopter | the NativeCall reprs and opcodes are much more immediately straightforward... well, sort of. | ||
| jnthn | :) | ||
| FROGGS | diakopter: I'm not sure I am capable of doing that | ||
| diakopter | well you could definitely stub them all out | ||
| FROGGS | I will look into the codegen thing in a bit | 18:31 | |
| diakopter | with empty function bodies | ||
| that'll save someone 30 min or so | |||
| jnthn will have tuits for the code-gen thing later today also :) | |||
| nwc10 | jnthn: I hate to trouble you, but there isn't that much left of today | 18:32 | |
| jnthn | nwc10: It should only be a 15 line diff or so... | ||
| diakopter | monkeys could do that in a decade or so | 18:33 | |
| if they started now | |||
| I wish we could be like the browser manufacturers and have major releases every month or two | 18:35 | ||
| tadzik: work on that for me. kthxbai | |||
|
18:49
donaldh joined
|
|||
| jnthn | bah, I writed enough slajds, I'm gonna fix that code-gen bug | 19:03 | |
| FROGGS | hehe | 19:04 | |
| jnthn++ | |||
| when reading about ubuntu yesterday I though it must be ultracool to work for your open source project of choice at work | 19:05 | ||
| so, when MoarVM Inc is hiring: dont forget me :o) | 19:06 | ||
| jnthn | Inc? That sounds so US :P | ||
| FROGGS | MoarVM Ltd. | 19:07 | |
| better? | |||
| dalek | arVM: f408efb | jnthn++ | nqp-cc/src/QASTOperationsMAST.nqp: Fix another named/positional confusion. |
||
| FROGGS | :o) | ||
| diakopter | jnthn: how in the world did that previously work | 19:08 | |
| jnthn | diakopter: Parrot bug. | ||
| FROGGS: That sounds so UK :P | |||
| OK, now for the bug I was going to fix... | 19:09 | ||
| nwc10 | MoarVM Gmbh? | ||
| FROGGS | jnthn: bah | ||
| GmbH | |||
| jnthn | That almost looks like grmbl :) | 19:10 | |
| At least it looks central-Europe-er :) | |||
| nwc10: Is it that in Austria too, ooc? | |||
| nwc10 | I think so | 19:11 | |
| FROGGS | Ges. mbH or so in Austria | ||
| jnthn | Wien is nice :) | 19:16 | |
| FROGGS | hmmm, I was only in Graz, Innsbruck and Salzburg... | ||
| nwc10 | Come to Salzburg. 2nd & 3rd November | 19:17 | |
| jnthn | It's confirmed yet? | ||
| nwc10 | well, this is public: mail.pm.org/pipermail/vienna-pm/201...03298.html | 19:19 | |
| jnthn | Cool | ||
| FROGGS | ohh, and I was in Nüziders a few times... | 19:20 | |
| :o) | |||
| jnthn | What an awesome place name | 19:21 | |
| FROGGS | well, I'd say the only reason to drive to Nüziders is to throw the ring into the fire | 19:23 | |
| but the rest of Austria is nice :o) | 19:24 | ||
| (I was a technician from 2004 to 2007/8, and I was forced to drive through Austria and Bavaria mostly) | |||
| dalek | arVM: 1b4f79d | jnthn++ | nqp-cc/src/QASTOperationsMAST.nqp: Implement arg-taking if/unless. |
20:00 | |
| arVM: 4a3df63 | jnthn++ | nqp-cc/src/QASTOperationsMAST.nqp: Fix some MAST::Label constructions. |
|||
| FROGGS | jnthn: there are more labels missing the :name, I fix these, k? | 20:07 | |
| jnthn: nvm, it was a generated file that wasn't updated yet :o( | 20:09 | ||
| dalek | arVM: a28cbd7 | jnthn++ | src/6model/reprs/MVMCallCapture.c: Oversight in gc_mark for CallCapture. |
20:16 | |
| arVM: 5b01aba | jnthn++ | src/core/interp.c: Make atkey and atpos handle type objects better. They now return NULL instead of trying to do the associative access and blowing up. This is in line with semantics on other backends, and enables QAST::VarWithFallback's generated code to work correctly. |
|||
| jnthn | Darn, now a SEGV in MVM_gc_collect_free_nursery_uncopied | 20:17 | |
| diakopter | oopsie | ||
| FROGGS | they say an engine of a car goes better directly before blowing up... maybe it is here there other way around? | 20:21 | |
| jnthn | It's nothing immediately obvious either | 20:29 | |
|
20:35
donaldh joined
|
|||
| diakopter | jnthn: it appeared just after the last commit? | 20:37 | |
| jnthn: how much more bytecode is it running since then | 20:38 | ||
| also, how in the world are we getting a gc run already | |||
| sorry if these aren't helpful questions :) | 20:43 | ||
| jnthn | diakopter: Oh, I think we already survive some GC runs :) | 20:48 | |
| Just not this one. | |||
| diakopter | ... in how many milliseconds.. | ||
| jnthn | diakopter: It appeared after the last commit because we got further than before. | ||
| diakopter: The last two actually were out of discovery order... | 20:49 | ||
| diakopter: So, I fixed the marking one a moment ago | 20:51 | ||
| diakopter: The issue now is in the post-GC scan through the old nursery. | |||
| It's in the second GC run, anyways. | 20:56 | ||
| dalek | arVM/nativecall: d27ef12 | (Gerhard R)++ | / (13 files): Import NativeCall-related Parrot code and do some basic translation |
21:01 | |
| diakopter | .tell not_gerd make sure to start with CArray | ||
| jnthn | CPoiner is easier... ;) | 21:02 | |
| diakopter | .tell yoleaux when you come back, please deliver the messages | ||
| arnsholt | I was about to say the same | ||
| diakopter | jnthn: you told me CArray was more up-to-date with the right things | ||
| arnsholt | CPointer is the REPR with the least amount of leg-work | ||
| jnthn | Bizzarely, the thing we fail on - an MVMObject with a null STable pointer - has a forwarder that points to an MVMSTable... | 21:03 | |
| arnsholt | And CPointer doesn't really have to deal with the whole compose stuff | ||
| diakopter | jnthn: but how do you know it's an MVMObject if it doesn't have an STable pointer | 21:04 | |
| sounds like corrupt instead | |||
| (I can't think of a way the STable pointer could be null'd and the rest of the object still be reliable data) | 21:06 | ||
| diakopter wonders if jnthn finds the gc debug output helpful | |||
| jnthn | diakopter: The flags claim it is... | 21:08 | |
| diakopter: Well, are zero... | |||
| diakopter | that's what I'm saying | ||
| jnthn | diakopter: It may well be junk. | ||
| diakopter | that's what I'm saying | ||
| :D | |||
| .tell not_gerd hopefully you're reading the irclog... | 21:09 | ||
| .tell not_gerd I don't know why I'm talking to an absent yoleaux | |||
| jnthn | Indeed, the forwarder pointer points into fromspace, not tospace. | 21:10 | |
| diakopter | O_O | ||
| diakopter is having trouble imagining how that could've happened | |||
| jnthn | Well, I mean, that makes it more likely it's junk. | 21:11 | |
| diakopter | .tell not_gerd at least search the irclogs for CArray | ||
| .tell not_gerd you'll see a previous discussion I had with jnthn on it | |||
| jnthn: maybe the forwarder pointer wasn't reset from the last time? | 21:12 | ||
| diakopter is grasping at straws | |||
| hm, presentation to sr. mgmt in 45 min. should probably prepare a slide or two. | 21:13 | ||
| jnthn | diakopter: That should be impossible as we copy, *then* set the pointer | 21:14 | |
| diakopter | hrm | 21:15 | |
| jnthn: another topic to bug you on | |||
| jnthn: nm, I'll get back to you on that | 21:19 | ||
| jnthn | ok | 21:23 | |
| jnthn found a bug, but it didn't help to fix it | |||
| (didn't really expect it would...) | 21:24 | ||
| ohhh | 21:25 | ||
| But I think I know what it is ;( | |||
| *:( | |||
| Darn. | |||
| diakopter | no? | ||
| FROGGS | I'd think it is good that you know what it is | ||
| diakopter | jnthn: what did I do this time? :D | ||
| FROGGS | except if you dont | 21:26 | |
| jnthn | Yeah but I dunno how on earth to fix it... | ||
| FROGGS | ohh | ||
| diakopter | i'm good at those | ||
| jnthn | diakopter: Nothing... | ||
| Well, here's what I think it is. | |||
| We store object size in the STable. | |||
| Which is OK until we do a mixin. | |||
| Which causes an STable switch. | |||
| diakopter | object size should probably be a repr function | ||
| jnthn | Now the allocated blob of memory in the nursery is different from the size reported on the st. | 21:27 | |
| Object size maybe wants to go in the object header... | 21:28 | ||
| Grrr. | |||
| diakopter | object header or collectable header? | ||
| jnthn | May as well be collectable | ||
| jnthn looks at how that struct looks | 21:29 | ||
| diakopter | it looks back at you ;) | ||
| jnthn | MVMuint32 owner; | ||
| MVMuint32 flags; | |||
| We're only up to 6 flags so far. | 21:30 | ||
| diakopter | we really should make owner a pointer instead of an index | ||
| jnthn | It's a thread ID, no? | ||
| diakopter | yeah but that's not useful | ||
| anymore | |||
| b/c they're not stored in an array | |||
| jnthn | But they know their ID... | ||
| diakopter | right, but comparing pointers is faster than a dereference/load | 21:31 | |
| I guess that's a microoptimization | |||
| jnthn | Well, but it makes the collectable header bigger | ||
| How much we fit in cache is more important, in general, then how many instructions we execute. | |||
| 'cus a cache miss is an order of magnitude per level... | 21:32 | ||
| diakopter | hm oh | ||
| jnthn | Anyway, we don't need 32 bits for flags | ||
| And we won't have anything bigger than 16 bits in size, I guess... | |||
| diakopter | heh. | ||
| jnthn | I mean, bigger than a byte size we can store in 16 bits. | ||
| diakopter | heh. | ||
| jnthn | That'd be a huge object... :) | ||
| tadzik | diakopter: what am I, a browser manufacturer or something? ;) | 21:33 | |
| diakopter | yes | ||
| jnthn | diakopter: It'd involve a P6opaque with over 8000 attributes. :) | ||
| Anyway, we could steal 16 of those bits for object size | 21:34 | ||
| diakopter | remember we were going to reserve some of them for repr flags | ||
| jnthn | If we do make thread ID a pointer then we can up the size and flags back to 32 bits... | ||
| We still have 10 flags free. | 21:35 | ||
| diakopter | 10 in what base? ;) | ||
| jnthn | in your base :P | ||
| um, 10 :) | |||
| diakopter | 10 in what base? ;) | ||
| jnthn | We have 16 bits, and we have 6 flags :) | 21:36 | |
| diakopter | sorry, I only understand unary. 00000000000 is decimal 10 | ||
| FROGGS | 10 flags == 10 bits | 21:38 | |
| diakopter | how many of those flags are rainbow | ||
| FROGGS | just the rainbow one | 21:39 | |
| jnthn | Anyway, will look at that fix tomorrow | 21:42 | |
|
21:42
yoleaux joined
|
|||
| dalek | arVM/nativecall: e4c9d7a | (Gerhard R)++ | src/6model/ (2 files): Make CPointer.c compile (no other guarantees) |
21:52 | |
| arVM: e87b8f2 | jnthn++ | src/6model/reprs/P6opaque.c: Missing real_data calls in P6opaque. |
21:58 | ||
|
23:08
FROGGS joined
|
|||
| diakopter | not_gerd: you around? | 23:35 | |