1*5486feefSafresh1#!perl 2*5486feefSafresh1BEGIN { 3*5486feefSafresh1 chdir 't' if -d 't'; 4*5486feefSafresh1 @INC = "../lib"; 5*5486feefSafresh1 require './test.pl'; 6*5486feefSafresh1} 7*5486feefSafresh1 8*5486feefSafresh1use Config qw(%Config); 9*5486feefSafresh1 10*5486feefSafresh1# 2G each for the $p2g, $n2g and $t 11*5486feefSafresh1 12*5486feefSafresh1$ENV{PERL_TEST_MEMORY} >= 11 13*5486feefSafresh1 or skip_all("Need ~11Gb for this test"); 14*5486feefSafresh1$Config{ptrsize} >= 8 15*5486feefSafresh1 or skip_all("Need 64-bit pointers for this test"); 16*5486feefSafresh1 17*5486feefSafresh1my $p = "A"; 18*5486feefSafresh1my $n = ~$p; 19*5486feefSafresh1 20*5486feefSafresh1my $sz = 0x8000_0001; 21*5486feefSafresh1 22*5486feefSafresh1my $p2g = ($p x $sz); 23*5486feefSafresh1 24*5486feefSafresh1is(length $p2g, $sz, "check p2g size"); 25*5486feefSafresh1 26*5486feefSafresh1my $t = ($p x $sz); 27*5486feefSafresh1ok($t eq $p2g, "check scalar repeat with large count"); 28*5486feefSafresh1undef $t; 29*5486feefSafresh1my $two = 2; # no constant folding 30*5486feefSafresh1 31*5486feefSafresh1$t = ($p2g x $two); 32*5486feefSafresh1ok($t eq "$p2g$p2g", "check scalar repeat with large source"); 33*5486feefSafresh1undef $t; 34*5486feefSafresh1 35*5486feefSafresh1$t = ~$p2g; 36*5486feefSafresh1my $n2g = ($n x $sz); 37*5486feefSafresh1 38*5486feefSafresh1is(length $n2g, $sz, "check p2g size"); 39*5486feefSafresh1 40*5486feefSafresh1# don't risk a 4GB diagnostic if they don't match 41*5486feefSafresh1ok($t eq $n2g, "string complement very large string"); 42*5486feefSafresh1 43*5486feefSafresh1done_testing(); 44*5486feefSafresh1 45