# New Ticket Created by Sam Vilain # Please include the string: [perl #41818] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=41818 >
Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: binary MIME-Version: 1.0 X-Mailer: MIME-tools 5.419 (Entity 5.419) This is a combined patch submission which I made using a script that munged output from `git-format-patch HEAD~4`. The patches are: - [t/op] pin/unpin op test by smash t/op/string-mem.t | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 55 insertions(+), 0 deletions(-) create mode 100644 t/op/string-mem.t - Convert t/ops/string-mem.t to use Test/More.pir t/op/string-mem.t | 76 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 67 insertions(+), 9 deletions(-) - Segment t/op/string-mem.t test t/op/string-mem.t | 15 ++++++++++++--- 1 files changed, 12 insertions(+), 3 deletions(-) - t/op/string-mem.t: add test for a couple of stringinfo calls t/op/string-mem.t | 37 ++++++++++++++++++++++++++++++++++++- 1 files changed, 36 insertions(+), 1 deletions(-) Content-Type: text/x-patch; name="t-op-pin-unpin-op-test-by-smash.patch" Content-Disposition: inline; filename="t-op-pin-unpin-op-test-by-smash.patch" Content-Transfer-Encoding: binary Content-Description: [PATCH] [t/op] pin/unpin op test by smash MIME-Version: 1.0 X-Mailer: MIME-tools 5.419 (Entity 5.419) [t/op] pin/unpin op test by smash --- t/op/string-mem.t | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 55 insertions(+), 0 deletions(-) create mode 100644 t/op/string-mem.t diff --git a/t/op/string-mem.t b/t/op/string-mem.t new file mode 100644 index 0000000..e5c38ed --- /dev/null +++ b/t/op/string-mem.t @@ -0,0 +1,55 @@ +.sub main :main + .local int init, before, after + .include 'stringinfo.pasm' + .include 'interpinfo.pasm' + + $S0 = 'life' + $S1 = 'life' + $S2 = 'life' + $S3 = 'life' + $S4 = 'life' + $S5 = 'life' + $S6 = 'love' + $S7 = 'life' + $S8 = 'life' + $S9 = 'life' + + pin $S6 + null $S0 + null $S1 + null $S2 + null $S3 + null $S4 + null $S5 + null $S7 + null $S8 + null $S9 + + init = stringinfo $S6, .STRINGINFO_STRSTART + + $I0 = interpinfo .INTERPINFO_COLLECT_RUNS + loop1: + collect + $I1 = interpinfo .INTERPINFO_COLLECT_RUNS + eq $I0, $I1, loop1 + + before = stringinfo $S6, .STRINGINFO_STRSTART + unpin $S6 + + $I0 = interpinfo .INTERPINFO_COLLECT_RUNS + loop2: + collect + $I1 = interpinfo .INTERPINFO_COLLECT_RUNS + eq $I0, $I1, loop1 + + after = stringinfo $S6, .STRINGINFO_STRSTART + + $S0 = 'ok' + eq init, before, next + $S0 = 'nok' + next: + ne before, after, ok + $S0 = 'nok' + ok: + print $S0 +.end -- 1.5.0.2.21.gdcde2 Content-Type: text/x-patch; name="Convert-t-ops-string-mem.t-to-use-Test-More.pir.patch" Content-Disposition: inline; filename="Convert-t-ops-string-mem.t-to-use-Test-More.pir.patch" Content-Transfer-Encoding: binary Content-Description: [PATCH] Convert t/ops/string-mem.t to use Test/More.pir MIME-Version: 1.0 X-Mailer: MIME-tools 5.419 (Entity 5.419) Convert t/ops/string-mem.t to use Test/More.pir --- t/op/string-mem.t | 76 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 67 insertions(+), 9 deletions(-) diff --git a/t/op/string-mem.t b/t/op/string-mem.t index e5c38ed..bc39387 100644 --- a/t/op/string-mem.t +++ b/t/op/string-mem.t @@ -1,8 +1,51 @@ -.sub main :main +#!./parrot +# Copyright (C) 2007, The Perl Foundation. +# $Id$ + +=head1 NAME + +t/op/string-mem.t - test memory representation related string operations + + +=head1 SYNOPSIS + + % prove t/op/string-mem.t + +=head1 DESCRIPTION + +Tests string ops related to low-level representation of strings, such as: + +=over + +=item * + +stringinfo + +=item * + +pin/unpin + +=back + +=cut + +.include "hllmacros.pir" + +.sub _main :main + load_bytecode 'library/Test/More.pir' + + .local pmc _ + .IMPORT( 'Test::More', 'plan', _ ) + .IMPORT( 'Test::More', 'ok', _ ) + .IMPORT( 'Test::More', 'is', _ ) + .IMPORT( 'Test::More', 'isnt', _ ) + .local int init, before, after .include 'stringinfo.pasm' .include 'interpinfo.pasm' + plan(2) + $S0 = 'life' $S1 = 'life' $S2 = 'life' @@ -44,12 +87,27 @@ after = stringinfo $S6, .STRINGINFO_STRSTART - $S0 = 'ok' - eq init, before, next - $S0 = 'nok' - next: - ne before, after, ok - $S0 = 'nok' - ok: - print $S0 + is( init, before, "pin/collect didn't change memory address" ) + $I0 = cmp after, before + print "# init: " + $S0 = init + print init + print ", before: " + $S0 = before + print before + print ", after: " + $S0 = after + print after + print ", cmp: " + $S0 = $I0 + say $S0 + ok( $I0, "location of string changed by unpin/collect" ) + .end + + +# Local Variables: +# mode: pir +# fill-column: 100 +# End: +# vim: expandtab shiftwidth=4: -- 1.5.0.2.21.gdcde2 Content-Type: text/x-patch; name="Segment-t-op-string-mem.t-test.patch" Content-Disposition: inline; filename="Segment-t-op-string-mem.t-test.patch" Content-Transfer-Encoding: binary Content-Description: [PATCH] Segment t/op/string-mem.t test MIME-Version: 1.0 X-Mailer: MIME-tools 5.419 (Entity 5.419) Segment t/op/string-mem.t test --- t/op/string-mem.t | 15 ++++++++++++--- 1 files changed, 12 insertions(+), 3 deletions(-) diff --git a/t/op/string-mem.t b/t/op/string-mem.t index bc39387..ddb4139 100644 --- a/t/op/string-mem.t +++ b/t/op/string-mem.t @@ -30,21 +30,30 @@ pin/unpin =cut .include "hllmacros.pir" +.include 'stringinfo.pasm' +.include 'interpinfo.pasm' + +.const int TESTS = 2 .sub _main :main load_bytecode 'library/Test/More.pir' .local pmc _ .IMPORT( 'Test::More', 'plan', _ ) + plan(TESTS) + + test_pin_unpin() +.end + +.sub test_pin_unpin + + .local pmc _ .IMPORT( 'Test::More', 'ok', _ ) .IMPORT( 'Test::More', 'is', _ ) .IMPORT( 'Test::More', 'isnt', _ ) .local int init, before, after - .include 'stringinfo.pasm' - .include 'interpinfo.pasm' - plan(2) $S0 = 'life' $S1 = 'life' -- 1.5.0.2.21.gdcde2 Content-Type: text/x-patch; name="t-op-string-mem.t-add-test-for-a-couple-of-stringin.patch" Content-Disposition: inline; filename="t-op-string-mem.t-add-test-for-a-couple-of-stringin.patch" Content-Transfer-Encoding: binary Content-Description: [PATCH] t/op/string-mem.t: add test for a couple of stringinfo calls MIME-Version: 1.0 X-Mailer: MIME-tools 5.419 (Entity 5.419) t/op/string-mem.t: add test for a couple of stringinfo calls Test that we can see how COW strings behave using the stringinfo opcode. --- t/op/string-mem.t | 37 ++++++++++++++++++++++++++++++++++++- 1 files changed, 36 insertions(+), 1 deletions(-) diff --git a/t/op/string-mem.t b/t/op/string-mem.t index ddb4139..57fe583 100644 --- a/t/op/string-mem.t +++ b/t/op/string-mem.t @@ -33,7 +33,7 @@ pin/unpin .include 'stringinfo.pasm' .include 'interpinfo.pasm' -.const int TESTS = 2 +.const int TESTS = 7 .sub _main :main load_bytecode 'library/Test/More.pir' @@ -42,6 +42,7 @@ pin/unpin .IMPORT( 'Test::More', 'plan', _ ) plan(TESTS) + test_stringinfo() test_pin_unpin() .end @@ -114,6 +115,40 @@ pin/unpin .end +.sub test_stringinfo + .local pmc _ + .IMPORT( 'Test::More', 'ok', _ ) + .IMPORT( 'Test::More', 'is', _ ) + .IMPORT( 'Test::More', 'isnt', _ ) + + $S1 = "Hello, world" + $S0 = $S1 + $I0 = stringinfo $S0, .STRINGINFO_STRSTART + $I1 = stringinfo $S1, .STRINGINFO_STRSTART + is($I0, $I1, "stringinfo - test STRSTART can see COW in action") + + $I0 = stringinfo $S0, .STRINGINFO_HEADER + $I1 = stringinfo $S1, .STRINGINFO_HEADER + is($I0, $I1, "stringinfo - STRHEADER on full COW strings keeps same value") + + $S2 = substr $S0, 7 + is($S2, "world", "sanity check") + $I4 = stringinfo $S0, .STRINGINFO_STRSTART + $I2 = stringinfo $S2, .STRINGINFO_STRSTART + $I3 = $I2 - $I4 + is($I3, 7, "stringinfo - STRSTART can see COW in action") + + $I2 = stringinfo $S2, .STRINGINFO_HEADER + isnt($I0, $I2, "stringinfo - STRHEADER on different COW strings same value") + + +.end + +#.constant STRINGINFO_STRSTART 2 +#.constant STRINGINFO_BUFLEN 3 +#.constant STRINGINFO_FLAGS 4 +#.constant STRINGINFO_BUFUSED 5 +#.constant STRINGINFO_STRLEN 6 # Local Variables: # mode: pir -- 1.5.0.2.21.gdcde2