From 24ddff73b23aa222d5b5882eef084e0d1b9c5534 Mon Sep 17 00:00:00 2001 From: Elizabeth Mattijsen Date: Tue, 27 Mar 2018 09:39:58 +0200 Subject: [PATCH] Micro-optimize pull-one for -> $a, $b { PHASER foo } case Use nqp::isconcrete (which returns 0/1) instead of .DEFINITE (which returns a full-blown Bool) --- src/core/Any-iterable-methods.pm6 | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/core/Any-iterable-methods.pm6 b/src/core/Any-iterable-methods.pm6 index 77a5eb57499..65edcd6a82e 100644 --- a/src/core/Any-iterable-methods.pm6 +++ b/src/core/Any-iterable-methods.pm6 @@ -672,9 +672,11 @@ Did you mean to add a stub (\{...\}) or did you mean to .classify?" method is-lazy() { $!source.is-lazy } method pull-one() is raw { - $!value-buffer.DEFINITE - ?? nqp::setelems($!value-buffer, 0) - !! ($!value-buffer := IterationBuffer.new); + nqp::if( + nqp::isconcrete($!value-buffer), + nqp::setelems($!value-buffer,0), + ($!value-buffer := nqp::create(IterationBuffer)) + ); my int $redo = 1; my $result;