small string #141

Open
rurban opened this Issue Apr 30, 2016 · 0 comments

Projects

None yet

1 participant

@rurban
Member
rurban commented Apr 30, 2016 edited

Store the PV bytes directly in the head, no body, just a simple short 3-15 char asciiz string. So far 7 with 64bit.
Similar as Mike Pall's lua patch or my p2 variant, just easier, as we already have a free sv_any ptr to the string.
And if we move the sv_flags before the refcnt, and use most refcnt bytes (leaving one, with the highest bit for this special case), we can store more than just 3 chars for 32bit and 7 chars for 64bit. max 4 more on 32bit and 8 more on 64bit.

@rurban rurban self-assigned this Apr 30, 2016
@rurban rurban added the enhancement label Apr 30, 2016
@rurban rurban added this to the v5.26.0 milestone Jun 8, 2016
@rurban rurban added a commit that referenced this issue Nov 8, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

TODO: grow, set, ...

See [cperl #141]
17deba2
@rurban rurban added a commit that referenced this issue Nov 8, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

TODO: set, ...

See [cperl #141]
53735dc
@rurban rurban added a commit that referenced this issue Nov 11, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

TODO: set, ...

See [cperl #141]
a12436d
@rurban rurban added a commit that referenced this issue Nov 12, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

TODO: set, ...

See [cperl #141]
aac9b80
@rurban rurban added a commit that referenced this issue Nov 12, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

TODO: set, ...

See [cperl #141]
265f298
@rurban rurban added a commit that referenced this issue Nov 13, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

TODO: set, ...

See [cperl #141]
e20f346
@rurban rurban added a commit that referenced this issue Nov 13, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

TODO: set, ...

See [cperl #141]
59d5154
@rurban rurban added a commit that referenced this issue Nov 13, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

TODO: set, ...

See [cperl #141]
9a6fd12
@rurban rurban added a commit that referenced this issue Nov 13, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

TODO: set, ...

See [cperl #141]
54542df
@rurban rurban added a commit that referenced this issue Nov 14, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

TODO: arena or vprintf buffer overwrites. with this version we can now
run benchmarks.

See [cperl #141]
d8630a0
@rurban rurban added a commit that referenced this issue Nov 14, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

TODO: arena or vprintf buffer overwrites. with this version we can now
run benchmarks.

See [cperl #141]
ba2e296
@rurban rurban added a commit that referenced this issue Nov 14, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

TODO: arena or vprintf buffer overwrites. with this version we can now
run benchmarks.

See [cperl #141]
03ba6a4
@rurban rurban added a commit that referenced this issue Nov 14, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

TODO: arena or vprintf buffer overwrites. with this version we can now
run benchmarks.

See [cperl #141]
f8a2c36
@rurban rurban added a commit that referenced this issue Nov 14, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
a842bc8
@rurban rurban added a commit that referenced this issue Nov 15, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
f848af9
@rurban rurban added a commit that referenced this issue Nov 15, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
472628a
@rurban rurban added a commit that referenced this issue Nov 15, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
4ef7e1e
@rurban rurban added a commit that referenced this issue Nov 18, 2016
@rurban rurban SvGROW: no overallocation
e.g. adding ".pm" to "warnings": 8 + 3 = 11. needing a len=12.
SvLEN is already 12, but sv_grow realloced to 8+3+3=14+1=15->16.

various people decided over time in the front and in the back to add just
another one for safety.  sv_grow adds the one for \0 already, so there's no
need in the front.  only the SvGROW macro logic, which checks against SvLEN.
But even this had it off-by-one.

memory numbers (DEBUGGING):
miniperl -e0            262890 => 262833 byte
miniperl -Ilib -E0      425636 => 423040 byte
perl Config ...         797578 => 796932 byte

$ PERL_HASH_SEED=0 valgrind --tool=massif --massif-out-file=massif.perl.p0
./perl -Ilib -MConfig -Mwarnings -Mstrict -V:ccflags ; grep -h mem_heap_B=
massif.perl.p0 |cut -c12-|sort -rn|head -n1

With #141 smallstrings the first goes down to 262689 bytes.
351589b
@rurban rurban added a commit that referenced this issue Nov 18, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
b64a6fa
@rurban rurban added a commit that referenced this issue Nov 20, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
4acbc9a
@rurban rurban added a commit that referenced this issue Nov 20, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
9952d57
@rurban rurban added a commit that referenced this issue Nov 22, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
d6bb399
@rurban rurban added a commit that referenced this issue Nov 22, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
e75cc98
@rurban rurban added a commit that referenced this issue Nov 23, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
212ace5
@rurban rurban added a commit that referenced this issue Nov 27, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
4ec149a
@rurban rurban added a commit that referenced this issue Nov 27, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
09026ac
@rurban rurban added a commit that referenced this issue Nov 27, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
157046d
@rurban rurban added a commit that referenced this issue Nov 28, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
22e7c3b
@rurban rurban added a commit that referenced this issue Nov 30, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
e79d368
@rurban rurban added the in progress label Dec 1, 2016
@rurban rurban added a commit that referenced this issue Dec 1, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
5d8a5cf
@rurban rurban added a commit that referenced this issue Dec 4, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
1930354
@rurban rurban added a commit that referenced this issue Dec 4, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
aeb652d
@rurban rurban added a commit that referenced this issue Dec 10, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
5adc3fd
@rurban rurban added a commit that referenced this issue Dec 11, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
6dc6aef
@rurban rurban added a commit that referenced this issue Dec 31, 2016
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
db75bb0
@rurban rurban added a commit that referenced this issue Jan 1, 2017
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
c9da6cc
@rurban rurban added a commit that referenced this issue Jan 1, 2017
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
417ed70
@rurban rurban added a commit that referenced this issue Jan 2, 2017
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
69c7dbc
@rurban rurban added a commit that referenced this issue Jan 2, 2017
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
f35f0c9
@rurban rurban added a commit that referenced this issue Jan 4, 2017
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
20ee7fe
@rurban rurban added a commit that referenced this issue Jan 4, 2017
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
be03150
@rurban rurban added a commit that referenced this issue Jan 4, 2017
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
8f05fbc
@rurban rurban added a commit that referenced this issue Jan 7, 2017
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
3473c7c
@rurban rurban added a commit that referenced this issue Jan 9, 2017
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
543940c
@rurban rurban added a commit that referenced this issue Jan 13, 2017
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
19b8e83
@rurban rurban added a commit that referenced this issue Jan 14, 2017
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
dcbbeb2
@rurban rurban added a commit that referenced this issue Jan 15, 2017
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
cb447a0
@rurban rurban added a commit that referenced this issue Jan 15, 2017
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
3700abc
@rurban rurban added a commit that referenced this issue Jan 17, 2017
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
c9122f4
@rurban rurban added a commit that referenced this issue Jan 24, 2017
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
a1ef56f
@rurban rurban added a commit that referenced this issue Jan 25, 2017
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
5f1dc27
@rurban rurban added a commit that referenced this issue Jan 27, 2017
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
69e0556
@rurban rurban added a commit that referenced this issue Jan 30, 2017
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
5e9e6f2
@rurban rurban added a commit that referenced this issue Jan 31, 2017
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
53cad58
@rurban rurban added a commit that referenced this issue Feb 4, 2017
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
336436f
@rurban rurban added a commit that referenced this issue Feb 8, 2017
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
1144c60
@rurban rurban added a commit that referenced this issue Feb 8, 2017
@rurban rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
1c0f12e
@rurban rurban added a commit that referenced this issue Feb 12, 2017
@rurban @rurban rurban + rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
fa03bbc
@rurban rurban added a commit that referenced this issue Feb 16, 2017
@rurban @rurban rurban + rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
03c97d4
@rurban rurban added a commit that referenced this issue Feb 16, 2017
@rurban @rurban rurban + rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
843133a
@rurban rurban added a commit that referenced this issue Feb 18, 2017
@rurban @rurban rurban + rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
66db503
@rurban rurban added a commit that referenced this issue Feb 19, 2017
@rurban @rurban rurban + rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
2368cda
@rurban rurban added a commit that referenced this issue Feb 19, 2017
@rurban @rurban rurban + rurban smallstring: SPV, len<SPV_MAX, SvSPOK() WIP
stored inlined in SvPVX, pointing from (char*)SvANY.
The SvSPOK() check using the ptr from SvANY to pv is easier
than checking the flags. Needed flags are only SVs_TEMP and SVf_UTF8.
Now we could even move the flags down and use it to store even more chars.
Now SvPVX,SvCUR,SvLEN are really not lvalues anymore.
Add a SvCUR_inc and SvCUR_dec for convenience.

Add a fast shortcut for bodyless sv_setsv()/SPV to copy just the heads
and adjust SvANY.

See [cperl #141]
6d540c5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment