Skip to content

Instantly share code, notes, and snippets.

View gist:4773904
Test Summary Report
t/spec/S02-types/bool.t (Wstat: 6 Tests: 48 Failed: 0)
Non-zero wait status: 6
Parse errors: Bad plan. You planned 51 tests but ran 48.
t/spec/S16-filehandles/filestat.t (Wstat: 0 Tests: 13 Failed: 1)
Failed test: 8
t/spec/S32-temporal/local.rakudo (Wstat: 256 Tests: 22 Failed: 16)
Failed tests: 7-22
Non-zero exit status: 1
View gist:1103397
#!/usr/bin/env perl
#sub POE::Kernel::TRACE_EVENTS () { 1 };
use strict;
use warnings;
use v5.10;
View gist:1062861
# Current Source Filename 'fib.pir'
# get_params_pc PMC_CONST(1), P0
# set_i_p I1,P0
# set_i_ic I2,28
# le_i_ic_ic I1,1,L1
# set_i_p_kic I2,P0[1]
#L1: set_args_pc PMC_CONST(0), I2
# set_p_pc P1,PMC_CONST(3)
# invokecc_p P1
# get_results_pc PMC_CONST(0), I0
View gist:1055004
file=0x4028f42b "src/gc/gc_gms.c", line=2230) at src/exceptions.c:561
#1 0x4010f5e4 in gc_gms_validate_pmc (interp=0x8052e10, pmc=0x919b69c)
at src/gc/gc_gms.c:2230
#2 0x4010403e in Parrot_gc_mark_PMC_alive_fun (interp=0x8052e10,
obj=0x919b69c) at src/gc/api.c:147
#3 0x40208daf in Parrot_Object_mark (interp=0x8052e10, _self=0x8baca90)
at src/pmc/object.c:2690
#4 0x4010f62c in gc_gms_validate_pmc (interp=0x8052e10, pmc=0x8baca90)
at src/gc/gc_gms.c:2238
#5 0x4010403e in Parrot_gc_mark_PMC_alive_fun (interp=0x8052e10,
View gist:1054323
/tmp/S6uhfXRi3c/bin/parrot perl6.pbc --target=pir --output=Test.pir
src/gc/gc_gms.c:2230: failed assertion 'Dead object found!'
Backtrace - Obtained 32 stack frames (max trace depth is 32).
/tmp/S6uhfXRi3c/lib/ [0x400fb25a]
/tmp/S6uhfXRi3c/lib/ [0x400fb21a]
/tmp/S6uhfXRi3c/lib/ [0x4010bbb4]
/tmp/S6uhfXRi3c/lib/ [0x4010060e]
/tmp/S6uhfXRi3c/lib/ [0x4020636f]
/tmp/S6uhfXRi3c/lib/ [0x4010bbfc]
/tmp/S6uhfXRi3c/lib/ [0x4010060e]
View Callgrind
Profile data file 'callgrind.out.20378' (creator: callgrind-3.6.0.SVN-Debian)
I1 cache:
D1 cache:
L2 cache:
Timerange: Basic block 0 - 56133700
Trigger: Program termination
Profiled target: ./winxed benchmarks.winxed (PID 20378, part 1)
Events recorded: Ir
View gist:896927
Differences between my prototype (alorito) and m0-spec
* Arguments to calling new contexts is an RPA
-> This could be quite beneficial to JIT since it's explicit in the argument lists, where as
setting registers inside another context seems difficult to optimize for
-> Also, I'm not a fan of messing with other people's (or function's) stuff.
-> Regardless, this is a feature that could be easy to ignore for the time being
* Registers are 256 of the same type
-> It sounds reasonable to make 1 table of 256 register slots that all 4 types share
-> It seems like the way to go is have a per-interp table that contains the PMC headers
-> I have concerns about the size of each type is no consistent and how to handle that sanely
View gist:829495
{atrodo@squaak}> ./installable_squaak --target=parse t/00-sanity.t
"parse" => PMC 'Regex;Match' => "x = 42\n" @ 0 {
<statementlist> => PMC 'Regex;Match' => "x = 42\n" @ 0 {
<stat_or_def> => ResizablePMCArray (size:1) [
PMC 'Regex;Match' => "x = 42\n" @ 0 {
<statement> => PMC 'Regex;Match' => "x = 42\n" @ 0 {
<assignment> => PMC 'Regex;Match' => "x = 42\n" @ 0 {
<primary> => PMC 'Regex;Match' => "x " @ 0 {
<identifier> => PMC 'Regex;Match' => "x" @ 0 {
<ident> => PMC 'Regex;Match' => "x" @ 0
View lorito_braindump.pod

lorito braindump

atrodo's brain

1 - context is the new interp
  - context contains the PC, INSP regs, other stuff as needed (outPC, ehPC, payload, parentContext)
    I<I like this idea. To what I've done, the context/interp definition has changed.  The interp
      is the core that runs the code, but really, all the guts are in the context.>
    - there's no goto.  You assign to the PC
      I<I'm not sure how this would work.  Will the PC have a special register, or would there be
atrodo / gist:650578
Created Oct 28, 2010
Less magic == More magic
View gist:650578
What I learned from trying to implement Lorito, especially things that were underspecified, in as unorganized mess as
I learned a few things. First, a simple VM is pretty easy. Really, it's a SMOP task. And fun. I had just enough
guidance, especially from allison's 20 opcode email, to make something that resembled usable.
Second, there might have be some assumptions in place that I may not have realized. Parrot is a large beast that has quite
a bit of history. Most of which, I haven't had the introduction to that others might have. To me, Parrot is a CISC VM
that has it's hundreds of instructions defined by PASM/PIR with 4 registers, the last, PMCs, are rather magical and
apparently, C.