]> git.ipfire.org Git - thirdparty/zstd.git/log
thirdparty/zstd.git
8 years ago[zstdcli] Fix -t in streaming mode 770/head
Nick Terrell [Tue, 18 Jul 2017 21:45:49 +0000 (14:45 -0700)] 
[zstdcli] Fix -t in streaming mode

8 years agoMerge pull request #761 from paulcruz74/file-rename
Yann Collet [Fri, 14 Jul 2017 16:09:45 +0000 (09:09 -0700)] 
Merge pull request #761 from paulcruz74/file-rename

renamed pool.c to poolTests.c

8 years agoMerge pull request #762 from facebook/errorCodes
Yann Collet [Fri, 14 Jul 2017 16:09:22 +0000 (09:09 -0700)] 
Merge pull request #762 from facebook/errorCodes

pinned down error code enum values

8 years agofixed clang's -Wdocumentation 762/head
Yann Collet [Fri, 14 Jul 2017 01:58:30 +0000 (18:58 -0700)] 
fixed clang's -Wdocumentation

8 years agopinned down error code enum values
Yann Collet [Fri, 14 Jul 2017 00:12:16 +0000 (17:12 -0700)] 
pinned down error code enum values

Note : all error codes are changed by this new version,
but it's expected to be the last change for existing codes.

Codes are now grouped by category, and receive a manually attributed value.
The objective is to guarantee that
error code values will not change in the future
when introducing new codes.
Intentionnal empty spaces and ranges are defined
in order to keep room for potential new codes.

8 years agoMerge branch 'dev' of github.com:facebook/zstd into dev
Yann Collet [Thu, 13 Jul 2017 22:49:19 +0000 (15:49 -0700)] 
Merge branch 'dev' of github.com:facebook/zstd into dev

8 years agoupdated NEWS regarding #760
Yann Collet [Thu, 13 Jul 2017 22:34:44 +0000 (15:34 -0700)] 
updated NEWS regarding #760

8 years agoMerge pull request #759 from terrelln/real-block-split
Yann Collet [Thu, 13 Jul 2017 17:24:19 +0000 (10:24 -0700)] 
Merge pull request #759 from terrelln/real-block-split

[libzstd] Pull CTables into sub-structure

