Skip to content

Instantly share code, notes, and snippets.

@tadzik
Created July 9, 2011 19:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tadzik/1073860 to your computer and use it in GitHub Desktop.
Save tadzik/1073860 to your computer and use it in GitHub Desktop.
diff --git a/src/core/Mu.pm b/src/core/Mu.pm
index 4b5fc16..8b746dd 100644
--- a/src/core/Mu.pm
+++ b/src/core/Mu.pm
@@ -106,8 +106,15 @@ my class Mu {
multi method gist(Mu:D:) { self.perl }
proto method perl(|$) { * }
- multi method perl(Mu:D:) { self.Str }
multi method perl(Mu:U:) { self.HOW.name(self) }
+ multi method perl(Mu:D:) {
+ my $type = self.HOW.name(self);
+ $type ~ '.new(' ~ self.^attributes.map({
+ substr($_.name, 2, nqp::chars($_.name))
+ ~ ' => ',
+ ~ $_.get_value.perl
+ }).join(',') ~ ')';
+ }
proto method DUMP(|$) { * }
multi method DUMP(Mu:D:) { self.perl }
┌─[tadzik@yavin4]─[~/src/nom] (nom)
└─[%]─> gdb perl6
GNU gdb (Gentoo 7.2 p1) 7.2
(gdb) run
Starting program: /home/tadzik/src/nom/perl6
[Thread debugging using libthread_db enabled]
> class A { has $.b }; A.new(b => 5).perl
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff3fe1b3c in Rakudo_cont_decontainerize () from dynext/perl6_ops.so
(gdb) bt
#0 0x00007ffff3fe1b3c in Rakudo_cont_decontainerize ()
from dynext/perl6_ops.so
#1 0x00007ffff3fde13f in Rakudo_binding_bind_one_param ()
from dynext/perl6_ops.so
#2 0x00007ffff3fdfb4a in Rakudo_binding_bind () from dynext/perl6_ops.so
#3 0x00007ffff3fd1676 in Parrot_bind_signature () from dynext/perl6_ops.so
#4 0x00007ffff7a61016 in runops_fast_core ()
from /home/tadzik/src/rakudo/parrot_install/lib/libparrot.so.3.5.0
#5 0x00007ffff7a60c5e in runops_int ()
from /home/tadzik/src/rakudo/parrot_install/lib/libparrot.so.3.5.0
#6 0x00007ffff7a49c2e in runops ()
from /home/tadzik/src/rakudo/parrot_install/lib/libparrot.so.3.5.0
#7 0x00007ffff7a454ee in Parrot_pcc_invoke_from_sig_object ()
from /home/tadzik/src/rakudo/parrot_install/lib/libparrot.so.3.5.0
#8 0x00007ffff7a4589e in Parrot_pcc_invoke_sub_from_c_args ()
from /home/tadzik/src/rakudo/parrot_install/lib/libparrot.so.3.5.0
#9 0x00007ffff7a6bc5e in Parrot_pf_execute_bytecode_program ()
from /home/tadzik/src/rakudo/parrot_install/lib/libparrot.so.3.5.0
#10 0x00007ffff7a358f2 in Parrot_api_run_bytecode ()
from /home/tadzik/src/rakudo/parrot_install/lib/libparrot.so.3.5.0
#11 0x00000000004015c0 in main ()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment