Bug 67852 - [Meta] Master bug for replacing exp symbol files with header export defines
Summary: [Meta] Master bug for replacing exp symbol files with header export defines
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Nobody
Depends on: 72231 72582 72853 72854 72855 72858 72862 73191
Blocks: 27551
  Show dependency treegraph
Reported: 2011-09-09 09:46 PDT by Kevin Ollivier
Modified: 2012-09-21 16:42 PDT (History)
5 users (show)

See Also:


Note You need to log in before you can comment on or make changes to this bug.
Description Kevin Ollivier 2011-09-09 09:46:03 PDT
Much of the JSCore API is private (anything outside of Source/JavaScriptCore/API), and as such, it is project policy to declare these APIs with private linkage so they are not accessible by JSCore clients. However, some of those private APIs are still needed by WebCore, WebKit, DRT, etc., and so we cannot use private linkage inside JSCore for these APIs.

To solve this problem, currently ports which build JSCore as a shared library must manually maintain largely similar (but not the same, as there are port-specific APIs) compiler-specific export symbol files that contain a list of symbols needed by other components of WebKit. However, this is inefficient, because each export symbol file must be changed each time a common symbol is exported (or removed from export). I came across this myself when the wx's lack of export symbol file caused problems running DRT.

This bug intends to resolve this issue by having the exported symbols declared in the JSCore headers directly, so that a single change updates all ports. This will reduce overall maintenance and make it easier for other ports to build JSCore as a shared library without increasing the maintenance burden.

The framework for doing this is already in JSCore, its use controlled by the WTF_USE_EXPORT_MACROS define in Platform.h, so the basic approach has already been r+ed. The next steps are as follows:

1) Add JS_EXPORT_PRIVATE / WTF_EXPORT_PRIVATE macros to any JSCore function which is needed by WebCore, DRT, etc.

2) Switch each port to using them one at a time by defining WTF_USE_EXPORT_MACROS to 1 for that port.
Comment 1 Gavin Barraclough 2012-09-21 16:42:06 PDT
All child bugs closed & all exp files have been removed from JavaScriptCore – I believe this action is complete (yay!)