Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package nqp for openSUSE:Factory checked in at 2021-08-23 10:08:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/nqp (Old) and /work/SRC/openSUSE:Factory/.nqp.new.1899 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nqp" Mon Aug 23 10:08:17 2021 rev:39 rq:913544 version:2021.08 Changes: -------- --- /work/SRC/openSUSE:Factory/nqp/nqp.changes 2021-07-25 20:09:28.119429955 +0200 +++ /work/SRC/openSUSE:Factory/.nqp.new.1899/nqp.changes 2021-08-23 10:09:26.136157834 +0200 @@ -1,0 +2,6 @@ +Sun Aug 22 10:19:02 CEST 2021 - n...@detonation.org + +- update to version 2021.08 + * Fix several issues on the JVM + +------------------------------------------------------------------- Old: ---- nqp-2021.07.tar.gz New: ---- nqp-2021.08.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ nqp.spec ++++++ --- /var/tmp/diff_new_pack.23Q1PA/_old 2021-08-23 10:09:26.744157125 +0200 +++ /var/tmp/diff_new_pack.23Q1PA/_new 2021-08-23 10:09:26.748157121 +0200 @@ -17,15 +17,15 @@ Name: nqp -Version: 2021.07 +Version: 2021.08 Release: 1.1 Summary: Not Quite Perl License: Artistic-2.0 Group: Development/Languages/Other URL: http://rakudo.org/ Source: nqp-%{version}.tar.gz -BuildRequires: moarvm-devel >= 2021.07 -Requires: moarvm >= 2021.07 +BuildRequires: moarvm-devel >= 2021.08 +Requires: moarvm >= 2021.08 BuildRoot: %{_tmppath}/%{name}-%{version}-build %description ++++++ nqp-2021.07.tar.gz -> nqp-2021.08.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nqp-2021.07/VERSION new/nqp-2021.08/VERSION --- old/nqp-2021.07/VERSION 2021-07-24 17:07:56.000000000 +0200 +++ new/nqp-2021.08/VERSION 2021-08-21 15:19:53.000000000 +0200 @@ -1 +1 @@ -2021.07 +2021.08 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nqp-2021.07/docs/ops.markdown new/nqp-2021.08/docs/ops.markdown --- old/nqp-2021.07/docs/ops.markdown 2021-07-24 17:07:37.000000000 +0200 +++ new/nqp-2021.08/docs/ops.markdown 2021-08-21 15:13:31.000000000 +0200 @@ -3260,16 +3260,10 @@ time sleeping is spent.) Returns the passed in number. ## time -* `time_i(--> int)` (DEPRECATED) -* `time_n(--> num)` (DEPRECATED) * `time(--> int)` Return the time in nanoseconds since January 1, 1970 UTC (1970-01-01T00:00:00Z). -The **DEPRECATED** `_i` and `_n` variants return the number of seconds -since January 1, 1970 UTC. `_i` as an integer value, `_n` as a fractional -amount. - # <a id="trig"></a> Trigonometric ## acos diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nqp-2021.07/src/vm/jvm/QAST/Compiler.nqp new/nqp-2021.08/src/vm/jvm/QAST/Compiler.nqp --- old/nqp-2021.07/src/vm/jvm/QAST/Compiler.nqp 2021-07-24 17:07:37.000000000 +0200 +++ new/nqp-2021.08/src/vm/jvm/QAST/Compiler.nqp 2021-08-21 15:13:31.000000000 +0200 @@ -831,11 +831,33 @@ # Emit test. if $is_withy { + $il.append($qastcomp.coercion($cond, $RT_OBJ)); + + # Use 'findmethod' to detect and invoke method 'defined'. + $il.append($DUP); + $il.append(JAST::PushSVal.new( :value('defined') )); $il.append($ALOAD_1); $il.append(JAST::Instruction.new(:op('invokestatic'), - $TYPE_OPS, 'isconcrete', 'Long', $TYPE_SMO, $TYPE_TC)); - $il.append($IVAL_ZERO); - $il.append($LCMP); + $TYPE_OPS, 'findmethod', $TYPE_SMO, $TYPE_SMO, $TYPE_STR, $TYPE_TC)); + + my $meth_temp := $*TA.fresh_o(); + my $cond_temp := $*TA.fresh_o(); + $il.append(JAST::Instruction.new( :op('astore'), $meth_temp)); + $il.append(JAST::Instruction.new( :op('astore'), $cond_temp)); + my $cs_idx := $*CODEREFS.get_callsite_idx([$ARG_OBJ], []); + my @argTypes := ['I', $TYPE_TC, $TYPE_SMO, $TYPE_SMO]; + $il.append(JAST::PushIndex.new( :value($cs_idx) )); + $il.append($ALOAD_1); + $il.append(JAST::Instruction.new( :op('aload'), $meth_temp )); + $il.append(JAST::Instruction.new( :op('aload'), $cond_temp )); + $il.append(savesite(JAST::InvokeDynamic.new( + 'indcall_noa', 'V', @argTypes, 'org/raku/nqp/runtime/IndyBootstrap', 'indcall_noa' + ))); + $il.append(JAST::Instruction.new( :op('aload'), 'cf' )); + $il.append(JAST::Instruction.new( :op('invokestatic'), $TYPE_OPS, + 'result_o', $TYPE_SMO, $TYPE_CF )); + + boolify_instructions($il, $RT_OBJ); } else { boolify_instructions($il, $cond.type); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nqp-2021.07/t/nqp/067-container.t new/nqp-2021.08/t/nqp/067-container.t --- old/nqp-2021.07/t/nqp/067-container.t 2021-07-24 17:07:37.000000000 +0200 +++ new/nqp-2021.08/t/nqp/067-container.t 2021-08-21 15:13:31.000000000 +0200 @@ -206,16 +206,23 @@ my $cont_for_with_container_defined := nqp::create(SimpleCont); nqp::assign($cont_for_with_container_defined, ValueWithDefined.new(defined => $cont_with_false_value)); + is(nqp::with($cont_for_with_defined, "good", "bad"), "good", 'with - defined case'); + is(nqp::with($cont_for_with_not_defined, "good", "bad"), "bad", 'with - undefined case'); if nqp::getcomp('nqp').backend.name eq 'jvm' { - skip('on the jvm nqp::with incorrectly checks for type object instead of calling defined', 6); + todo('on the jvm nqp::with needs more work', 1); + ok(0); } else { - is(nqp::with($cont_for_with_defined, "good", "bad"), "good", 'with - defined case'); - is(nqp::with($cont_for_with_not_defined, "good", "bad"), "bad", 'with - undefined case'); is(nqp::with($cont_for_with_container_defined, "good", "bad"), "good", 'with - defined returns container'); + } - is(nqp::without($cont_for_with_defined, "good", "bad"), "bad", 'without - defined case'); - is(nqp::without($cont_for_with_not_defined, "good", "bad"), "good", 'without - undefined case'); + is(nqp::without($cont_for_with_defined, "good", "bad"), "bad", 'without - defined case'); + is(nqp::without($cont_for_with_not_defined, "good", "bad"), "good", 'without - undefined case'); + if nqp::getcomp('nqp').backend.name eq 'jvm' { + todo('on the jvm nqp::with needs more work', 1); + ok(0); + } + else { is(nqp::without($cont_for_with_container_defined, "good", "bad"), "bad", 'without - defined returns container'); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nqp-2021.07/t/qast/01-qast.t new/nqp-2021.08/t/qast/01-qast.t --- old/nqp-2021.07/t/qast/01-qast.t 2021-07-24 17:07:37.000000000 +0200 +++ new/nqp-2021.08/t/qast/01-qast.t 2021-08-21 15:13:31.000000000 +0200 @@ -1453,71 +1453,67 @@ $dont_call := 0; -if nqp::getcomp('nqp').backend.name eq 'jvm' { - skip("with/without are broken on the jvm", 4); -} else { - my class IsDefined { - has int $!defined; - has $!left; - has $!right; - method new($defined, $left, $right) { - my $obj := nqp::create(self); - $obj.BUILD($defined, $left, $right); - $obj; - } - method BUILD($defined, $left, $right) { - $!defined := $defined; - $!left := $left; - $!right := $right; - } - method defined() { - $!defined; - } - method left() { - $!left; - } - method right() { - $!right; - } +my class IsDefined { + has int $!defined; + has $!left; + has $!right; + method new($defined, $left, $right) { + my $obj := nqp::create(self); + $obj.BUILD($defined, $left, $right); + $obj; } - - my sub with_arity($arity, $block) { - $block.arity($arity); - $block; + method BUILD($defined, $left, $right) { + $!defined := $defined; + $!left := $left; + $!right := $right; + } + method defined() { + $!defined; + } + method left() { + $!left; } + method right() { + $!right; + } +} - my $test := -> $op { - QAST::Block.new( - QAST::Var.new( :name<arg>, :scope<local>, :decl<param>), - QAST::Op.new( - :op($op), - QAST::Var.new(:name<arg>, :scope<local>), - with_arity(1, QAST::Block.new( - :blocktype<immediate>, - QAST::Op.new( - :op<callmethod>, - :name<left>, - QAST::Var.new(:name<b>, :scope<local>, :decl<param>) - ) - )), - with_arity(1, QAST::Block.new( - :blocktype<immediate>, - QAST::Op.new( - :op<callmethod>, - :name<right>, - QAST::Var.new(:name<b>, :scope<local>, :decl<param>) - ) - )) - ) - ); - }; - - is_qast_args($test('with'), [IsDefined.new(1, 'good', 'bad')], 'good', 'with op - defined'); - is_qast_args($test('with'), [IsDefined.new(0, 'good', 'bad')], 'bad', 'with op - not defined'); - is_qast_args($test('without'), [IsDefined.new(1, 'bad', 'good')], 'good', 'without op - defined'); - is_qast_args($test('without'), [IsDefined.new(0, 'bad', 'good')], 'bad', 'without op - not defined'); +my sub with_arity($arity, $block) { + $block.arity($arity); + $block; } +my $test := -> $op { + QAST::Block.new( + QAST::Var.new( :name<arg>, :scope<local>, :decl<param>), + QAST::Op.new( + :op($op), + QAST::Var.new(:name<arg>, :scope<local>), + with_arity(1, QAST::Block.new( + :blocktype<immediate>, + QAST::Op.new( + :op<callmethod>, + :name<left>, + QAST::Var.new(:name<b>, :scope<local>, :decl<param>) + ) + )), + with_arity(1, QAST::Block.new( + :blocktype<immediate>, + QAST::Op.new( + :op<callmethod>, + :name<right>, + QAST::Var.new(:name<b>, :scope<local>, :decl<param>) + ) + )) + ) + ); +}; + +is_qast_args($test('with'), [IsDefined.new(1, 'good', 'bad')], 'good', 'with op - defined'); +is_qast_args($test('with'), [IsDefined.new(0, 'good', 'bad')], 'bad', 'with op - not defined'); +is_qast_args($test('without'), [IsDefined.new(1, 'bad', 'good')], 'good', 'without op - defined'); +is_qast_args($test('without'), [IsDefined.new(0, 'bad', 'good')], 'bad', 'without op - not defined'); + if nqp::getcomp('nqp').backend.name eq 'jvm' { skip('children of a QAST::Var with a "param" decl are not implemented', 6); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nqp-2021.07/tools/templates/MOAR_REVISION new/nqp-2021.08/tools/templates/MOAR_REVISION --- old/nqp-2021.07/tools/templates/MOAR_REVISION 2021-07-24 17:07:56.000000000 +0200 +++ new/nqp-2021.08/tools/templates/MOAR_REVISION 2021-08-21 15:19:53.000000000 +0200 @@ -1 +1 @@ -2021.07 +2021.08