Skip to content

Commit

Permalink
Make initialization of int(8|16|32|64)/num(32|64) arrays 9x as fast
Browse files Browse the repository at this point in the history
Due to a bad signature, it was using the slow, generic path.
  • Loading branch information
lizmat committed Apr 8, 2018
1 parent 91fe6b6 commit 40815d1
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 15 deletions.
24 changes: 12 additions & 12 deletions src/core/native_array.pm6
Expand Up @@ -57,7 +57,7 @@ my class array does Iterable {

my role strarray[::T] does Positional[T] is array_type(T) {
#- start of generated part of strarray role -----------------------------------
#- Generated on 2018-04-08T20:44:41+02:00 by tools/build/makeNATIVE_ARRAY.pl6
#- Generated on 2018-04-08T23:06:46+02:00 by tools/build/makeNATIVE_ARRAY.pl6
#- PLEASE DON'T CHANGE ANYTHING BELOW THIS LINE

multi method AT-POS(strarray:D: int $idx) is raw {
Expand Down Expand Up @@ -92,9 +92,9 @@ my class array does Iterable {
nqp::bindpos_s(self, 0, nqp::unbox_s($value));
self
}
multi method STORE(strarray:D: str @values) {
nqp::setelems(self,nqp::elems(@values));
nqp::splice(self,@values,0,nqp::elems(@values))
multi method STORE(strarray:D: strarray:D \values) {
nqp::setelems(self,nqp::elems(values));
nqp::splice(self,values,0,nqp::elems(values))
}
multi method STORE(strarray:D: @values) {
my int $elems = @values.elems;
Expand Down Expand Up @@ -413,7 +413,7 @@ my class array does Iterable {

my role intarray[::T] does Positional[T] is array_type(T) {
#- start of generated part of intarray role -----------------------------------
#- Generated on 2018-04-08T20:44:41+02:00 by tools/build/makeNATIVE_ARRAY.pl6
#- Generated on 2018-04-08T23:06:46+02:00 by tools/build/makeNATIVE_ARRAY.pl6
#- PLEASE DON'T CHANGE ANYTHING BELOW THIS LINE

multi method AT-POS(intarray:D: int $idx) is raw {
Expand Down Expand Up @@ -448,9 +448,9 @@ my class array does Iterable {
nqp::bindpos_i(self, 0, nqp::unbox_i($value));
self
}
multi method STORE(intarray:D: int @values) {
nqp::setelems(self,nqp::elems(@values));
nqp::splice(self,@values,0,nqp::elems(@values))
multi method STORE(intarray:D: intarray:D \values) {
nqp::setelems(self,nqp::elems(values));
nqp::splice(self,values,0,nqp::elems(values))
}
multi method STORE(intarray:D: @values) {
my int $elems = @values.elems;
Expand Down Expand Up @@ -794,7 +794,7 @@ my class array does Iterable {

my role numarray[::T] does Positional[T] is array_type(T) {
#- start of generated part of numarray role -----------------------------------
#- Generated on 2018-04-08T20:44:41+02:00 by tools/build/makeNATIVE_ARRAY.pl6
#- Generated on 2018-04-08T23:06:46+02:00 by tools/build/makeNATIVE_ARRAY.pl6
#- PLEASE DON'T CHANGE ANYTHING BELOW THIS LINE

multi method AT-POS(numarray:D: int $idx) is raw {
Expand Down Expand Up @@ -829,9 +829,9 @@ my class array does Iterable {
nqp::bindpos_n(self, 0, nqp::unbox_n($value));
self
}
multi method STORE(numarray:D: num @values) {
nqp::setelems(self,nqp::elems(@values));
nqp::splice(self,@values,0,nqp::elems(@values))
multi method STORE(numarray:D: numarray:D \values) {
nqp::setelems(self,nqp::elems(values));
nqp::splice(self,values,0,nqp::elems(values))
}
multi method STORE(numarray:D: @values) {
my int $elems = @values.elems;
Expand Down
6 changes: 3 additions & 3 deletions tools/build/makeNATIVE_ARRAY.pl6
Expand Up @@ -79,9 +79,9 @@ for $*IN.lines -> $line {
nqp::bindpos_#postfix#(self, 0, nqp::unbox_#postfix#($value));
self
}
multi method STORE(#type#array:D: #type# @values) {
nqp::setelems(self,nqp::elems(@values));
nqp::splice(self,@values,0,nqp::elems(@values))
multi method STORE(#type#array:D: #type#array:D \values) {
nqp::setelems(self,nqp::elems(values));
nqp::splice(self,values,0,nqp::elems(values))
}
multi method STORE(#type#array:D: @values) {
my int $elems = @values.elems;
Expand Down

0 comments on commit 40815d1

Please sign in to comment.