|
00:01
vendethiel- joined
00:15
vendethiel joined
00:47
AlexDaniel joined
01:03
AlexDani` joined
|
|||
| samcv | hello all | 01:42 | |
| looking at ticket | 01:47 | ||
| "UTF-8 could be extended up to 0x108430ffff" (lol) | |||
| i don't even think there's enough written languages in the history of the world to fill that space | |||
| if we somehow magically knew all of them | |||
| Zoffix | .oO( BREAKING NEWS: we made contact with extraterrestials and all of their quintillions of worlds... ) |
||
| samcv | :O | ||
| well by then we will be advanced enough to go beyond the confines of java's UTF-16 | |||
|
01:49
ilbot3 joined
|
|||
| samcv | can't be unicode because unicode would have to do it officially :P | 01:51 | |
| but maybe a font mapped to asci characters or something | |||
| which would be unicode incompatible :P | |||
| geekosaur | lots of PUA fonts... | 01:54 | |
| (how long have geeks been trying to get Tengwar into Unicode?) | |||
| also I have been forever ruined by languagelog.ldc.upenn.edu/nll/?p=29480 :p | 01:56 | ||
| samcv | wugs | 03:35 | |
| kind of looks like a baby chick | |||
|
05:02
Voldenet joined
|
|||
| Voldenet | hello | 05:03 | |
| How would I introduce my own op into moarvm + nqp? | |||
| I've tried doing this without docs on my own, but nqp gives me "Bytecode validation error" | 05:04 | ||
| samcv | uhm. what steps did you take | 05:05 | |
| Voldenet | Here's the diff: ix.io/pgo | 05:06 | |
| samcv | in mvm you ran the script to add the op after editing that file right? | ||
| Voldenet | then I've ran a tool to re-generate ops | ||
| (easy to spot - moarvm didn't really compile without that) | |||
| samcv | i think you're missing some stuff? not 100% sure. should look at the last few times i added ops | ||
| sec | |||
| Voldenet, github.com/MoarVM/MoarVM/commit/1a...0fc52961c4 this is what mine looked like. | 05:08 | ||
| uhm Voldenet did you add your op at the END | 05:09 | ||
| before before the spesh ops? | |||
| in src/core/oplist that is | |||
| see where i added it if you scroll down a bit | |||
| Voldenet | nope, I added my op directly after killprocasync | ||
| samcv | then you run that script | ||
| then you add it to interp.c | 05:10 | ||
| yeah. so i would copy that op and then reset everything | |||
| add it after the indexic_s op (which i think is currrently the newest op) | |||
| then run tools/update_ops.p6 | 05:11 | ||
| then add it to interp.c | |||
| 1. 2. 3. then once you've done that and nqp compiles properly i'll help you make sure it works on the nqp side | |||
| Voldenet | okay, i'll follow those steps then | 05:12 | |
| samcv | ok great :) | ||
| Zoffix, you ever get anything done for proposed MVM logo ;) | |||
| Voldenet, in interp.c you can add it wherever you want after you run the update_ops.p6 script btw. but the oplist file is order sensitive. if you put it not at the end. it will change the mapping of the opcodes and everything breaks :) | 05:14 | ||
| Zoffix | samcv: only in my head. "MoarVM" with first "M" stylized as a sitting dragon, with its tail following the rest of the letters and looping over "VM" with either the tail's arrow-like end forming part of top of "V" or something like that. | 05:17 | |
| Voldenet | Ah, I see. That's why it was not the best thing to do :) | ||
| samcv | i may have made that mistake before. well at least i've made multiple mistakes over the time of adding ops | 05:18 | |
|
05:19
TimToady joined
|
|||
| Voldenet | it looks like it has built, now time to check out if it really works | 05:25 | |
| Zoffix | OOC what sort of op are you adding? | 05:26 | |
| Voldenet | i needed the pid out of process spawned | 05:27 | |
| 'spawn' op doesn't really have anything like that, but the 'spawnprocasync' actually returns the object which contains reference to libuv process | 05:28 | ||
| samcv | .oO( wonders if we should have a āprivate useā area of MVM ops) |
06:18 | |
| they're 64 bit opcodes or 32bit? | 06:19 | ||
| oh they're 16bit | |||
| so room for 65,535 ops | 06:21 | ||
| Voldenet | Hm, most of actual 'ops' use cases could be covered by native calls | 06:22 | |
| The thing I wonder tho is if I should try pushing changes without any special meaning just because of my use case | 06:35 | ||
| samcv | Voldenet, i read a proposa for extension ops though | 07:26 | |
| github.com/MoarVM/MoarVM/blob/mast...s.markdown | 07:28 | ||
| Voldenet | that would simplify things a bit :) | 07:29 | |
|
07:40
domidumont joined
07:44
domidumont joined
|
|||
| timotimo | samcv: we do have a "private use area" for mvm ops, it's called "extops", you can see how rakudo uses it in src/vm/moar/ops/ | 09:23 | |
|
09:48
geekosaur joined
10:05
domidumont joined
10:40
geekosaur joined
11:18
geekosaur joined
11:38
geekosaur joined
11:39
geekosaur joined
11:52
geekosaur joined
11:55
geekosaur joined
11:58
geekosaur joined
12:04
geekosaur joined
12:13
geekosaur joined
12:21
geekosaur joined
12:28
geekosaur joined
12:38
MasterDuke joined
12:49
geekosaur joined
12:57
geekosaur joined
13:01
geekosaur joined
13:03
geekosaur joined
13:06
geekosaur joined
13:28
geekosaur joined
13:33
geekosaur joined
13:37
geekosaur joined
13:38
geekosaur joined
14:06
Ven joined
14:07
geekosaur joined
14:14
geekosaur joined
14:31
Ven_ joined
14:58
zakharyas joined
15:13
AlexDaniel joined
15:20
Ven joined
|
|||
| AlexDaniel | samcv: ābut maybe a font mapped to asci characters or somethingā that's what private use area is for :) | 15:24 | |
| ah | 15:38 | ||
| blah, that's exactly what was mentioned in the next message :) | |||
| geekosaur | :) | 15:44 | |
| timotimo | ascii and you shall receive | 16:48 | |
| geekosaur | better than pulling fonts out of your ascii, I guess | 16:56 | |
| timotimo | do you think some people deserve a solid asciiking? | 16:58 | |
| MasterDuke | ascii stupid question, get a stupid ansi | 17:05 | |
|
17:13
geekosaur joined
|
|||
| timotimo | *groan* | 17:14 | |
| MasterDuke | timotimo: you up for native attribute questions? | 17:42 | |
|
17:44
domidumont1 joined
17:45
domidumont joined
|
|||
| samcv | good * | 18:06 | |
| Zoffix | \o | ||
| .ask brrt if a largish method that's called thousands of times doesn't get speshed/jitted is there a way to find out what's preventing it? | 18:08 | ||
| yoleaux2 | Zoffix: I'll pass your message to brrt. | ||
| lizmat | Zoffix: are you aware of MVM_JIT_LOG ? | 18:09 | |
| Zoffix | Only in the terms of "giant file" | ||
| lizmat | hehe... well, you *can* see in there whether a callable was rejected for jitting, but am not sure you can see why then | 18:10 | |
| timotimo has more experience in that, I think | 18:11 | ||
| Zoffix | Thanks. I'll take a look. | ||
| MasterDuke | if i do `MVM_TRACING=1 perl6-m -e 'say "hi"'`, shouldn't i get some debugging output? | 18:44 | |
| timotimo | MasterDuke: i should have seen this question coming! | 18:46 | |
| MasterDuke | timotimo: heh, i gave fair warning | ||
|
18:47
chsanch joined
|
|||
| timotimo | if a frame doesn't get speshed, it's difficult to figure out why | 18:47 | |
| if a frame gets speshed but not jitted, that's easy | |||
| oh, i think we don't spesh when there's flattening involved | |||
| that's a hint | |||
| chsanch | Hi! | 18:48 | |
| timotimo | hi | ||
| MasterDuke: i hope you'll not be too disappointed when it turns out i have no idea what i'm talking about :) | 18:49 | ||
| MasterDuke: where did you get MVM_TRACING from? | |||
| MasterDuke | interp.c:97 `#if MVM_TRACING` | 18:50 | |
| oh, there also `if (tracing_enabled) {` | |||
| inside the #if | |||
| chsanch | I'm using rakudobrew in a pocketchip computer (armv7l), and I'm trying to build 2017.03 with the command: rakudobrew build moar 2017.03, but it failed, I posted the last lines of the log here: gist.github.com/chsanch/5c7ff94d3c...992bfd828a | 18:53 | |
| I don't know if there is another way to build it besides rakudobrew, which is the tool I“ve using on other machines without any issue | 18:54 | ||
| MasterDuke | chsanch: that sort of error is usually because you ran out of memory and the OOM killer killed it | ||
| chsanch | oh, I see | 18:55 | |
| MasterDuke | you usually need ~2G available, or sufficient swap space to compensate (but that'll be pretty slow) | ||
| chsanch | Ok, yah, well this computer just have 512M of RAM | 18:56 | |
| MasterDuke | i know people have built it on a raspberry pi, but they had to use swap | 18:57 | |
| i don't know who it was, you might have a better chance asking in #perl6 | |||
| chsanch | Ok, thanks! | 18:58 | |
| MasterDuke | np | ||
| timotimo | MasterDuke: you tell me how an environment variable can influence the #defines that were set at compile time :) | 18:59 | |
| you need to both turn tracing on and enable that tracing thingie during runtime | 19:00 | ||
| MasterDuke | hm, did a `make tracing install` but still no output | 19:02 | |
| timotimo | oh i didn't know about that target | 19:04 | |
| MasterDuke | from build/help.txt: `tracing rebuild executable with tracing dispatch` | 19:05 | |
| list of makefile targets | |||
| timotimo | you will also want to disable the jit | ||
| MasterDuke | wait, is that really doing what i think it's doing? | 19:06 | |
| timotimo | there's apparently a flag you have to pass to the moar part of the invocation | ||
| it's "--tracing" | |||
| so edit your perl6-m or nqp-m depending on what you want | |||
| i have no idea what you think it's doing :) | 19:08 | ||
| MasterDuke | ok, finally kind of got it | 19:09 | |
| anyway, what i'm really trying to do is figure out why `perl6-m -e 'class :: { has uint64 $.foo; }.new( foo => 9223372036854775807 )'` does a decont_i, instead of decont_u | 19:11 | ||
| i think the problem is more in nqp or rakudo, but i haven't been able to figure out where exactly | 19:12 | ||
| timotimo | i can imagine it'd be in the buildallplan and such | 19:14 | |
| inside of Mu.pm | |||
|
19:21
domidumont joined
19:29
MasterDuke joined
|
|||
| MasterDuke | in src/Perl6/Metamodel/BUILDPLAN.nqp i see this: `my $typespec := nqp::objprimspec($_.type); if $typespec { @plan[+@plan] := [nqp::add_i(4, $typespec), $obj, $name, $attr_name]; }` | 19:31 | |
| could i do something here with `if nqp::objprimunsigned($_.type) { <...> }`? | 19:32 | ||
| samcv | what do you guys think of this PR i made yesterday? github.com/MoarVM/MoarVM/pull/563 | 19:37 | |
| to improve error on trying to encode a surrogate to give a more informative answer | |||
| timotimo | is objprimunsigned a thing? | ||
| samcv | m: chr(0xD800) | 19:39 | |
| camelia | WARNINGS for <tmp>: Useless use of "chr(0xD800)" in expression "chr(0xD800)" in sink context (line 1) |
||
| samcv | m: say chr(0xD800) | ||
| camelia | Error encoding UTF-8 string: could not encode codepoint 55296 in block <unit> at <tmp> line 1 |
||
| timotimo | or do we have an p6int object that we can just ask? about its size and signedness? | ||
| samcv | would change that to be: Error encoding UTF-8 string: could not encode Unicode Surrogate codepoint %d | ||
| well in the case it's a surrogate at least. if it's not a surrogate it will still use the same generic message | 19:40 | ||
| MasterDuke | m: use nqp; say nqp::objprimunsigned(uint64) | ||
| camelia | 1 | ||
| MasterDuke | m: use nqp; say nqp::objprimunsigned(int64) | ||
| camelia | 0 | ||
| timotimo | oh! neat. | 19:42 | |
| MasterDuke | used exactly once in nqp | 19:45 | |
| and not at all in rakudo | |||
| afk for a bit & | 19:46 | ||
| samcv | gonna improve the out of bounds error too | 20:01 | |
| 99999999.chr | |||
| Error encoding UTF-8 string: could not encode codepoint 199999999, codepoint out of bounds. Cannot encode higher than 1114111 | |||
| timotimo, what do you think i should say here? Highest Unicode codepoint is 1114111? and previously it didn't use hex just decimal so it makes sense to do the same for the highest cp | 20:02 | ||
| m: 99999999.chr | |||
| camelia | ( no output ) | ||
| samcv | m: 99999999.chr.say | ||
| camelia | Error encoding UTF-8 string: could not encode codepoint 99999999 in block <unit> at <tmp> line 1 |
||
| timotimo | the questions confuses me | 20:07 | |
| samcv | want to change the errror to "Error encoding UTF-8 string: could not encode codepoint 199999999 (0xBEBC1FF), codepoint out of bounds. Cannot encode higher than 1114111 (0x10FFFF)" | 20:13 | |
| does that sound good to you | |||
| timotimo | sure | 20:17 | |
| samcv | k | 20:19 | |
| good to have it tell you why it can't encode something | 20:20 | ||
|
20:46
timotimo joined
|
|||
| MasterDuke | timotimo: back again. i know nothing about build plans, what does that `nqp::add_i(4, $typespec)` in the first element mean/do? | 20:50 | |
| timotimo | hm, let's see | 20:51 | |
| oh, you know that all the things in the buildplan are documented in Mu.pm? | |||
| oh, no, at the top of BUILDPLAN.nqp | 20:52 | ||
| okay, you know how objprimspec gives 0, 1, or 2? | |||
| or 3 | |||
| 224539 florolf ā aber daran hat sich eigentlich auf vaporsound-seite nix geaendert | |||
| 224543 niklas ā florolf: hab schon 3x rebootet | 20:53 | ||
| 224547 niklas ā hmpf | |||
| ... that's not what i put into this paste buffer | |||
| # 5 class name attr_name = set a native int attribute | |||
| # 6 class name attr_name = set a native num attribute | |||
| MasterDuke | heh, was going to say, i don't know german either | ||
| timotimo | # 7 class name attr_name = set a native str attribute | ||
| if the primspec is 1, you end up with 5, that means "set a native int attribtue" | |||
| if the primspec is 2, nu, if the primspec is 3, str | 20:54 | ||
| MasterDuke | hm, don't see any signed vs unsigned options there | ||
| timotimo | yup | 20:55 | |
| i expect the last time this was touched unsigned wasn't A Thing yet | 20:56 | ||
| m: use nqp; say nqp::objprimunsigned(str) | |||
| camelia | 0 | ||
| timotimo | m: use nqp; say nqp::objprimunsigned(int) | ||
| camelia | 0 | ||
| timotimo | m: use nqp; say nqp::objprimunsigned(uint) | 20:57 | |
| camelia | 0 | ||
| timotimo | m: use nqp; say nqp::objprimunsigned(uint32) | ||
| camelia | 1 | ||
| timotimo | then what is uint? | ||
| MasterDuke | that's annoying | 20:58 | |
| timotimo | what is? | ||
| MasterDuke | that uint is wrong | 20:59 | |
| or at least seems wrong | |||
| timotimo | yeah, does seem wrong, doesn't it | 21:00 | |
| m: use nqp; say nqp::objprimunsigned(byte) | |||
| camelia | 1 | ||
| timotimo | m: use nqp; say nqp::objprimunsigned(uint8) | ||
| camelia | 1 | ||
| timotimo | how in the frick? | 21:01 | |
| must be a bug when you specifiy "unsigned" but no "bytesize" | |||
| MasterDuke | `const MVMStorageSpec *ss = REPR(type)->get_storage_spec(tc, STABLE(type)); GET_REG(cur_op, 0).i64 = ss->boxed_primitive;` | ||
| that's the meat of `OP(objprimspec): {` | 21:02 | ||
| oh, i'm looking at objprimspec, not objprimunsigned | |||
| `const MVMStorageSpec *ss = REPR(type)->get_storage_spec(tc, STABLE(type)); GET_REG(cur_op, 0).i64 = ss->boxed_primitive == 1 ? ss->is_unsigned : 0;` | |||
| timotimo | i see what's wrong | 21:03 | |
| github.com/MoarVM/MoarVM/blob/mast...#L158-L159 | |||
| can you spot it? | |||
| MasterDuke | repr_data->bits isn't set if you don't explicitly name it? | 21:04 | |
| in the type i mean | |||
| timotimo | that's right | ||
| well, i expect it to be the case | |||
| there's .^set_nativesize and .^set_unsigned | 21:05 | ||
| $!nativesize inside Perl6::Metamodel::NativeHOW is an object, so it can be a null object | 21:06 | ||
| but it looks like it sets nativesize to 0 by default | |||
| MasterDuke | wait, it's just making the storage spec with the contents of ->is_unsigned, which is getting set with MVM_repr_get_int(tc, is_unsigned_o); | 21:07 | |
| timotimo | what is? | ||
| MasterDuke | line 158-159 | 21:08 | |
| timotimo | the point is that the if condition prevents this from happening if you don't have "is nativesize" on the type | 21:09 | |
| MasterDuke | so why doesn't uint cause a .^set_nativesize and .^set_unsigned | 21:10 | |
| timotimo | because it dosen't have a "is nativesize" in its definition | 21:11 | |
| look at rakudo's src/core/natives.pm | |||
| MasterDuke | ah | ||
| interesting | |||
| timotimo | i wonder what the motivation behind being able to have a nativesize of 0 is | 21:12 | |
| MasterDuke | to use the machine default of wherever it was compiled? | 21:14 | |
| timotimo | oh, i see | 21:16 | |
| there's the default_storage_spec that gets returned if repr_data->bits is set to 0 | 21:17 | ||
| so by setting unsigned but no size, we're signaling "use the default" even though the default is actually signed | |||
| so That's Wrong⢠| |||
| MasterDuke | ah, so any fix for e.g., uint64, would probably not have worked for uint? | 21:19 | |
| so it should be `if (repr_data->bits) mk_storage_spec(tc, repr_data->bits, repr_data->is_unsigned, &repr_data->storage_spec); else mk_storage_spec(tc, sizeof(MVMint64) * 8, repr_data->is_unsigned, &repr_data->storage_spec);`? | 21:20 | ||
| timotimo | huh? why a fix for uint64? | 21:24 | |
| uint64 already works though? | |||
| no, that's not what it should be, i don't think | |||
| i imagined it more like "if repr_data->bits or repr_data->is_unsigned { make_storage_spec }" | 21:25 | ||
| MasterDuke | i meant a higher level fix for uint64 as an attribute type might not have worked for uint | 21:27 | |
| m: class :: { has uint64 $.foo; }.new( foo => 9223372036854775808 ).foo.say | 21:28 | ||
| camelia | -9223372036854775808 | ||
| MasterDuke | e.g., ^^^ | ||
| timotimo | oh, right | 21:29 | |
| yes, it's true | |||
| luckily you've been using uint64 all the time | |||
| MasterDuke | hm, just changing to `if (repr_data->bits || repr_data->is_unsigned)` still gives 0 for uint | 21:35 | |
| timotimo | oh | 21:36 | |
| when we find out that ->bits is 0, but is_unsigned is 1, we'll want to use the same value for size and alingment as the default storage spec does | |||
| i'd put that logic into an else branch of the !MVM_is_null(tc, bits_o) | 21:37 | ||
| with an extra if | |||
| MasterDuke | hm, turns out none of that code at all is called when you do `perl6-m -e 'use nqp; say nqp::objprimunsigned(uint)'` | 21:44 | |
| oh, i need to rebuild rakudo | 21:49 | ||
| ugh, i've gotten used to not having to rebuild rakudo when making moarvm changes | 21:55 | ||
| timotimo | you're right | 22:03 | |
| it's most probably coming from the serialized blob | |||
| and that code is only run when you compile nqp | |||
| that whole thing we were just looking at is part of the compose dance-and-song | 22:05 | ||
| the traits "is unsigned" and "is nativesize" will set attributes on the NativeHOW | 22:06 | ||
| when the { } of the class (that you use these traits on) closes, rakudo will call compose on the HOW | |||
| that's what you see in NativeHOW; it creates a nqp::hash it calls $info | |||
| that's the very same hash that we get in as MVMObject *info_hash in static void compose | 22:07 | ||
| MasterDuke | because my earlier testing was without rebuilding nqp/rakudo, i just tried this: after the `if (repr_data->bits)` i added `else if (repr_data->is_unsigned)`, but that else if branch never gets called | ||
| timotimo | does that help? | ||
| aaah | |||
| yes, need to recompile nqp | |||
| MasterDuke | it does, thanks | ||
| timotimo | well, that or rakudo | ||
| MasterDuke | did both to be sure | ||
| timotimo | or create a new class yourself that has the P6int repr and nativesize and/or unsigned | ||
| ok, it's still not getting called? | |||
| MasterDuke | still not getting called | 22:08 | |
| also, i just tried `my native blash is repr('P6int') is Int { }`, but it complains it doesn't know P6int | 22:09 | ||
| timotimo | huh, ok, how about the whole function in general? | ||
| oh | |||
| WFM | 22:10 | ||
| MasterDuke | oops, that was a shell quoting error | ||
| timotimo | did you accidentally use perl6 -e with '' and then put '' inside is repr, too? | ||
| yeah, F the shell | |||
| MasterDuke | ok, added fprintfs in those two branches and added a final else with an fprintf also, now rebuilding | 22:13 | |
| `my native foo is repr("P6int") is Int { }` never prints at all | 22:15 | ||
| `my native foo is repr("P6int") is Int is unsigned { }` doesn't print either | |||
| timotimo | you're right, and i'm confused | 22:16 | |
| MasterDuke | `my native foo is repr("P6int") is Int is nativesize(32) { }` does print in the if (repr_data->bits) branch | ||
| so why isn't compose() being called at all for the first two? | 22:17 | ||
| timotimo | could it be that it deduplicates equivalent classes? | ||
| oh, another interesting tidbit | |||
| NativeHOW won't call compose at all unless you have nativesize set | 22:18 | ||
| so that wants a check for unsigned, too | |||
| MasterDuke | ah, then that would explain that | ||
| so int, uint, and num aren't getting composed at all? | |||
| timotimo | hm, does NatveHOW also get used for num? | 22:19 | |
| oh, yes, indeed | |||
| anyway, i think i'll head off to bed | 22:20 | ||
| i think we made some progress on stuff! | |||
| you got an idea what to do regarding the buildplan? | |||
| MasterDuke | maybe | ||
| timotimo | i'd suggest adding a new opcode to the end, i.e. decide on a new number to use for "set unsigned int attribute" | 22:21 | |
| then if the objprimspec is 1 (aka int) but it's also objprimunsigned, you use that number instead of 4 + objprimspec-return-value | 22:22 | ||
| and inside the two or more "interpreters" for buildplans you add a case that handles that | |||
| MasterDuke | not add an if inside the int case? | ||
| do you think this decont is the problem one? github.com/rakudo/rakudo/blob/nom/...Mu.pm#L213 | 22:23 | ||
| timotimo | there is no int case | ||
| you're looking at the wrong spot | 22:24 | ||
| i was talking about BUILDPLAN.nqp | |||
| just like the decision between "is this native int, native num, or native string?" is encoded into the buildplan by BUILDPLAN.nqp, i suggest you give it a new number | 22:25 | ||
| MasterDuke | yeah, i meant instead of create a new op for "set unsigned int attribute", check for unsignedness where "set int attribute" is done | ||
| timotimo | i.e. the "nqp::if( # 5" you have there, that's the one for "signed int attribute" | 22:26 | |
| and later on you'd add an "nqp::if # 99" for "unsigned int attribute" | |||
| i can't imagine how you could do that in a cheap way there? | |||
| MasterDuke | ok, but what i need to differently, whether in a different op or not, is use a decont_u instead of decont | 22:27 | |
| timotimo | like, would you "if self.^attributes.grep(*.name eq $attrname).is_unsigned { bindattr_u } else { bindattr_i }"? | ||
| MasterDuke | *do differently | ||
| timotimo | that part i don't know anything about :) | 22:28 | |
| i thought it'd have to stay "decont", but become bindattr_u instead of bindattr_i | |||
| you know that part better than me | |||
| MasterDuke | probably that too, but `class :: { has uint64 $.foo; }.new( foo => 9223372036854775808 ).foo.say` dies in a decont_i for me (and will for camelia with the next moar/nqp bump) | 22:29 | |
| thanks for the help, good luck sleeping, and i'm sure i'll bother you again tomorrow | 22:30 | ||
| timotimo | yes, i'm glad i've been minimally useful | ||
| please also consider: | |||
| the code you're looking at, the one in Mu.pm, that's run every single time a .new (or rather, a bless) is called | 22:31 | ||
| i.e. if i have a class Point { has int $.x; has int $.y } and i Point.new($_, $_) for ^100_000 it better not become any slower from your patch :) | |||
| MasterDuke | heh, i'll attempt to be more correct and also no slower | 22:32 | |
| timotimo | it'll be easy if you do it the way i described, with the new number that's generated in BUILDPLAN.nqp and checked in Mu.pm | 22:35 | |
| MasterDuke | yeah, starting to try it out now | ||
| timotimo | yays | 22:36 | |
| in the future, we'll actually generate a proper code object for executing the buildplan | |||
| i tried to do that already, but i got quite mysterious errors | |||
| anyway, bedtime! | |||
| MasterDuke | oh, ugh, there is no bindattr_u | 22:37 | |
| well, i'll create one and see what happens | 22:38 | ||
| arg, also no getattr_u, could add one of those as well. i've been down this path before... | 22:40 | ||
|
22:47
Voldenet joined
23:29
agentzh joined
|
|||