From 1e2b0ec59500b845f26bd3399d12e2fb8b78dea4 Mon Sep 17 00:00:00 2001 From: Elizabeth Mattijsen Date: Mon, 30 Sep 2019 22:43:47 +0200 Subject: [PATCH] Make .words quite a bit faster Especially the Cool variants. Mostly by making them share the same proto and getting rid of the |c signature. --- src/core.c/Cool.pm6 | 4 +++- src/core.c/Str.pm6 | 1 - 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/core.c/Cool.pm6 b/src/core.c/Cool.pm6 index 7d2f0504805..1b7f3605ec6 100644 --- a/src/core.c/Cool.pm6 +++ b/src/core.c/Cool.pm6 @@ -314,7 +314,9 @@ my class Cool { # declared in BOOTSTRAP multi method lines(Cool:D: :$count! ) { self.Str.lines(:$count) } multi method lines(Cool:D: $limit ) { self.Str.lines($limit) } - method words(Cool:D: |c) { self.Str.words(|c) } + proto method words(|) {*} + multi method words(Cool:D:) { self.Str.words } + multi method words(Cool:D: $limit ) { self.Str.words($limit) } method subst(|c) { $/ := nqp::getlexcaller('$/'); diff --git a/src/core.c/Str.pm6 b/src/core.c/Str.pm6 index 066ba5d25e7..8f263fa3dee 100644 --- a/src/core.c/Str.pm6 +++ b/src/core.c/Str.pm6 @@ -2216,7 +2216,6 @@ my class Str does Stringy { # declared in BOOTSTRAP nqp::islt_i($pos, $left) ?? '' !! nqp::p6box_s(nqp::substr($str, $left, $pos + 1 - $left)); } - proto method words(|) {*} multi method words(Str:D: $limit --> Seq:D) { nqp::istype($limit,Whatever) || $limit == Inf ?? self.words