RESOLVED FIXED Bug 77013
[BlackBerry] Implement OSAllocator::commit/decommit
https://bugs.webkit.org/show_bug.cgi?id=77013
Summary [BlackBerry] Implement OSAllocator::commit/decommit
Yong Li
Reported 2012-01-25 08:39:41 PST
BlackBerry port should also support decommitting virtual memory.
Attachments
the patch (2.83 KB, patch)
2012-01-25 08:42 PST, Yong Li
no flags
new solution (3.53 KB, patch)
2012-03-19 12:12 PDT, Yong Li
no flags
Yong Li
Comment 1 2012-01-25 08:42:59 PST
Created attachment 123947 [details] the patch
Rob Buis
Comment 2 2012-01-25 08:52:40 PST
Comment on attachment 123947 [details] the patch LGTM.
WebKit Review Bot
Comment 3 2012-01-25 10:01:30 PST
Comment on attachment 123947 [details] the patch Attachment 123947 [details] did not pass chromium-ews (chromium-xvfb): Output: http://queues.webkit.org/results/11242851 New failing tests: media/audio-garbage-collect.html
Yong Li
Comment 4 2012-01-25 10:49:24 PST
(In reply to comment #3) > (From update of attachment 123947 [details]) > Attachment 123947 [details] did not pass chromium-ews (chromium-xvfb): > Output: http://queues.webkit.org/results/11242851 > > New failing tests: > media/audio-garbage-collect.html cannot be due to this patch.
WebKit Review Bot
Comment 5 2012-01-25 12:52:57 PST
Comment on attachment 123947 [details] the patch Clearing flags on attachment: 123947 Committed r105918: <http://trac.webkit.org/changeset/105918>
WebKit Review Bot
Comment 6 2012-01-25 12:53:02 PST
All reviewed patches have been landed. Closing bug.
Yong Li
Comment 7 2012-03-19 11:57:19 PDT
Actually we should implement this in another way
Yong Li
Comment 8 2012-03-19 12:12:38 PDT
Created attachment 132622 [details] new solution
Rob Buis
Comment 9 2012-03-19 13:16:10 PDT
Comment on attachment 132622 [details] new solution LGTM.
WebKit Review Bot
Comment 10 2012-03-19 13:39:31 PDT
Comment on attachment 132622 [details] new solution Clearing flags on attachment: 132622 Committed r111234: <http://trac.webkit.org/changeset/111234>
WebKit Review Bot
Comment 11 2012-03-19 13:39:37 PDT
All reviewed patches have been landed. Closing bug.
Milian Wolff
Comment 12 2012-06-13 08:18:58 PDT
Hey there, I am wondering about the last patch: What QNX are you working on? On QNX6 I cannot find an implementation of MADV_FREE_REUSABLE nor MADV_FREE_REUSE, which you apparently do have, considering that your patch contains: #define HAVE_MADV_FREE_REUSE 1 #define HAVE_MADV_FREE 1 With this in, I cannot compile QtWebKit for QNX6, should this maybe be disabled to read #define HAVE_MADV_FREE(_REUSE) 0?
Yong Li
Comment 13 2012-06-13 08:36:32 PDT
(In reply to comment #12) > Hey there, > > I am wondering about the last patch: What QNX are you working on? On QNX6 I cannot find an implementation of MADV_FREE_REUSABLE nor MADV_FREE_REUSE, which you apparently do have, considering that your patch contains: > > #define HAVE_MADV_FREE_REUSE 1 > #define HAVE_MADV_FREE 1 > > With this in, I cannot compile QtWebKit for QNX6, should this maybe be disabled to read #define HAVE_MADV_FREE(_REUSE) 0? Try this one: http://trac.webkit.org/changeset/111234 QNX doesn't have madv_free/free_reuse. But I want to turn them on so we know where we should add our alternative implementation.
Milian Wolff
Comment 14 2012-06-13 08:53:37 PDT
Hey there, the patchset you link to above does not cover the use case in TCSystemAlloc.cpp: /home/milian/projects/qt5/qtwebkit/Source/WTF/wtf/TCSystemAlloc.cpp: In function 'void TCMalloc_SystemRelease(void*, std::size_t)': /home/milian/projects/qt5/qtwebkit/Source/WTF/wtf/TCSystemAlloc.cpp:390: error: 'MADV_FREE_REUSABLE' was not declared in this scope /home/milian/projects/qt5/qtwebkit/Source/WTF/wtf/TCSystemAlloc.cpp:390: error: 'madvise' was not declared in this scope /home/milian/projects/qt5/qtwebkit/Source/WTF/wtf/TCSystemAlloc.cpp: In function 'void TCMalloc_SystemCommit(void*, std::size_t)': /home/milian/projects/qt5/qtwebkit/Source/WTF/wtf/TCSystemAlloc.cpp:486: error: 'MADV_FREE_REUSE' was not declared in this scope /home/milian/projects/qt5/qtwebkit/Source/WTF/wtf/TCSystemAlloc.cpp:486: error: 'madvise' was not declared in this scope Did you miss that, or is something going wrong on my side?
Yong Li
Comment 15 2012-06-13 09:05:35 PDT
(In reply to comment #14) > Hey there, > > the patchset you link to above does not cover the use case in TCSystemAlloc.cpp: > > /home/milian/projects/qt5/qtwebkit/Source/WTF/wtf/TCSystemAlloc.cpp: In function 'void TCMalloc_SystemRelease(void*, std::size_t)': > /home/milian/projects/qt5/qtwebkit/Source/WTF/wtf/TCSystemAlloc.cpp:390: error: 'MADV_FREE_REUSABLE' was not declared in this scope > /home/milian/projects/qt5/qtwebkit/Source/WTF/wtf/TCSystemAlloc.cpp:390: error: 'madvise' was not declared in this scope > /home/milian/projects/qt5/qtwebkit/Source/WTF/wtf/TCSystemAlloc.cpp: In function 'void TCMalloc_SystemCommit(void*, std::size_t)': > /home/milian/projects/qt5/qtwebkit/Source/WTF/wtf/TCSystemAlloc.cpp:486: error: 'MADV_FREE_REUSE' was not declared in this scope > /home/milian/projects/qt5/qtwebkit/Source/WTF/wtf/TCSystemAlloc.cpp:486: error: 'madvise' was not declared in this scope > > Did you miss that, or is something going wrong on my side? We don't use TCSystemAlloc. So 2 options I can see here: 1. turn off HAVE_MADV_FREE and HAVE_MADV_FREE_REUSE. However the memory allocator won't be able to decommit free pages (return RAM to system). 2. Add an implementation as I did in r111234 for TCSystemAlloc.
Milian Wolff
Comment 16 2012-06-13 09:14:29 PDT
Ah ok, so maybe we should change this block: #if PLATFORM(BLACKBERRY) #define USE_SYSTEM_MALLOC 1 #define WTF_USE_MERSENNE_TWISTER_19937 1 #define WTF_USE_SKIA 1 #endif to use #if OS(QNX) || PLATFORM(BLACKBERRY) ... #endif ? What do you think?
Yong Li
Comment 17 2012-06-13 09:25:49 PDT
(In reply to comment #16) > Ah ok, > > so maybe we should change this block: > > #if PLATFORM(BLACKBERRY) > #define USE_SYSTEM_MALLOC 1 > #define WTF_USE_MERSENNE_TWISTER_19937 1 > #define WTF_USE_SKIA 1 > #endif > > to use > > #if OS(QNX) || PLATFORM(BLACKBERRY) > ... > #endif > > ? What do you think? Not sure for the other 2. But it is OK to always use USE_SYSTEM_MALLOC on QNX. Yeah, this is the option 3 :)
Antonio Gomes
Comment 18 2012-06-13 12:30:15 PDT
> > #if OS(QNX) || PLATFORM(BLACKBERRY) > ... > #endif > > ? What do you think? only #if OS(QNX) is enough.
Note You need to log in before you can comment on or make changes to this bug.