8 years agopolicy change : ZSTDMT automatically caps nbThreads to ZSTDMT_NBTHREADS_MAX (#760)
Yann Collet [Thu, 13 Jul 2017 17:10:13 +0000 (10:10 -0700)] 
policy change : ZSTDMT automatically caps nbThreads to ZSTDMT_NBTHREADS_MAX (#760)

Previously, ZSTDMT would refuse to create the compressor.
Also : increased ZSTDMT_NBTHREADS_MAX to 256,
updated doc,
and added relevant test

8 years agoswitched ZSTDMT_compress_advanced() last argument to overlapLog
Yann Collet [Thu, 13 Jul 2017 09:22:58 +0000 (02:22 -0700)] 
switched ZSTDMT_compress_advanced() last argument to overlapLog

overlapRLog (== 9 - overlapLog) was a bit "strange"
as all other public entry points use overlapLog

8 years agoclarified comment on ZSTD_p_contentSizeFlag
Yann Collet [Thu, 13 Jul 2017 09:09:07 +0000 (02:09 -0700)] 
clarified comment on ZSTD_p_contentSizeFlag

8 years ago[libzstd] Pull CTables into sub-structure 759/head
Nick Terrell [Thu, 13 Jul 2017 02:08:24 +0000 (19:08 -0700)] 
[libzstd] Pull CTables into sub-structure

8 years agoMerge pull request #756 from facebook/memOpt
Yann Collet [Thu, 13 Jul 2017 01:32:37 +0000 (18:32 -0700)] 
Merge pull request #756 from facebook/memOpt

Memory optimisations for ZSTDMT

8 years agoMerge branch 'dev' of github.com:facebook/zstd into dev
Yann Collet [Wed, 12 Jul 2017 21:38:36 +0000 (14:38 -0700)] 
Merge branch 'dev' of github.com:facebook/zstd into dev

8 years agoslightly increased buffer pool, to cover normal "full load" scenarios 756/head
Yann Collet [Wed, 12 Jul 2017 21:23:34 +0000 (14:23 -0700)] 
slightly increased buffer pool, to cover normal "full load" scenarios

2 buffers per active worker
+ 1 buffer for input loading
+ 1 buffer for "next input" when submitting current one
+ 1 buffer stuck in queue

8 years agofix : ZSTDMT_compress_advanced() correctly generates checksum
Yann Collet [Wed, 12 Jul 2017 00:18:26 +0000 (17:18 -0700)] 
fix : ZSTDMT_compress_advanced() correctly generates checksum

when params.fParams.checksumFlag==1.
This use case used to be impossible when only ZSTD_compress() was available

8 years agorelease input buffers from inside worker thread
Yann Collet [Tue, 11 Jul 2017 22:56:40 +0000 (15:56 -0700)] 
release input buffers from inside worker thread

buffers are released sooner, which makes them available faster for next job.
=> decreases total nb of buffers necessary

8 years agobuffer pool : all buffers have same size
Yann Collet [Tue, 11 Jul 2017 22:17:25 +0000 (15:17 -0700)] 
buffer pool : all buffers have same size

to reduce memory fragmentation.
They can be used for in or out, interchangeably.

8 years agozstdmt : intermediate outBuffer allocated from within worker
Yann Collet [Tue, 11 Jul 2017 21:59:10 +0000 (14:59 -0700)] 
zstdmt : intermediate outBuffer allocated from within worker

reduces total amount of memory needed,
since jobs in queue do not have an outBuffer pre-reserved now

8 years agobuffer pool can be invoked from multiple threads
Yann Collet [Tue, 11 Jul 2017 21:14:07 +0000 (14:14 -0700)] 
buffer pool can be invoked from multiple threads

8 years agoMerge pull request #755 from jacquesg/solaris
Yann Collet [Tue, 11 Jul 2017 19:11:44 +0000 (12:11 -0700)] 
Merge pull request #755 from jacquesg/solaris

Solaris fix

8 years agofix missing symbol 'nanosleep' for Solaris 755/head
Jacques Germishuys [Tue, 11 Jul 2017 17:25:14 +0000 (19:25 +0200)] 
fix missing symbol 'nanosleep' for Solaris

8 years agozstdmt: removed margin for improved memory usage
Yann Collet [Tue, 11 Jul 2017 15:54:29 +0000 (08:54 -0700)] 
zstdmt: removed margin for improved memory usage

8 years agoimproved ZSTDMT_compress() memory usage
Yann Collet [Tue, 11 Jul 2017 00:16:41 +0000 (17:16 -0700)] 
improved ZSTDMT_compress() memory usage

does not need the input buffer for streaming operations

also : reduced a few tests time length

8 years agooptimized memory usage for ZSTDMT_compress()
Yann Collet [Mon, 10 Jul 2017 23:30:55 +0000 (16:30 -0700)] 
optimized memory usage for ZSTDMT_compress()

Previously, each job would reserve a CCtx right before being posted.
The CCtx would be "part of the job description",
and only released when the job is completed (aka flushed).
For ZSTDMT_compress(), which creates all jobs first and only join at the end,
that meant one CCtx per job.
The nb of jobs used to be == nb of threads,
but since latest modification,
which reduces the size of jobs in order to spread the load of difficult areas,
it also increases the nb of jobs for large sources / small compression level.
This resulted in many more CCtx being created.

In this new version, CCtx are reserved within the worker thread.
It guaranteea there cannot be more CCtx reserved than workers (<= nb threads).

To do that, it required to make the CCtx Pool multi-threading-safe :
it can now be called from multiple threads in parallel.

8 years agofix : custom allocator correctly propagated to child contexts
Yann Collet [Mon, 10 Jul 2017 21:21:40 +0000 (14:21 -0700)] 
fix : custom allocator correctly propagated to child contexts

8 years agoextended fuzzer MT memory tests
Yann Collet [Mon, 10 Jul 2017 21:09:16 +0000 (14:09 -0700)] 
extended fuzzer MT memory tests

8 years agofix : propagate custom allocator to ZSTDMT though ZSTD_CCtx_setParameter()
Yann Collet [Mon, 10 Jul 2017 21:02:33 +0000 (14:02 -0700)] 
fix : propagate custom allocator to ZSTDMT though ZSTD_CCtx_setParameter()

also : compile fuzzer with MT enabled

8 years agoadded --memtest to fuzzer
Yann Collet [Mon, 10 Jul 2017 20:48:41 +0000 (13:48 -0700)] 
added --memtest to fuzzer

8 years agoadded ZSTD_sizeof_CCtx() test
Yann Collet [Mon, 10 Jul 2017 19:29:57 +0000 (12:29 -0700)] 
added ZSTD_sizeof_CCtx() test

8 years agorenamed pool.c to poolTests.c 761/head
Paul Cruz [Mon, 10 Jul 2017 18:32:30 +0000 (11:32 -0700)] 
renamed pool.c to poolTests.c

8 years agobumped version nb to v1.3.1
Yann Collet [Sat, 8 Jul 2017 11:55:09 +0000 (04:55 -0700)] 
bumped version nb to v1.3.1

8 years agofixed several conversion warnings
Yann Collet [Sat, 8 Jul 2017 00:13:12 +0000 (17:13 -0700)] 
fixed several conversion warnings

8 years agoremoved zbufftest from list of `all` tests
Yann Collet [Fri, 7 Jul 2017 23:16:14 +0000 (16:16 -0700)] 
removed zbufftest from list of `all` tests

8 years agofixed minor Visual compilation limitation
Yann Collet [Fri, 7 Jul 2017 23:14:17 +0000 (16:14 -0700)] 
fixed minor Visual compilation limitation

8 years agofixed minor cast warning
Yann Collet [Fri, 7 Jul 2017 23:09:47 +0000 (16:09 -0700)] 
fixed minor cast warning

8 years agotarget gpptest uses CXX environment variable
Yann Collet [Fri, 7 Jul 2017 22:55:41 +0000 (15:55 -0700)] 
target gpptest uses CXX environment variable

8 years agoMerge branch 'dev' of github.com:facebook/zstd into dev
Yann Collet [Fri, 7 Jul 2017 22:53:20 +0000 (15:53 -0700)] 
Merge branch 'dev' of github.com:facebook/zstd into dev

8 years agonew field frameHeader.headerSize
Yann Collet [Fri, 7 Jul 2017 22:51:24 +0000 (15:51 -0700)] 
new field frameHeader.headerSize

8 years agoZSTD_getFrameHeader : control of windowSize limits is delegated to caller
Yann Collet [Fri, 7 Jul 2017 22:32:12 +0000 (15:32 -0700)] 
ZSTD_getFrameHeader : control of windowSize limits is delegated to caller

Extracting frame header is a separate operation.
It's now possible to get frame header, whatever the window size set in it.

8 years agonew field : ZSTD_frameHeader.frameType
Yann Collet [Fri, 7 Jul 2017 22:21:35 +0000 (15:21 -0700)] 
new field : ZSTD_frameHeader.frameType

Makes frame type (zstd,skippable) detection more straighforward.
ZSTD_getFrameHeader set frameContentSize=ZSTD_CONTENTSIZE_UNKNOWN to mean "field not present"

8 years agoextended frameHeader.windowSize to unsigned long long
Yann Collet [Fri, 7 Jul 2017 21:19:01 +0000 (14:19 -0700)] 
extended frameHeader.windowSize to unsigned long long

8 years agoMerge pull request #751 from ivuk/fix-typo
Yann Collet [Thu, 6 Jul 2017 19:06:43 +0000 (12:06 -0700)] 
Merge pull request #751 from ivuk/fix-typo

Fix typos in README.md

8 years agoFix typos in README.md 751/head
Igor Vuk [Thu, 6 Jul 2017 18:43:14 +0000 (20:43 +0200)] 
Fix typos in README.md

8 years agofixed fullbench, part 2
Yann Collet [Thu, 6 Jul 2017 09:48:00 +0000 (02:48 -0700)] 
fixed fullbench, part 2

8 years agofixed fullbench
Yann Collet [Thu, 6 Jul 2017 09:22:57 +0000 (02:22 -0700)] 
fixed fullbench

8 years agofixed #718, reported by @GregSlazinski, solution suggested by @mcmilk
Yann Collet [Thu, 6 Jul 2017 08:42:46 +0000 (01:42 -0700)] 
fixed #718, reported by @GregSlazinski, solution suggested by @mcmilk

8 years agominor code refactoring
Yann Collet [Thu, 6 Jul 2017 01:10:07 +0000 (18:10 -0700)] 
minor code refactoring

8 years agocli : use new advanced API by default
Yann Collet [Thu, 6 Jul 2017 00:34:15 +0000 (17:34 -0700)] 
cli : use new advanced API by default

8 years agoclarified status of zstdmt_compress.h API
Yann Collet [Thu, 6 Jul 2017 00:20:52 +0000 (17:20 -0700)] 
clarified status of zstdmt_compress.h API

8 years agofixed wrong assert() condition 750/head
Yann Collet [Wed, 5 Jul 2017 02:33:16 +0000 (19:33 -0700)] 
fixed wrong assert() condition

A single job created by ZSTDMT_compress() can be < 256KB
if data to compress is < 256 KB
(in which case it is delegated to single thread mode)

8 years agomore precise estimation of amount to flush at end of stream (single thread mode) 748/head
Yann Collet [Tue, 4 Jul 2017 19:39:26 +0000 (12:39 -0700)] 
more precise estimation of amount to flush at end of stream (single thread mode)

also : can use DEBUGLEVEL variable in /tests

8 years agofixed : 0-copy in NULL is UB
Yann Collet [Tue, 4 Jul 2017 17:36:41 +0000 (10:36 -0700)] 
fixed : 0-copy in NULL is UB

8 years agoMerge pull request #743 from facebook/fullbench
Yann Collet [Tue, 4 Jul 2017 04:26:38 +0000 (21:26 -0700)] 
Merge pull request #743 from facebook/fullbench

compress_generic() automatic optimization opportunities

8 years agoMerge pull request #747 from facebook/noExit
Yann Collet [Tue, 4 Jul 2017 01:15:13 +0000 (18:15 -0700)] 
Merge pull request #747 from facebook/noExit

No exit() on decoding errors

8 years agorefactor ZSTDMT_compress() 743/head
Yann Collet [Mon, 3 Jul 2017 23:23:36 +0000 (16:23 -0700)] 
refactor ZSTDMT_compress()

8 years agofixed comments
Yann Collet [Mon, 3 Jul 2017 22:52:19 +0000 (15:52 -0700)] 
fixed comments

8 years agofixed wrong function name in comment
Yann Collet [Mon, 3 Jul 2017 22:21:24 +0000 (15:21 -0700)] 
fixed wrong function name in comment

8 years agoMerge pull request #745 from terrelln/libfuzzer
Yann Collet [Mon, 3 Jul 2017 22:15:20 +0000 (15:15 -0700)] 
Merge pull request #745 from terrelln/libfuzzer

[fuzz] Add libFuzzer targets

8 years agominor code refactoring 747/head
Yann Collet [Mon, 3 Jul 2017 22:14:55 +0000 (15:14 -0700)] 
minor code refactoring

8 years agofixed gz error reporting
Yann Collet [Mon, 3 Jul 2017 20:47:46 +0000 (13:47 -0700)] 
fixed gz error reporting

8 years agogzip : only display inflateEnd error when there is no error before
Yann Collet [Mon, 3 Jul 2017 20:45:09 +0000 (13:45 -0700)] 
gzip : only display inflateEnd error when there is no error before

8 years agoMerge pull request #746 from terrelln/dev
Yann Collet [Mon, 3 Jul 2017 20:31:27 +0000 (13:31 -0700)] 
Merge pull request #746 from terrelln/dev

[libzstd] Fix memcpy() on potential NULL source

8 years agogzip decoding does no longer exit() on invalid input
Yann Collet [Mon, 3 Jul 2017 20:24:50 +0000 (13:24 -0700)] 
gzip decoding does no longer exit() on invalid input

8 years ago[fuzz] Move from fuzz/ to tests/fuzz/ 745/head
Nick Terrell [Mon, 3 Jul 2017 19:40:12 +0000 (12:40 -0700)] 
[fuzz] Move from fuzz/ to tests/fuzz/

8 years ago[libzstd] Fix memcpy() on potential NULL source 746/head
Nick Terrell [Mon, 3 Jul 2017 19:31:55 +0000 (12:31 -0700)] 
[libzstd] Fix memcpy() on potential NULL source

* `ZSTD_decompressStream_generic()` `ip` may be `NULL` for one of the calls
  to `memcpy()`
* Assert the source is not `NULL` for calls to `memcpy()` where I believe
  the source should not be `NULL`.

8 years agodecoding malformed lz4 frames does no longer exit()
Yann Collet [Mon, 3 Jul 2017 18:27:29 +0000 (11:27 -0700)] 
decoding malformed lz4 frames does no longer exit()

8 years agofileio : decoding malformed lzma frame does no longer exit()
Yann Collet [Mon, 3 Jul 2017 17:27:16 +0000 (10:27 -0700)] 
fileio : decoding malformed lzma frame does no longer exit()

makes it possible to continue decoding file list

8 years agofixed legacy version init bug
Yann Collet [Sat, 1 Jul 2017 16:09:34 +0000 (09:09 -0700)] 
fixed legacy version init bug

8 years agoblindfix : fullbench's one-time leak, detected by valgrind
cyan4973 [Sat, 1 Jul 2017 15:03:59 +0000 (08:03 -0700)] 
blindfix : fullbench's one-time leak, detected by valgrind

8 years agoadded --show-leak-kind=all to valgrind tests
cyan4973 [Sat, 1 Jul 2017 14:05:11 +0000 (07:05 -0700)] 
added --show-leak-kind=all to valgrind tests

8 years agoMerge branch 'dev' into fullbench
cyan4973 [Sat, 1 Jul 2017 14:01:08 +0000 (07:01 -0700)] 
Merge branch 'dev' into fullbench

8 years agofix : ZSTDMT_compressStream_generic() can accept NULL input
cyan4973 [Sat, 1 Jul 2017 13:59:24 +0000 (06:59 -0700)] 
fix : ZSTDMT_compressStream_generic() can accept NULL input

also : converge implementations towards new version of ZSTDMT_compressStream_generic()

8 years agoMerge pull request #744 from terrelln/dev
Yann Collet [Sat, 1 Jul 2017 12:58:33 +0000 (05:58 -0700)] 
Merge pull request #744 from terrelln/dev

[pzstd] Remove appveyor tests

8 years ago[fuzz] Add libFuzzer targets
Nick Terrell [Thu, 29 Jun 2017 23:53:52 +0000 (16:53 -0700)] 
[fuzz] Add libFuzzer targets

* The regression driver serves both as a regression test, and as a binary for afl-fuzz.
* Next, we want to check in a seed corpus for each target. Then we can run the regression
  test binary on them on Travis or Circle CI.

8 years ago[pzstd] Remove appveyor tests 744/head
Nick Terrell [Fri, 30 Jun 2017 23:31:11 +0000 (16:31 -0700)] 
[pzstd] Remove appveyor tests

The appveyor tests sometimes hang, and pzstd is now deprecated in favor of
zstdmt, so delete the tests.

8 years ago[man] Specify that strategies start at 1
Nick Terrell [Fri, 30 Jun 2017 23:29:37 +0000 (16:29 -0700)] 
[man] Specify that strategies start at 1

8 years agofixed : dictionary compression with new advanced API in Multi-threading mode
Yann Collet [Fri, 30 Jun 2017 23:01:02 +0000 (16:01 -0700)] 
fixed : dictionary compression with new advanced API in Multi-threading mode

8 years agoOptimized ZSTDMT single-pass mode speed on large sources
Yann Collet [Fri, 30 Jun 2017 22:44:57 +0000 (15:44 -0700)] 
Optimized ZSTDMT single-pass mode speed on large sources

by ensuring job sizes remain "not too large"

8 years agoimplemented shortcut for zstd_compress_generic() in MT mode
Yann Collet [Fri, 30 Jun 2017 21:51:01 +0000 (14:51 -0700)] 
implemented shortcut for zstd_compress_generic() in MT mode

added ZSTDMT_compress_advanced() API

8 years agoMerge pull request #742 from stellamplau/stack-space
Yann Collet [Fri, 30 Jun 2017 21:50:23 +0000 (14:50 -0700)] 
Merge pull request #742 from stellamplau/stack-space

Reduce stack usage of HUF_readDTableX4 and HUF_readDTableX2

8 years agoFix typo 742/head
Stella Lau [Fri, 30 Jun 2017 19:56:24 +0000 (12:56 -0700)] 
Fix typo

8 years agoAdd comment to HUF_DECOMPRESS_WORKSPACE_SIZE
Stella Lau [Fri, 30 Jun 2017 19:53:56 +0000 (12:53 -0700)] 
Add comment to HUF_DECOMPRESS_WORKSPACE_SIZE

8 years agoClarify typedef of rankVal_t and rankValCol_t
Stella Lau [Fri, 30 Jun 2017 16:52:20 +0000 (09:52 -0700)] 
Clarify typedef of rankVal_t and rankValCol_t

8 years agoRename ALIGN and ALIGN_MASK to HUF_ALIGN and HUF_ALIGN_MASK
Stella Lau [Fri, 30 Jun 2017 16:38:11 +0000 (09:38 -0700)] 
Rename ALIGN and ALIGN_MASK to HUF_ALIGN and HUF_ALIGN_MASK

8 years agofixed Visual compilation of fullbench-dll
cyan4973 [Fri, 30 Jun 2017 02:59:37 +0000 (19:59 -0700)] 
fixed Visual compilation of fullbench-dll

8 years agomade fullbench compatible with multi-threading
Yann Collet [Fri, 30 Jun 2017 01:56:24 +0000 (18:56 -0700)] 
made fullbench compatible with multi-threading

fullbench 61/62 measure speed of ZSTD_compress_generic with 2 threads

8 years agozstreamtest : big tests are only enabled in 64-bits mode
Yann Collet [Fri, 30 Jun 2017 01:19:09 +0000 (18:19 -0700)] 
zstreamtest : big tests are only enabled in 64-bits mode

to avoid requesting too much memory in 32-bits mode during MT tests

8 years agoDelegate HUF_decompress4X_hufOnly to workspace version
Stella Lau [Thu, 29 Jun 2017 23:22:32 +0000 (16:22 -0700)] 
Delegate HUF_decompress4X_hufOnly to workspace version

8 years agoFix bitshift error
Stella Lau [Thu, 29 Jun 2017 22:40:49 +0000 (15:40 -0700)] 
Fix bitshift error

8 years agoMerge pull request #741 from facebook/promotion
Yann Collet [Thu, 29 Jun 2017 21:48:32 +0000 (14:48 -0700)] 
Merge pull request #741 from facebook/promotion

ZSTD_getFrameContentSize() promoted to "stable" status

8 years agocompression optimization opportunity
Yann Collet [Thu, 29 Jun 2017 21:44:49 +0000 (14:44 -0700)] 
compression optimization opportunity

switch to single-pass mode directly into output buffer
when outputSize >= ZSTD_compressBound(inputSize).
Speed gains observed with fullbench (~+15% on level 1)

8 years agoFix pointer casting warning
Stella Lau [Thu, 29 Jun 2017 20:04:15 +0000 (13:04 -0700)] 
Fix pointer casting warning

8 years agoupdated fullbench to also measure ZSTD_compress_generic()
Yann Collet [Thu, 29 Jun 2017 20:03:10 +0000 (13:03 -0700)] 
updated fullbench to also measure ZSTD_compress_generic()

will make it possible to visualize
optimization opportunity for ZSTD_e_end

8 years agoFix alignment warnings with pointer casting
Stella Lau [Thu, 29 Jun 2017 19:39:34 +0000 (12:39 -0700)] 
Fix alignment warnings with pointer casting

8 years agoReduce stack usage of HUF_readDTableX4 and HUF_readDTableX2
Stella Lau [Thu, 29 Jun 2017 18:49:59 +0000 (11:49 -0700)] 
Reduce stack usage of HUF_readDTableX4 and HUF_readDTableX2

8 years agominor : fix typo 741/head
Yann Collet [Thu, 29 Jun 2017 18:31:40 +0000 (11:31 -0700)] 
minor : fix typo

8 years agominor : specify compression level in tags
Yann Collet [Thu, 29 Jun 2017 18:30:31 +0000 (11:30 -0700)] 
minor : specify compression level in tags

8 years agoMerge pull request #738 from terrelln/lk-div
Yann Collet [Thu, 29 Jun 2017 18:01:28 +0000 (11:01 -0700)] 
Merge pull request #738 from terrelln/lk-div

[linux-kernel] Update patches for v2

8 years agoZSTD_getFrameContentSize() is promoted to "stable" status
Yann Collet [Thu, 29 Jun 2017 12:18:09 +0000 (05:18 -0700)] 
ZSTD_getFrameContentSize() is promoted to "stable" status