github.com/moarvm/moarvm | IRC logs at irclog.perlgeek.de/moarvm/today
Set by moderator on 8 September 2013.
01:33 woosley joined 05:36 Woodi joined
diakopter ... 06:05
JimmyZ how many hours left to push nfg? 06:10
06:44 FROGGS joined
diakopter ack 06:46
still embroiled in gc.
sorear there's a deadline?
diakopter well, self-imposed
FROGGS morning o/ 07:00
diakopter hi 07:01
JimmyZ how many hours left to push nfg? 07:02
jnthn will nfg be pushed soon? 07:05
yoleaux 8 Sep 2013 22:28Z <FROGGS> jnthn: I think I got something, it does not resume though :/, it dies as if it does not find the handler in the second run: gist.github.com/FROGGS/d006980f3c95b53364ca
jnthn ;)
morning, #moarvm :)
diakopter sigh. 07:06
FROGGS someone should really push nfg :P 07:07
ohh, what a magical number of users here...
diakopter how many?
JimmyZ Is it really really hard to type `git push orgin nfg:nfg`?
diakopter yes
JimmyZ how about copy my one 07:08
:P
diakopter enough teasing please.
if the code isn't in a state that's usable by someone else, all the work will have been wasted. 07:09
FROGGS diakopter: 42 07:10
diakopter because it's so far diverged from a commit many many months ago
the best person to re-merge it is I
the worst that could happen is someone wastes their own time making non-progress trying to understand it enough to integrate it 07:11
FROGGS true I guess
JimmyZ FROGGS: Did you get how to use msvc debugger? 07:12
diakopter and frustration and annoyance could result, and going down wrong paths of fixing
arnsholt goes to vote
Then more JVM native call!
FROGGS JimmyZ: I have still the express version installed, and this one does not have devenv
JimmyZ FROGGS: just open a project, and select moarvm.exe 07:13
diakopter *headdesk*
FROGGS JimmyZ: and, I think bisecting might be a better choice for this issue because even gdb does not produce a useful backtrace
diakopter JimmyZ: he can't "open a project" without the program to open it with
wait. 07:14
FROGGS diakopter: the VS express has a GUI
diakopter oh.
that's devenv.exe
what else could it be named?
you said you didn't have a devenv.exe
JimmyZ I always open the project and select moarvm.exe, and I can use msvc debuuger 07:15
FROGGS I'll install VS no-express after $work
JimmyZ FROGGS: I'm using express too
I still don't know what your problem
FROGGS diakopter: the gui is called VCExpress.exe 07:16
err, VS...
diakopter ah.
FROGGS The program "[1076] moarvm.exe: system own" exited with Code 1 (0x1). 07:19
FROGGS changes the working dir and adds args
ohh, nice 07:20
exception in MVMuint64 MVM_repr_elems(MVMThreadContext *tc, MVMObject *obj) {
return REPR(obj)->elems(tc, STABLE(obj), obj, OBJECT_BODY(obj));
}
JimmyZ FROGGS: Do you use it by open a project and select moarvm.exe? 07:21
FROGGS JimmyZ: I openend moarvm.exe as a project
JimmyZ FROGGS: yes, I did this way too
FROGGS: you got this, and look the bt, you will find intstruction are all zero 07:22
FROGGS +\t\tobj\t0x00000000 {header={...} st=??? pad=??? }\tMVMObject * 07:23
+\t\ttc\t0x00382b30 {nursery_alloc=0x00d3c12c nursery_alloc_limit=0x00db0020 gc_status=0 ...}\tMVMThreadContext *
damn it, I'd like to change the language to english... it hard to understand german in this context 07:25
JimmyZ ...
JimmyZ is using chinese version..
timotimo LC_ALL=C 07:26
FROGGS hehe
timotimo oh wait, windows ... :(
i guess you'll have to get a computer from the UK then
FROGGS if you see the word "Stapelrahmen" you have to translate it to english to know what it means
timotimo hahahaha
one of our profs calls has this word "kellerabzug". please indulge me and guess what it could mean. 07:27
FROGGS timotimo: no, you sort of can switch the language, you can even download language packs for polski for example, but I dont find the option to switch
timotimo you switch by installing a different windows?
FROGGS nah
kellerabzug... hmmm
diakopter collaborator? 07:28
timotimo there's kind of a twisted logic to it
FROGGS like base trigger or something?
timotimo not at all
diakopter heh.
FROGGS timotimo: do tell, please 07:29
timotimo stack trace.
FROGGS bah 07:30
yeah, but I understand now
>.<
timotimo because a stack is a "kellerspeicher" and a print-out is sometimes called "abzug"
although the first time i heard that word the "abzug" part reminded me more of these emergency smoke removal thingies you find in buildings
07:31 odc joined
FROGGS ARGLBARGL 07:32
the language selector shows: <german>, <like windows>
timotimo %)
dalek arVM/gcorch: f17b31c | diakopter++ | / (13 files):
wip3
07:38
JimmyZ FROGGS: I think the introductions is zero because nqp pass frames with zero instruction. but debuging nqp is hard to me 07:39
FROGGS hmmm 07:40
JimmyZ the hard part to me is waiting for compiling :( 07:41
07:43 not_gerd joined
not_gerd o/ 07:43
FROGGS hi not_gerd 07:44
not_gerd I played around with C11 this weekend 07:46
you can do some nifty things with _Generic
eg a type-safe printf, or automatically matching C types with dynamically-types runtime types
also wrote gist.github.com/gerdr/7bf984dbc8b365d13330 because I finally got annoyed enough with ALT-Tab 07:51
not much on the moarvm front, though
diakopter: what would be most useful for me to do - build system (shared/static), bc validation, nativecall, something else? 07:52
JimmyZ seflhost! 07:53
*self
kidding :) 07:54
diakopter not_gerd: I'd guess .. hmm. 08:04
*thinks a bit* 08:05
actually if you want to start diving into debugging the serialization tests....
that would save jnthn the most time
08:06 not_gerd_ joined
diakopter not_gerd_: you missed my reply maybe 08:07
not_gerd_ diakopter: saw the logs
diakopter .tell raiph www.reddit.com/r/perl/comments/1lum...ed/cc3swfq
yoleaux diakopter: I'll pass your message to raiph.
not_gerd_ I can look into the serialization tests later today 08:08
FROGGS I think it dies on winxp 32 when compiling op no_op 08:12
not_gerd who needs that op anyway - just get rid op it ;) 08:13
*of
FROGGS *g*
diakopter heh.
JimmyZ I thought parrot's noop was used by rakudo/nqp 08:17
dalek arVM: f6d1e4d | (Tobias Leich)++ | src/core/interp.c:
declaration before code
08:20
FROGGS -.- 08:21
FROGGS--
timotimo hm. is that just convention or is there something important about it?
not_gerd timotimo: MSVC only supports bits and pieces of C99 08:22
declaration after code is not (yet?) one of them 08:23
the reply to C coders from Microsoft has been 'just use C++'
timotimo >_<
i know! write moarvm in c++, so you have a super sophisticated object system to use for perl6! 08:25
FROGGS \\o/ let's do it now! 08:26
JimmyZ Creating a C project is not as easy as Creating a C++ project in MSVC ...
diakopter *wham* *wham* *wham* 08:33
jnthn wow, I go to teach and when I come back you're talking about C++ :P
timotimo diakopter: wake me up before you go go?
diakopter gogo?
jnthn We could go Go... :) 08:34
timotimo go-go, apparently
FROGGS in src\\mast\\compiler.c line 560 o->operands is NULL
jnthn: we will convert everthing to C++ when you are not looking ò.ó 08:35
MUHAHHAHAAHA
timotimo just replace every puts with cout <<; that's all, right? 08:36
JimmyZ replace all struct to class XXX { } 08:37
timotimo ah, that too, yes
oh, and replace ".h>" with ">" in includes
oh, actually
<(.*).h> with <c\\1>
probably have to wrap it between #try and #except file-not-found 08:38
not_gerd timotimo: using *.h is fine - it is just guaranteed to place the symbols in the top namespace
jnthn really does not know C++ :)
not_gerd c* may or may not do so
JimmyZ well, I know nothing about C++ :P
jnthn I drink with the C++ teacher at $dayjob enough to know lots of crazy things about it... :) 08:39
timotimo don't you mean c\\\\\\?
not_gerd ie if you #include <cstdio>, you *should* use std::puts()
jnthn timotimo: Is that a programming language you can't escape from? :P
arnsholt jnthn: Have you read the C++ FQA?
jnthn arnsholt: A while back :) 08:40
timotimo tee hee
JimmyZ I haved read part of C FQA
jnthn not_gerd: You could do the serialization stuff in so far as there are tests for it, so it's "just" makign them pass...but it may not be the most -Ofun thing to do :)
bc validation is important from an error detection / security standpoint :) 08:41
arnsholt++ has written some tests, iiuc, that should make nativecall stuff easier to check is working too...it's certainly not critical path, but we'll need it before Rakudo on Moar is useful for a bunch of stuff that depends on it. 08:42
timotimo jnthn++ #moarvm blog post the other day 08:43
09:21 BinGOs joined, dalek joined
JimmyZ FROGGS: I think add 'if(!op) DIE(vm, "XXXX", op);' to compile_instruction after 'unsigned short op = o->op;' will help you get a nqp backtrace 09:51
which may be useful
FROGGS JimmyZ: awesome, will try 09:52
JimmyZ or set a brakepoint condition if op == 0
well, breakpoint is not that useful since you can it in the segfault backstrace 2~3 level 09:53
the o->op will be something like 26634692934, after unsigned short op = o->op, you got a op = 0 09:55
s/can it/can see it/
dalek arVM/validation: a9d954c | diakopter++ | build/Makefile.in:
more consistent build output
09:57
arVM/validation: f50dfa1 | (Tobias Leich)++ | / (9 files):
added nqp::rethrow, t/nqp/44 only misses resume
arVM/validation: d345e38 | (Gerhard R)++ | / (10 files):
Merge branch 'master' into validation
arVM/validation: e089933 | (Tobias Leich)++ | src/core/interp.c:
declaration before code
FROGGS JimmyZ: gist.github.com/FROGGS/43f4ae11d579518d3948 09:58
arnsholt not_gerd: If you decide to work on the native call stuff, I'm working on the JVM side in nqp/nativecall-jvm
The general approach there should work for Moar as well 09:59
JimmyZ FROGGS: I think you could use .DUMP for debug 10:00
NQP one
FROGGS JimmyZ: where should I call that?
not_gerd arnsholt: so it doesn't make sense to try to recycle the parrot version? 10:01
JimmyZ FROGGS: NQPHLL.nqp:914
I thind, dump the mast
*think
dalek arVM/validation: 8bd9665 | (Gerhard R)++ | src/core/validation.c:
Remove TODO and debug code
arnsholt not_gerd: Yeah, there's probably lots of code you can reuse there too 10:02
JimmyZ decommute
not_gerd arnsholt: I've started with a naive import of the parrot code in a branch 10:03
the idea was to get that to (mostly) compile by doing a stupid Parrot -> MoarVM translation and start from there 10:05
if the JVM stuff is superior that might not be a good idea
how close is the JVM factoring to Parrot? 10:06
arnsholt Looking pretty close, so far
Of course there's going to be some differences since I'm using JNA to call into C, but I'm keeping the general gist of it
Also trying to clean it up a bit as I go along 10:07
The Parrot -> Moar approach is probably going to work out pretty well 10:08
FROGGS JimmyZ: it doesnt not dump the op: gist.github.com/FROGGS/43f4ae11d579518d3948 10:11
not_gerd arnsholt: is there any logic in place to actually inline structures instead of just referencing them by pointer? 10:13
I did not see anything like that in the Parrot code 10:14
FROGGS ahh, QASTMoar.nqp line 3414
okay, fixed that I think 10:16
dalek arVM: 8e0e8a7 | (Tobias Leich)++ | lib/MAST/Nodes.nqp:
properly DUMP op names
10:23
arnsholt not_gerd: Nope. We have to implement it at some point, though
But I'm still not sure how the Perl 6 side of things is going to look, which makes implementing the plumbing a bit pointless (and a bit tricky) 10:24
FROGGS JimmyZ: including opnames: gist.github.com/FROGGS/43f4ae11d579518d3948 10:27
jnthn not_gerd: P6bigint is an example of a REPR that can inline something more complex, but in reality int/num/str are all examples of it too 10:36
not_gerd class Bar is repr('CStruct') { ... }; class Foo is repr('CStruct') { has Bar $.bar is inline } 10:37
or something similar
arnsholt Yeah, that's what I'm hoping for
FROGGS hmmm, it gets op 42968 10:39
(when we only have 492)
diakopter well that can't be right :) 10:45
jnthn: vs2012 has a really pretty dark theme built in 10:46
10:49 foo_bar_baz joined
arnsholt not_gerd: Oh, one more thing: I'm planning on killing off the CStr REPR and related functionality (NativeCall.explicitly-manage(), most notably) once I get the JVM stuff working 10:49
So no need to put too much work into that =)
diakopter arnsholt: dupe of buf or something? 10:52
er carray?
not_gerd diakopter: the validation branch is ready for review, btw 11:01
arnsholt Yeah, decode string into buf and copy that into a CArray
not_gerd still some TODOs, but we pass selftest and do strcitly more checks than master
arnsholt And then we can control whether the memory backing the array should be freed or not separately 11:02
dalek Heuristic branch merge: pushed 58 commits to MoarVM/nativecall by gerdr 11:06
not_gerd just got the branch up to date
diakopter arnsholt: I like that plan 11:09
arnsholt: will the one on jvm use sun.misc.Unsafe so the pointers can *actually* be passed to C libraries? 11:10
diakopter looks at validation branch (again) 11:11
arnsholt diakopter: I'm using JNA to interact with foreign stuff, since that lets me avoid writing C altogether 11:20
Dunno if JNA uses that stuff internally, though I suspect not 11:25
From looking at the API, I think it stores C pointers as Java longs and does most of the heavy lifting as part of the JNI bits
not_gerd arnsholt: any comments on gist.github.com/gerdr/96b7fa74fc99c44b10a1 11:40
jnthn diakopter: Yeah...it's prettier than the 50 shades of grey theme at least... 11:55
arnsholt: The way I factored the decode/encode ops, they can potentially work against a CArray directly too without the copying :) 11:56
arnsholt: Where potentially means "if they dont' already work we can make them do so"
arnsholt Oh, that's briliant! 12:35
Something like that was on my list to do eventually, but for the first version I was just going to do the stupid version 12:36
not_gerd: CUnion is good, we probably should do that eventually 12:37
Not sure I like the pointer changes
I would like to do something like a deref-able pointer type eventually, but that should be separate from CArray 12:38
I think being explicit about whether a C pointer is an array or a pointer to a single element is a good distinction to have 12:39
not_gerd comceptionally, how many pointer types do we want - VoidPointer, ObjectPointer, ArrayPointer, CheckedPointer 12:45
s/com/con/ 12:46
no, that's nor right
if we have an ArrayPointer, no need for CheckedPointer
but UncheckedPointer perhaps 12:47
arnsholt At the Perl 6 level, I think we want two: OpaquePointer and TransparentPointer
I don't think NativeCall should start dabbling with bounds checking
not_gerd VoidPointer, ObjectPointer, CheckedPointer, UncheckedPointer would make sence, imo 12:49
the latter three know their types and CheckdPointer its bounds 12:50
you can do arithmetics with the last 2
arnsholt But do we really want to support pointer arithmetic at the HLL level_
not_gerd well, I do ;) 12:51
how else are you going to write operating systems in Perl6 ;) 12:53
12:55 jnap joined
FROGGS we sould totally write a Winux(tm) in Perl 6 that fit everyone's needs 12:56
tadzik sounds easy. Let's just combine all the best parts of everything 12:58
12:59 jnap joined
FROGGS and I already now some awesome killer features I'm going to implement first! 13:00
brb # cake
not_gerd arnsholt: gist.github.com/gerdr/0d176de4732660a7b2fd 13:17
that would be what I'd like to aim for
13:19 LWA joined
arnsholt Still not too keen on pointer arithmetic 13:19
And we can probably back both Transparent and Opaque pointers by a unified CPointer REPR 13:20
13:20 dalek joined
arnsholt Just throw an exception if the REPR hasn't been specified to be of a certain type 13:21
not_gerd I don't know what's the convention here - are NULLs ok for xxREPRData members? 13:24
or just allocate the REPRData even if it's ignored? 13:25
semantically, VoidPointer and TypedPointer REPRs are distinct, imo
arnsholt Well, just let the REPR data be the type object for the type we're pointing to 13:37
Then it'll be null if we don't know what we're pointing to and non-null otherwise
not_gerd Parrot's CArrayREPRData also has an elem_kind member 13:41
I haven't looked into how that's used and if it's really necessary for TransparentPointer
but first guess would be yes, we want to have it 13:42
arnsholt We use elem_kind for NULL elements, IIRC
Since those return the type object 13:43
diakopter arnsholt: but does jna have a call to malloc in C or using Unsafe?
diakopter imagines Unsafe 13:44
arnsholt diakopter: I have no idea. It lets you malloc/free, but I don't know if that's via Unsafe or done directly in C
It uses libffi internally, so it might be in C 13:45
not_gerd bye, #moarvm 13:52
13:52 not_gerd left 14:33 dalek joined 14:36 Guest1337 joined 14:54 benabik joined 15:06 Guest1337 joined 15:35 FROGGS[mobile] joined
FROGGS[mobile] jnthn: if I cant fix the 32bit windows problem, do you think we can look at that together this weekend? 15:37
diakopter nooo :P 15:38
it was obviously introduced by my gc fixes; I'll fix it asap
FROGGS[mobile] I'm not so sure about that 15:39
15:42 Guest1337 joined
jnthn FROGGS[mobile]: Yeah, or I may get chance sooner...I recreated it on my laptop last night, but was too hosed to do anything about it. 15:43
FROGGS[mobile] awesome 15:44
damn, I whish it was friday already
diakopter wonders how in the world jnthn will have to time to prepare a 2-week class in 1 week, and then to fit it in 2 days
FROGGS[mobile] hehe 15:45
jnthn diakopter: By having it 95%+ prepared already. :)
lizmat I'm more worried about the state of mind of the workshoppees on Sunday night
FROGGS[mobile] lizmat: because of all these bad puns there? 15:47
jnthn lizmat: With a little luck, the Rakudo/NQP parts of their branes will look more like mine. :)
diakopter and the rest.. mush
jnthn I make no claim as to whether that's a *good* state :P
lizmat and that's supposed to make me less worried ? :-)
jnthn lizmat: If nothing else, they'll be better at loose coupling and puns... :P 15:48
Which are the two most important things, really...
lizmat I feel decoupled already :-) 15:49
jnthn avoids a "train of thought" pun...
diakopter lizmat: does Wendy know you feel this way? :) 15:51
lizmat ah, yes
15:58 LWA joined
TimToady wishes English had two different words for "has", because he has a liver in a very different sense than he has a lover... 16:32
TimToady doesn't like 'is inline'...
Ulti how are those different types of has, both are vital for life 16:34
just in different scales of time
TimToady well, then compare my liver to a laver, or a louver instead 16:35
arnsholt TimToady: Does 'is flattened' make you less sad?
TimToady no, that's not the point...
that makes me sadder because it's even longer
and I suspect pointerness for that repr should not be the default 16:36
jnthn Let's do what c# does and introduce "struct" to go with "class" but mean "flattens" :P 16:37
TimToady has Ptr[Foo] $.foo; or some such
jnthn dinner &
arnsholt has Ptr[AStruct] might work, I guess 16:38
TimToady well, if it's a violent enough default switch, a different keyword is in order; hence my ruminations about the meanings of "hash"
*has!!!
HAS $.foo; # :)
HAS $.liver;
moritz made-of $.liver; 16:39
TimToady has $.laver;
well, probably shouldn't be doing language design here... :)
lizmat owns? 16:41
TimToady same problme
em
though it does have the advantage of being a different word, at least
lizmat now to decide whether it is the liver or the lovers that one owns 16:42
TimToady contains $.liver; # too long <sniff>
part $.liver; 16:43
I kinda like that
lizmat .o( do we part with our liver / lover )
if considered as a verb 16:44
jnthn
.oO( contains $.lover )
really dinner &
TimToady jnthn: I wasn't gonna go there :) 16:45
FROGGS[mobile] class House { got $door; } 17:00
class Goat { got $good; } 17:01
Ulti also weird that l[aeio]ver are all words but luver isn't :S reserved for future use :) 17:09
17:19 FROGGS joined
FROGGS jnthn: is it okay if I bug you later about nqp::resume? 17:25
TimToady (discussion moved from #moarvm) I think that CStruct should probably default to aggressive inlining of any constant(ish)-sized 'has', and you must override that with explicit typing: Ptr[Any] or Scalar[Any] or whatever 18:00
so a CStruct might inline the header of an Int, though of course it can't inline anything variable sized
unless there is a relative sane max size (for something unionish) 18:01
they are, after all, C structs, so they should behave like C structs in requiring indirection to be explicit 18:02
arnsholt (We're still in #moarvm =)
TimToady oops :)
18:03 japhb joined
timotimo was about to say :) 18:03
TimToady well, you guys are the guts-folk at the moment anyway... :)
this is more implementation philosophy; we can talk about whether we want a 'struct' keyword on #perl6 :)
arnsholt I sort of agree that it makes sense to default to inlining aggregates 18:04
diakopter HAZ
18:05 benabik joined
TimToady you are what you eat? 18:05
arnsholt But on the other hand, having pointer as the default has been a pretty nice default
diakopter HAZE
arnsholt Oh, and it's worth noting that CStruct and CArray maintain two separate storage spaces, ATM 18:06
FROGGS btw, I'd like to reserve 'template' as a keyword for the verbose for of pack/sprintf (which can be one thing I hope)
form*
diakopter just reserve the keyword forms 18:07
formats
you could even use the p5 formats
sorry, I'm being a griefer a bit too much lately
TimToady
.oO( use timeline 'FROGGS'; from future import 'template'; )
18:08
FROGGS hehe
TimToady well, I guess auth is kinda like a future alternative timeline
FROGGS I still have no clue how such a template would look like 18:09
TimToady
.oO( the many forks interpretation of QM )
diakopter TimToady: when does Aron say the expansion will speed up to lightspeed and all the other galaxies will suddenly disappear 18:11
well, not suddenly.
redshift away
TimToady I'm not aware that Aron says that, but he probably is personally acquainted with people who do say :) 18:12
diakopter oh, I was hoping he was there for you to ask
TimToady went home last night
in any case, he'd say 'assuming that dark energy is proportional to the actual size of space, and assuming we know how to measure the actual size of space correctly...' 18:13
diakopter and assuming it doesn't start contracting before then?
TimToady that is subsumed in the first assumption 18:14
or the second...
diakopter maybe instead of the galaxies getting further apart everything's uniformly shrinking 18:15
including speed of light changing 18:16
*farther
FROGGS I am your farther?
diakopter no, murther
TimToady Use the farce!
FROGGS hehe 18:17
it is, it is
diakopter or the farsi
FROGGS resumes the work on nqp::resume 18:18
diakopter throws away his work on gc 18:19
FROGGS *g*
18:34 LWA joined 19:06 cognominal joined
jnthn om nom 19:34
jnthn had dinner at a place that had one of his fave imperial stouts on tap :)
lizmat sounds excellent! 19:35
arnsholt Indeed!
jnthn (If you're curious, Evil Twin Imperial Biscotti Break) 19:36
FROGGS O.o 19:37
jnthn TimToady: In general, languages seem to divide into those that inline vs. reference based on kind of type (e.g. C#'s struct vs class package decls), and those that don't care about the kind of type but let you decide at the point of usage. 19:38
C and C++ being in the latter category 19:39
19:43 Woodi joined
jnthn FROGGS: what did you want to ask about resume? 19:45
FROGGS jnthn: well, that was what I had yesterday gist.github.com/FROGGS/d006980f3c95b53364ca
jnthn: I'm now at a point where it is in the handler, hits the resume 19:46
so it should unwind to the frame of the exception, right after the die() for example, right? 19:47
jnthn aye
FROGGS how do I jump to after the die()?
jnthn And then set the pc to the instruction just after it
ou just set the pc, which hangs off tc->
But we may not be saving that address yet 19:48
FROGGS yeah, I was guessing that
jnthn I forget what origin is, whether it's the frame of addr
lemme look
ah, just the frame
FROGGS the frame, yeah 19:49
jnthn So yeah, we aren't saving quite enough in the exception yet
FROGGS okay, so I need to save the tc->interp_cur_op when throwing?
jnthn Right, we need that and the pc of the next instruction too
FROGGS pc?
jnthn program counter
Sorry, CPU term :)
FROGGS ahh
jnthn As in, the bytecode address 19:50
See how the return ops work, for example.
FROGGS k
jnthn Basically you re-arrange the op so that it does its incrementing (cur_op += ...) and *then* makes the call to throw the exception.
So that the PC is already correct and you just save it.
It really should be nothing more than an assignment in each direction :) 19:51
FROGGS okay
jnthn (like, assign current pc into a slot you add to MVMException, then assign it back after unwinding) 19:53
FROGGS why don't we have cur_op += X in interp. anymore? 19:56
interp.c
jnthn um...we don't?
diakopter *giggle*
FROGGS only in a few places
diakopter: please tell :o)
jnthn I see it
diakopter not_gerd++ made it depend on magic pixie dust 19:57
FROGGS I see it for newlexotic but not for die
diakopter to know where to branch
well die is non-local
jnthn grr, I hate magic pixie dust
It must be recent, my local clone doesn't even have it.
FROGGS diakopter: I guess there is a list of the offsets somewhere? 19:58
jnthn um, I still see it in latest too?
diakopter FROGGS: what revision/branch are you at
(I don't see that)
jnthn is in master
diakopter is.. oh 19:59
jnthn And just pulled
FROGGS master/HEAD
jnthn And see the cur_op += ...
diakopter FROGGS: yeah I think your editor is hiding those lines or something
FROGGS O.o 20:00
my editor hides lines?
jnthn FROGGS: You don't see like:
OP(add_i):
GET_REG(cur_op, 0).i64 = GET_REG(cur_op, 2).i64 + GET_REG(cur_op, 4).i64;
cur_op += 6;
goto NEXT; 20:01
?
FROGGS jnthn: I see that
github.com/MoarVM/MoarVM/blob/mast...erp.c#L968
jnthn Ok, so it's doign the cur_op +=... what are you missing?
Ohh! 20:02
You were talking specifically about the die op.
FROGGS yeah
jnthn sorry, I misunderstood and thought you meant in general...
FROGGS not about "die Op", which would be germish anyway :P
diakopter well, if you want die to be resumable..
jnthn Yeah, so you need to move the &GET_REG(...) use in MVM_exception_throwobj call to store that MVMRegister * in a variable. 20:03
And then cur_op += ..., and then do the throwobj call. 20:04
So that whereever origin is set will also be able to set the PC.
diakopter jnthn: I can't wait to implement an interpreter on top of moarvm
*giggle* 20:05
FROGGS jnthn: isnt the &GET_REG(cur_op, 0) at line 973 a noop? 20:06
diakopter well, it does the cast for you 20:07
(so it's the standard way to do that)
FROGGS and passes it to MVM_exception_throwobj that doesn't use it 20:08
diakopter jnthn was saying to make it use it
are *all* dies resumable in p6? 20:09
diakopter will cry if so
I'll just have to append a while(1) to the end of every die
benabik Heh. I remember when people made that discovery in Parrot. 20:10
jnthn FROGGS: Yes, for now, but on resume we should probably but somehting in there...
diakopter: Only those that are made in the runloop, I think.
diakopter p6 die is higher level?
benabik diakopter: Wouldn't just exit(1) be better?
jnthn diakopter: In MoarVM the cost of that is really low, though. 20:11
benabik Or maybe reallydie("don't resume that")
jnthn diakopter: I mean, we already gotta keep track of the throwing frame for the sake of backtraces.
diakopter diediedie("stay dead")
jnthn well, it's not normally die exceptions that get resumed.
It's warn control exceptions and the lime.
*like
benabik die("message"); die("double tap") 20:12
diakopter die('yeah') or exit('showed you')
jnthn :D
FROGGS ok 8 - resuming from resumable exceptions works \\o/ 20:37
can't believe it
jnthn \\o/
FROGGS and fwiw, it helps to copy all needed data when copying exception objects 20:38
jnthn ;)
Does that mean we pass all the 44-try-catch.t? :)
FROGGS not ok 4 - statement prefix form of try work 20:39
jnthn ah
FROGGS this is the last one
jnthn ok :)
I really am too tired to look :(
But, great progress! :)
dalek arVM/nativecall2: 5a8fd9c | (Gerhard R)++ | / (9 files):
Start on nativecall re-implementation
20:40
20:41 not_gerd joined
not_gerd o/ 20:41
FROGGS it is exceptionally fun when it works :o)
(even when it takes days)
jnthn ;) 20:44
gonna attempt some sleep..though if it's epic fail I may be back...
&
not_gerd is going to add pointer arithmetics to MoarVM 20:45
FROGGS gnight jnthn :o)
not_gerd I think I arrived at a factoring that's not too 'out there'
good night
diakopter not_gerd: heh, cool; can't wait to see it :) 20:53
FROGGS for what do we need that ooc? 20:55
ohh, `try nqp::die("...")`is a BOOTCode 21:02
or, hmmm, maybe not 21:03
not_gerd FROGGS: run-time C interop without having to register types 21:04
[Coke] likes identicons.github.com/dfc78a3215db...80c3d9.png 21:16
(moarvm's github icon)
21:36 foo_bar_baz joined
flussence
.oO( we could have a »m̈«, like the one in #perl6 )
21:41
FROGGS +1
flussence I'm not sure how well most people's clients will play with a Serious Unicode thing like that, but it's a good testcase :) 21:42
(looks fine on irssi+tmux+urxvt, fwiw) 21:43
FROGGS and on xhat :o)
xchat
dalek arVM: 9de0ad5 | (Tobias Leich)++ | / (10 files):
added nqp::resume, review needed
21:44
FROGGS ../moarvm nqp.moarvm -e 'my $x := (try nqp::die("oops")); say($x.HOW.name($x));' # is BOOTCode, should be NQPMu 21:53
dunno how to fix that atm
diakopter FROGGS: resume shouldn't end with a goto; it's non-returning, like die
well.. 21:54
I mean
hang on
*tc->interp_cur_op is just cur_op 21:55
.... it needs lotsa work 21:56
but I'm not exactly sure which things to do
gtg
meeting
dalek arVM/nativecall2: cbc9666 | (Gerhard R)++ | / (10 files):
Reorganize native stuff and add CFlexibleStruct
22:06
not_gerd good night
22:06 not_gerd left 22:16 benabik joined