Skip to content

Commit

Permalink
bump NQP & make available multi-dimensional arrayrefs
Browse files Browse the repository at this point in the history
only on MoarVM so far, but it's #?if moar'd everywhere.
  • Loading branch information
timo committed Dec 12, 2015
1 parent b946a30 commit d6687b0
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 1 deletion.
16 changes: 16 additions & 0 deletions src/Perl6/Metamodel/BOOTSTRAP.nqp
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,10 @@ my stub StrAttrRef metaclass Perl6::Metamodel::NativeRefHOW { ... };
my stub IntPosRef metaclass Perl6::Metamodel::NativeRefHOW { ... };
my stub NumPosRef metaclass Perl6::Metamodel::NativeRefHOW { ... };
my stub StrPosRef metaclass Perl6::Metamodel::NativeRefHOW { ... };
#?if moar
my stub IntMultidimRef metaclass Perl6::Metamodel::NativeRefHOW { ... };
my stub NumMultidimRef metaclass Perl6::Metamodel::NativeRefHOW { ... };
#?endif

# Implement the signature binder.
# The JVM backend really only uses trial_bind,
Expand Down Expand Up @@ -1330,6 +1334,10 @@ BEGIN {
setup_native_ref_type(IntPosRef, int, 'positional');
setup_native_ref_type(NumPosRef, num, 'positional');
setup_native_ref_type(StrPosRef, str, 'positional');
#?if moar
setup_native_ref_type(IntMultidimRef, int, 'multidim');
setup_native_ref_type(NumMultidimRef, num, 'multidim');
#?endif

# class Proxy is Any {
# has Mu &!FETCH;
Expand Down Expand Up @@ -2833,6 +2841,10 @@ BEGIN {
Perl6::Metamodel::NativeRefHOW.add_stash(IntPosRef);
Perl6::Metamodel::NativeRefHOW.add_stash(NumPosRef);
Perl6::Metamodel::NativeRefHOW.add_stash(StrPosRef);
#?if moar
Perl6::Metamodel::NativeRefHOW.add_stash(IntMultidimRef);
Perl6::Metamodel::NativeRefHOW.add_stash(NumMultidimRef);
#?endif
Perl6::Metamodel::ClassHOW.add_stash(List);
Perl6::Metamodel::ClassHOW.add_stash(Slip);
Perl6::Metamodel::ClassHOW.add_stash(Array);
Expand Down Expand Up @@ -3185,6 +3197,10 @@ nqp::sethllconfig('perl6', nqp::hash(
'int_pos_ref', IntPosRef,
'num_pos_ref', NumPosRef,
'str_pos_ref', StrPosRef,
#?if moar
'int_multidim_ref', IntMultidimRef,
'num_multidim_ref', NumMultidimRef,
#?endif
));

#?if jvm
Expand Down
10 changes: 10 additions & 0 deletions src/core/native_array.pm
Original file line number Diff line number Diff line change
Expand Up @@ -488,7 +488,12 @@ my class array does Iterable is repr('VMArray') {
nqp::push_i($idxs, @indices.shift);
$numdims = $numdims - 1;
}
#?if moar
nqp::multidimref_i(self, $idxs)
#?endif
#?if !moar
nqp::atposnd_i(self, $idxs)
#?endif
}
elsif $numind > $numdims {
X::TooManyDimensions.new(
Expand Down Expand Up @@ -549,7 +554,12 @@ my class array does Iterable is repr('VMArray') {
nqp::push_i($idxs, @indices.shift);
$numdims = $numdims - 1;
}
#?if moar
nqp::multidimref_n(self, $idxs)
#?endif
#?if !moar
nqp::atposnd_n(self, $idxs)
#?endif
}
elsif $numind > $numdims {
X::TooManyDimensions.new(
Expand Down
2 changes: 1 addition & 1 deletion tools/build/NQP_REVISION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2015.11-41-g21e8038
2015.11-45-g044d4dd

0 comments on commit d6687b0

Please sign in to comment.