Skip to content

Instantly share code, notes, and snippets.

@jnthn
Created July 2, 2013 10:56
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 jnthn/5908412 to your computer and use it in GitHub Desktop.
Save jnthn/5908412 to your computer and use it in GitHub Desktop.
diff --git a/src/Perl6/Metamodel/BOOTSTRAP.nqp b/src/Perl6/Metamodel/BOOTSTRAP.nqp
index 371e8fe..c4da30d 100644
--- a/src/Perl6/Metamodel/BOOTSTRAP.nqp
+++ b/src/Perl6/Metamodel/BOOTSTRAP.nqp
@@ -83,23 +83,28 @@ my stub ForeignCode metaclass Perl6::Metamodel::ClassHOW { ... };
BEGIN {
# Ensure Rakudo runtime support is initialized.
nqp::p6init();
+
+ # We'll want to get hold of static code refs for NQP subs.
+ sub staticcode($s) {
+ nqp::getstaticcode(nqp::getattr($s, NQPRoutine, '$!do'))
+ }
# class Mu { ... }
#?if parrot
Mu.HOW.add_parrot_vtable_mapping(Mu, 'get_integer',
- nqp::getstaticcode(sub ($self) {
+ staticcode(sub ($self) {
nqp::unbox_i($self.Int())
}));
Mu.HOW.add_parrot_vtable_mapping(Mu, 'get_number',
- nqp::getstaticcode(sub ($self) {
+ staticcode(sub ($self) {
nqp::unbox_n($self.Num())
}));
Mu.HOW.add_parrot_vtable_mapping(Mu, 'get_string',
- nqp::getstaticcode(sub ($self) {
+ staticcode(sub ($self) {
nqp::unbox_s($self.Str())
}));
Mu.HOW.add_parrot_vtable_mapping(Mu, 'defined',
- nqp::getstaticcode(sub ($self) { nqp::istrue($self.defined()) }));
+ staticcode(sub ($self) { nqp::istrue($self.defined()) }));
#?endif
Mu.HOW.compose_repr(Mu);
@@ -140,7 +145,7 @@ BEGIN {
# Need new and accessor methods for Attribute in here for now.
Attribute.HOW.add_method(Attribute, 'new',
- nqp::getstaticcode(sub ($self, :$name!, :$type!, :$package!, :$has_accessor,
+ staticcode(sub ($self, :$name!, :$type!, :$package!, :$has_accessor,
:$positional_delegate = 0, :$associative_delegate = 0, *%other) {
my $attr := nqp::create($self);
nqp::bindattr_s($attr, Attribute, '$!name', $name);
@@ -167,71 +172,71 @@ BEGIN {
nqp::bindattr_i($attr, Attribute, '$!associative_delegate', $associative_delegate);
$attr
}));
- Attribute.HOW.add_method(Attribute, 'name', nqp::getstaticcode(sub ($self) {
+ Attribute.HOW.add_method(Attribute, 'name', staticcode(sub ($self) {
nqp::getattr_s(nqp::decont($self),
Attribute, '$!name');
}));
- Attribute.HOW.add_method(Attribute, 'type', nqp::getstaticcode(sub ($self) {
+ Attribute.HOW.add_method(Attribute, 'type', staticcode(sub ($self) {
nqp::getattr(nqp::decont($self),
Attribute, '$!type');
}));
- Attribute.HOW.add_method(Attribute, 'container_descriptor', nqp::getstaticcode(sub ($self) {
+ Attribute.HOW.add_method(Attribute, 'container_descriptor', staticcode(sub ($self) {
nqp::getattr(nqp::decont($self),
Attribute, '$!container_descriptor');
}));
- Attribute.HOW.add_method(Attribute, 'auto_viv_container', nqp::getstaticcode(sub ($self) {
+ Attribute.HOW.add_method(Attribute, 'auto_viv_container', staticcode(sub ($self) {
nqp::getattr(nqp::decont($self),
Attribute, '$!auto_viv_container');
}));
- Attribute.HOW.add_method(Attribute, 'has_accessor', nqp::getstaticcode(sub ($self) {
+ Attribute.HOW.add_method(Attribute, 'has_accessor', staticcode(sub ($self) {
nqp::p6bool(nqp::getattr_i(nqp::decont($self),
Attribute, '$!has_accessor'));
}));
- Attribute.HOW.add_method(Attribute, 'rw', nqp::getstaticcode(sub ($self) {
+ Attribute.HOW.add_method(Attribute, 'rw', staticcode(sub ($self) {
nqp::p6bool(nqp::getattr_i(nqp::decont($self),
Attribute, '$!rw'));
}));
- Attribute.HOW.add_method(Attribute, 'set_rw', nqp::getstaticcode(sub ($self) {
+ Attribute.HOW.add_method(Attribute, 'set_rw', staticcode(sub ($self) {
nqp::bindattr_i(nqp::decont($self),
Attribute, '$!rw', 1);
nqp::p6bool(1)
}));
- Attribute.HOW.add_method(Attribute, 'set_readonly', nqp::getstaticcode(sub ($self) {
+ Attribute.HOW.add_method(Attribute, 'set_readonly', staticcode(sub ($self) {
nqp::bindattr_i(nqp::decont($self),
Attribute, '$!ro', 1);
nqp::p6bool(1)
}));
- Attribute.HOW.add_method(Attribute, 'default_to_rw', nqp::getstaticcode(sub ($self) {
+ Attribute.HOW.add_method(Attribute, 'default_to_rw', staticcode(sub ($self) {
my $dcself := nqp::decont($self);
unless nqp::getattr_i($dcself, Attribute, '$!ro') {
nqp::bindattr_i($dcself, Attribute, '$!rw', 1);
}
nqp::p6bool(1)
}));
- Attribute.HOW.add_method(Attribute, 'set_build', nqp::getstaticcode(sub ($self, $closure) {
+ Attribute.HOW.add_method(Attribute, 'set_build', staticcode(sub ($self, $closure) {
nqp::bindattr(nqp::decont($self), Attribute, '$!build_closure', $closure);
$self
}));
- Attribute.HOW.add_method(Attribute, 'build', nqp::getstaticcode(sub ($self) {
+ Attribute.HOW.add_method(Attribute, 'build', staticcode(sub ($self) {
nqp::getattr(nqp::decont($self),
Attribute, '$!build_closure');
}));
- Attribute.HOW.add_method(Attribute, 'set_box_target', nqp::getstaticcode(sub ($self) {
+ Attribute.HOW.add_method(Attribute, 'set_box_target', staticcode(sub ($self) {
nqp::bindattr_i(nqp::decont($self),
Attribute, '$!box_target', 1);
nqp::p6bool(1)
}));
- Attribute.HOW.add_method(Attribute, 'box_target', nqp::getstaticcode(sub ($self) {
+ Attribute.HOW.add_method(Attribute, 'box_target', staticcode(sub ($self) {
nqp::getattr_i(nqp::decont($self),
Attribute, '$!box_target')
}));
- Attribute.HOW.add_method(Attribute, 'positional_delegate', nqp::getstaticcode(sub ($self) {
+ Attribute.HOW.add_method(Attribute, 'positional_delegate', staticcode(sub ($self) {
nqp::getattr_i(nqp::decont($self), Attribute, '$!positional_delegate');
}));
- Attribute.HOW.add_method(Attribute, 'associative_delegate', nqp::getstaticcode(sub ($self) {
+ Attribute.HOW.add_method(Attribute, 'associative_delegate', staticcode(sub ($self) {
nqp::getattr_i(nqp::decont($self), Attribute, '$!associative_delegate')
}));
- Attribute.HOW.add_method(Attribute, 'is_generic', nqp::getstaticcode(sub ($self) {
+ Attribute.HOW.add_method(Attribute, 'is_generic', staticcode(sub ($self) {
my $dcself := nqp::decont($self);
my $type := nqp::getattr(nqp::decont($dcself),
Attribute, '$!type');
@@ -241,7 +246,7 @@ BEGIN {
Attribute, '$!build_closure');
nqp::p6bool($type.HOW.archetypes.generic || $package.HOW.archetypes.generic || nqp::defined($build));
}));
- Attribute.HOW.add_method(Attribute, 'instantiate_generic', nqp::getstaticcode(sub ($self, $type_environment) {
+ Attribute.HOW.add_method(Attribute, 'instantiate_generic', staticcode(sub ($self, $type_environment) {
my $dcself := nqp::decont($self);
my $type := nqp::getattr($dcself, Attribute, '$!type');
my $cd := nqp::getattr($dcself, Attribute, '$!container_descriptor');
@@ -282,11 +287,11 @@ BEGIN {
Scalar.HOW.add_attribute(Scalar, BOOTSTRAPATTR.new(:name<$!descriptor>, :type(Mu), :package(Scalar)));
Scalar.HOW.add_attribute(Scalar, BOOTSTRAPATTR.new(:name<$!value>, :type(Mu), :package(Scalar)));
Scalar.HOW.add_attribute(Scalar, BOOTSTRAPATTR.new(:name<$!whence>, :type(Mu), :package(Scalar)));
- Scalar.HOW.add_method(Scalar, 'is_generic', nqp::getstaticcode(sub ($self) {
+ Scalar.HOW.add_method(Scalar, 'is_generic', staticcode(sub ($self) {
my $dcself := nqp::decont($self);
nqp::getattr($dcself, Scalar, '$!descriptor').is_generic()
}));
- Scalar.HOW.add_method(Scalar, 'instantiate_generic', nqp::getstaticcode(sub ($self, $type_environment) {
+ Scalar.HOW.add_method(Scalar, 'instantiate_generic', staticcode(sub ($self, $type_environment) {
my $dcself := nqp::decont($self);
nqp::bindattr($dcself, Scalar, '$!descriptor',
nqp::getattr($dcself, Scalar, '$!descriptor').instantiate_generic(
@@ -314,14 +319,14 @@ BEGIN {
Proxy.HOW.add_parent(Proxy, Any);
Proxy.HOW.add_attribute(Proxy, BOOTSTRAPATTR.new(:name<&!FETCH>, :type(Mu), :package(Proxy)));
Proxy.HOW.add_attribute(Proxy, BOOTSTRAPATTR.new(:name<&!STORE>, :type(Mu), :package(Proxy)));
- Proxy.HOW.add_method(Proxy, 'FETCH', ($PROXY_FETCH := nqp::getstaticcode(sub ($cont) {
+ Proxy.HOW.add_method(Proxy, 'FETCH', ($PROXY_FETCH := staticcode(sub ($cont) {
nqp::decont(
nqp::getattr($cont, Proxy, '&!FETCH')(nqp::p6var($cont)))
})));
- Proxy.HOW.add_method(Proxy, 'STORE', ($PROXY_STORE := nqp::getstaticcode(sub ($cont, $val) {
+ Proxy.HOW.add_method(Proxy, 'STORE', ($PROXY_STORE := staticcode(sub ($cont, $val) {
nqp::getattr($cont, Proxy, '&!STORE')(nqp::p6var($cont), $val)
})));
- Proxy.HOW.add_method(Proxy, 'new', nqp::getstaticcode(sub ($type, :$FETCH, :$STORE) {
+ Proxy.HOW.add_method(Proxy, 'new', staticcode(sub ($type, :$FETCH, :$STORE) {
my $cont := nqp::create(Proxy);
nqp::bindattr($cont, Proxy, '&!FETCH', $FETCH);
nqp::bindattr($cont, Proxy, '&!STORE', $STORE);
@@ -362,7 +367,7 @@ BEGIN {
Signature.HOW.add_attribute(Signature, BOOTSTRAPATTR.new(:name<$!arity>, :type(Mu), :package(Signature)));
Signature.HOW.add_attribute(Signature, BOOTSTRAPATTR.new(:name<$!count>, :type(Mu), :package(Signature)));
Signature.HOW.add_attribute(Signature, BOOTSTRAPATTR.new(:name<$!code>, :type(Mu), :package(Signature)));
- Signature.HOW.add_method(Signature, 'is_generic', nqp::getstaticcode(sub ($self) {
+ Signature.HOW.add_method(Signature, 'is_generic', staticcode(sub ($self) {
# If any parameter is generic, so are we.
my @params := nqp::getattr($self, Signature, '$!params');
for @params {
@@ -371,7 +376,7 @@ BEGIN {
}
return nqp::p6bool(0);
}));
- Signature.HOW.add_method(Signature, 'instantiate_generic', nqp::getstaticcode(sub ($self, $type_environment) {
+ Signature.HOW.add_method(Signature, 'instantiate_generic', staticcode(sub ($self, $type_environment) {
# Go through parameters, builidng new list. If any
# are generic, instantiate them. Otherwise leave them
# as they are.
@@ -389,11 +394,11 @@ BEGIN {
nqp::bindattr($ins, Signature, '$!params', @ins_params);
$ins
}));
- Signature.HOW.add_method(Signature, 'set_returns', nqp::getstaticcode(sub ($self, $type) {
+ Signature.HOW.add_method(Signature, 'set_returns', staticcode(sub ($self, $type) {
nqp::bindattr(nqp::decont($self),
Signature, '$!returns', nqp::decont($type));
}));
- Signature.HOW.add_method(Signature, 'has_returns', nqp::getstaticcode(sub ($self) {
+ Signature.HOW.add_method(Signature, 'has_returns', staticcode(sub ($self) {
nqp::p6bool(
nqp::not_i(
nqp::isnull(
@@ -433,12 +438,12 @@ BEGIN {
Parameter.HOW.add_attribute(Parameter, BOOTSTRAPATTR.new(:name<$!default_value>, :type(Mu), :package(Parameter)));
Parameter.HOW.add_attribute(Parameter, BOOTSTRAPATTR.new(:name<$!container_descriptor>, :type(Mu), :package(Parameter)));
Parameter.HOW.add_attribute(Parameter, BOOTSTRAPATTR.new(:name<$!attr_package>, :type(Mu), :package(Parameter)));
- Parameter.HOW.add_method(Parameter, 'is_generic', nqp::getstaticcode(sub ($self) {
+ Parameter.HOW.add_method(Parameter, 'is_generic', staticcode(sub ($self) {
# If nonimnal type is generic, so are we.
my $type := nqp::getattr($self, Parameter, '$!nominal_type');
nqp::p6bool($type.HOW.archetypes.generic)
}));
- Parameter.HOW.add_method(Parameter, 'instantiate_generic', nqp::getstaticcode(sub ($self, $type_environment) {
+ Parameter.HOW.add_method(Parameter, 'instantiate_generic', staticcode(sub ($self, $type_environment) {
# Clone with the type instantiated.
my $SIG_ELEM_NOMINAL_GENERIC := 524288;
my $ins := nqp::clone($self);
@@ -457,7 +462,7 @@ BEGIN {
nqp::bindattr($ins, Parameter, '$!container_descriptor', $ins_cd);
$ins
}));
- Parameter.HOW.add_method(Parameter, 'set_rw', nqp::getstaticcode(sub ($self) {
+ Parameter.HOW.add_method(Parameter, 'set_rw', staticcode(sub ($self) {
my $SIG_ELEM_IS_RW := 256;
my $SIG_ELEM_IS_OPTIONAL := 2048;
my $dcself := nqp::decont($self);
@@ -470,7 +475,7 @@ BEGIN {
nqp::bindattr_i($dcself, Parameter, '$!flags', $flags + $SIG_ELEM_IS_RW);
nqp::p6bool(nqp::defined($dcself));
}));
- Parameter.HOW.add_method(Parameter, 'set_copy', nqp::getstaticcode(sub ($self) {
+ Parameter.HOW.add_method(Parameter, 'set_copy', staticcode(sub ($self) {
my $SIG_ELEM_IS_COPY := 512;
my $dcself := nqp::decont($self);
my $cd := nqp::getattr($dcself, Parameter, '$!container_descriptor');
@@ -479,7 +484,7 @@ BEGIN {
nqp::getattr_i($dcself, Parameter, '$!flags') + $SIG_ELEM_IS_COPY);
$dcself
}));
- Parameter.HOW.add_method(Parameter, 'set_required', nqp::getstaticcode(sub ($self) {
+ Parameter.HOW.add_method(Parameter, 'set_required', staticcode(sub ($self) {
my $SIG_ELEM_IS_OPTIONAL := 2048;
my $dcself := nqp::decont($self);
my $flags := nqp::getattr_i($dcself, Parameter, '$!flags');
@@ -489,7 +494,7 @@ BEGIN {
}
$dcself
}));
- Parameter.HOW.add_method(Parameter, 'set_parcel', nqp::getstaticcode(sub ($self) {
+ Parameter.HOW.add_method(Parameter, 'set_parcel', staticcode(sub ($self) {
my $SIG_ELEM_IS_PARCEL := 1024;
my $dcself := nqp::decont($self);
my $flags := nqp::getattr_i($dcself, Parameter, '$!flags');
@@ -499,7 +504,7 @@ BEGIN {
}
$dcself
}));
- Parameter.HOW.add_method(Parameter, 'set_coercion', nqp::getstaticcode(sub ($self, $type) {
+ Parameter.HOW.add_method(Parameter, 'set_coercion', staticcode(sub ($self, $type) {
my $dcself := nqp::decont($self);
nqp::bindattr_s($dcself, Parameter, '$!coerce_method', $type.HOW.name($type));
nqp::bindattr($dcself, Parameter, '$!coerce_type', $type);
@@ -519,7 +524,7 @@ BEGIN {
Code.HOW.add_attribute(Code, BOOTSTRAPATTR.new(:name<$!compstuff>, :type(Mu), :package(Code)));
# Need clone in here, plus generics instantiation.
- Code.HOW.add_method(Code, 'clone', nqp::getstaticcode(sub ($self) {
+ Code.HOW.add_method(Code, 'clone', staticcode(sub ($self) {
my $dcself := nqp::decont($self);
my $cloned := nqp::clone($dcself);
my $do := nqp::getattr($dcself, Code, '$!do');
@@ -532,12 +537,12 @@ BEGIN {
}
$cloned
}));
- Code.HOW.add_method(Code, 'is_generic', nqp::getstaticcode(sub ($self) {
+ Code.HOW.add_method(Code, 'is_generic', staticcode(sub ($self) {
# Delegate to signature, since it contains all the type info.
my $dc_self := nqp::decont($self);
nqp::getattr($dc_self, Code, '$!signature').is_generic()
}));
- Code.HOW.add_method(Code, 'instantiate_generic', nqp::getstaticcode(sub ($self, $type_environment) {
+ Code.HOW.add_method(Code, 'instantiate_generic', staticcode(sub ($self, $type_environment) {
# Clone the code object, then instantiate the generic signature. Also
# need to clone dispatchees list.
my $dcself := nqp::decont($self);
@@ -551,16 +556,16 @@ BEGIN {
$sig.instantiate_generic($type_environment));
$ins
}));
- Code.HOW.add_method(Code, 'name', nqp::getstaticcode(sub ($self) {
+ Code.HOW.add_method(Code, 'name', staticcode(sub ($self) {
nqp::getcodename(nqp::getattr(nqp::decont($self),
Code, '$!do'))
}));
- Code.HOW.add_method(Code, 'set_name', nqp::getstaticcode(sub ($self, $name) {
+ Code.HOW.add_method(Code, 'set_name', staticcode(sub ($self, $name) {
nqp::setcodename(
nqp::getattr(nqp::decont($self), Code, '$!do'),
$name)
}));
- Code.HOW.add_method(Code, 'id', nqp::getstaticcode(sub ($self) {
+ Code.HOW.add_method(Code, 'id', staticcode(sub ($self) {
nqp::where(nqp::getattr(nqp::decont($self),
Code, '$!do'))
}));
@@ -574,7 +579,7 @@ BEGIN {
# class Block is Code { ... }
Block.HOW.add_parent(Block, Code);
Block.HOW.add_attribute(Block, BOOTSTRAPATTR.new(:name<$!phasers>, :type(Mu), :package(Block)));
- Block.HOW.add_method(Block, 'clone', nqp::getstaticcode(sub ($self) {
+ Block.HOW.add_method(Block, 'clone', staticcode(sub ($self) {
my $dcself := nqp::decont($self);
my $cloned := nqp::clone($dcself);
my $do := nqp::getattr($dcself, Code, '$!do');
@@ -603,12 +608,12 @@ BEGIN {
Routine.HOW.add_attribute(Routine, BOOTSTRAPATTR.new(:name<$!dispatch_order>, :type(Mu), :package(Routine)));
Routine.HOW.add_attribute(Routine, BOOTSTRAPATTR.new(:name<$!dispatch_cache>, :type(Mu), :package(Routine)));
- Routine.HOW.add_method(Routine, 'is_dispatcher', nqp::getstaticcode(sub ($self) {
+ Routine.HOW.add_method(Routine, 'is_dispatcher', staticcode(sub ($self) {
my $dc_self := nqp::decont($self);
my $disp_list := nqp::getattr($dc_self, Routine, '$!dispatchees');
nqp::p6bool(nqp::defined($disp_list));
}));
- Routine.HOW.add_method(Routine, 'add_dispatchee', nqp::getstaticcode(sub ($self, $dispatchee) {
+ Routine.HOW.add_method(Routine, 'add_dispatchee', staticcode(sub ($self, $dispatchee) {
my $dc_self := nqp::decont($self);
my $disp_list := nqp::getattr($dc_self, Routine, '$!dispatchees');
if nqp::defined($disp_list) {
@@ -626,21 +631,21 @@ BEGIN {
nqp::die("Cannot add a dispatchee to a non-dispatcher code object");
}
}));
- Routine.HOW.add_method(Routine, 'derive_dispatcher', nqp::getstaticcode(sub ($self) {
+ Routine.HOW.add_method(Routine, 'derive_dispatcher', staticcode(sub ($self) {
my $clone := $self.clone();
nqp::bindattr($clone, Routine, '$!dispatchees',
nqp::clone(nqp::getattr($self, Routine, '$!dispatchees')));
$clone
}));
- Routine.HOW.add_method(Routine, 'dispatcher', nqp::getstaticcode(sub ($self) {
+ Routine.HOW.add_method(Routine, 'dispatcher', staticcode(sub ($self) {
nqp::getattr(nqp::decont($self),
Routine, '$!dispatcher')
}));
- Routine.HOW.add_method(Routine, 'dispatchees', nqp::getstaticcode(sub ($self) {
+ Routine.HOW.add_method(Routine, 'dispatchees', staticcode(sub ($self) {
nqp::getattr(nqp::decont($self),
Routine, '$!dispatchees')
}));
- Routine.HOW.add_method(Routine, '!sort_dispatchees_internal', nqp::getstaticcode(sub ($self) {
+ Routine.HOW.add_method(Routine, '!sort_dispatchees_internal', staticcode(sub ($self) {
my int $SLURPY_ARITY := nqp::bitshiftl_i(1, 30);
my int $EDGE_REMOVAL_TODO := -1;
my int $EDGE_REMOVED := -2;
@@ -926,14 +931,14 @@ BEGIN {
@result
}));
- Routine.HOW.add_method(Routine, 'sort_dispatchees', nqp::getstaticcode(sub ($self) {
+ Routine.HOW.add_method(Routine, 'sort_dispatchees', staticcode(sub ($self) {
my $dcself := nqp::decont($self);
unless nqp::isnull(nqp::getattr($dcself, Routine, '$!dispatch_order')) {
nqp::bindattr($dcself, Routine, '$!dispatch_order',
$self.'!sort_dispatchees_internal'());
}
}));
- Routine.HOW.add_method(Routine, 'find_best_dispatchee', nqp::getstaticcode(sub ($self, $capture, int $many = 0) {
+ Routine.HOW.add_method(Routine, 'find_best_dispatchee', staticcode(sub ($self, $capture, int $many = 0) {
my int $DEFCON_DEFINED := 1;
my int $DEFCON_UNDEFINED := 2;
my int $DEFCON_MASK := $DEFCON_DEFINED +| $DEFCON_UNDEFINED;
@@ -1220,7 +1225,7 @@ BEGIN {
}
}
}));
- Routine.HOW.add_method(Routine, 'analyze_dispatch', nqp::getstaticcode(sub ($self, @args, @flags) {
+ Routine.HOW.add_method(Routine, 'analyze_dispatch', staticcode(sub ($self, @args, @flags) {
# Compile time dispatch result.
my $MD_CT_NOT_SURE := 0; # Needs a runtime dispatch.
my $MD_CT_DECIDED := 1; # Worked it out; see result.
@@ -1408,21 +1413,21 @@ BEGIN {
# Otherwise, dunno...we'll have to find out at runtime.
return [$MD_CT_NOT_SURE, NQPMu];
}));
- Routine.HOW.add_method(Routine, 'set_rw', nqp::getstaticcode(sub ($self) {
+ Routine.HOW.add_method(Routine, 'set_rw', staticcode(sub ($self) {
my $dcself := nqp::decont($self);
nqp::bindattr_i($dcself, Routine, '$!rw', 1);
$dcself
}));
- Routine.HOW.add_method(Routine, 'set_inline_info', nqp::getstaticcode(sub ($self, $info) {
+ Routine.HOW.add_method(Routine, 'set_inline_info', staticcode(sub ($self, $info) {
my $dcself := nqp::decont($self);
nqp::bindattr($dcself, Routine, '$!inline_info', $info);
$dcself
}));
- Routine.HOW.add_method(Routine, 'inline_info', nqp::getstaticcode(sub ($self) {
+ Routine.HOW.add_method(Routine, 'inline_info', staticcode(sub ($self) {
my $dcself := nqp::decont($self);
nqp::getattr($dcself, Routine, '$!inline_info')
}));
- Routine.HOW.add_method(Routine, 'set_onlystar', nqp::getstaticcode(sub ($self) {
+ Routine.HOW.add_method(Routine, 'set_onlystar', staticcode(sub ($self) {
my $dcself := nqp::decont($self);
nqp::bindattr_i($dcself, Routine, '$!onlystar', 1);
$dcself
@@ -1450,13 +1455,13 @@ BEGIN {
Regex.HOW.add_attribute(Regex, scalar_attr('$!caps', Mu, Regex));
Regex.HOW.add_attribute(Regex, scalar_attr('$!nfa', Mu, Regex));
Regex.HOW.add_attribute(Regex, scalar_attr('$!alt_nfas', Mu, Regex));
- Regex.HOW.add_method(Regex, 'SET_CAPS', nqp::getstaticcode(sub ($self, $caps) {
+ Regex.HOW.add_method(Regex, 'SET_CAPS', staticcode(sub ($self, $caps) {
nqp::bindattr(nqp::decont($self), Regex, '$!caps', $caps)
}));
- Regex.HOW.add_method(Regex, 'SET_NFA', nqp::getstaticcode(sub ($self, $nfa) {
+ Regex.HOW.add_method(Regex, 'SET_NFA', staticcode(sub ($self, $nfa) {
nqp::bindattr(nqp::decont($self), Regex, '$!nfa', $nfa)
}));
- Regex.HOW.add_method(Regex, 'SET_ALT_NFA', nqp::getstaticcode(sub ($self, str $name, $nfa) {
+ Regex.HOW.add_method(Regex, 'SET_ALT_NFA', staticcode(sub ($self, str $name, $nfa) {
my %alts := nqp::getattr(nqp::decont($self), Regex, '$!alt_nfas');
unless %alts {
%alts := nqp::hash();
@@ -1464,13 +1469,13 @@ BEGIN {
}
nqp::bindkey(%alts, $name, $nfa);
}));
- Regex.HOW.add_method(Regex, 'CAPS', nqp::getstaticcode(sub ($self) {
+ Regex.HOW.add_method(Regex, 'CAPS', staticcode(sub ($self) {
nqp::getattr(nqp::decont($self), Regex, '$!caps')
}));
- Regex.HOW.add_method(Regex, 'NFA', nqp::getstaticcode(sub ($self) {
+ Regex.HOW.add_method(Regex, 'NFA', staticcode(sub ($self) {
nqp::getattr(nqp::decont($self), Regex, '$!nfa')
}));
- Regex.HOW.add_method(Regex, 'ALT_NFA', nqp::getstaticcode(sub ($self, str $name) {
+ Regex.HOW.add_method(Regex, 'ALT_NFA', staticcode(sub ($self, str $name) {
nqp::atkey(
nqp::getattr(nqp::decont($self), Regex, '$!alt_nfas'),
$name)
@@ -1488,7 +1493,7 @@ BEGIN {
Str.HOW.publish_boolification_spec(Str);
#?if parrot
Str.HOW.add_parrot_vtable_mapping(Str, 'get_string',
- nqp::getstaticcode(sub ($self) {
+ staticcode(sub ($self) {
nqp::unbox_s($self)
}));
#?endif
@@ -1683,7 +1688,7 @@ BEGIN {
# Default invocation behavior delegates off to postcircumfix:<( )>.
my $invoke_forwarder :=
- nqp::getstaticcode(sub ($self, *@pos, *%named) {
+ staticcode(sub ($self, *@pos, *%named) {
if !nqp::isconcrete($self) && !nqp::can($self, 'postcircumfix:<( )>') {
my $coercer_name := $self.HOW.name($self);
if +@pos == 1 {
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment