Closed Bug 104172 Opened 24 years ago Closed 19 years ago

Remove extraneous exported symbols from XPCOM

Categories

(Core :: XPCOM, defect)

x86
Windows 2000
defect
Not set
normal

Tracking

()

RESOLVED INVALID

People

(Reporter: jonsmirl, Unassigned)

References

Details

(Whiteboard: fix in hand)

Attachments

(1 file, 1 obsolete file)

Patch changes no behavior, only moves around export definitions to eliminate unnecessary exported symbols.
Attached patch remove extra exported symbols (obsolete) — Splinter Review
Whiteboard: fix in hand
patch looks okay, but I wonder if we are going about this the wrong way? seams to me that we want to have a def file and have a very small list of exported functions. but I guess this patch is somewhat orthoganal. rick, you are the api export guru after that last patch, thoughts?
hot damn! that's great. so everything still builds and runs as before? On a side note, I like the idea of having a list of "known exports" via a .def file, but how hard is it to export entire classes, i.e. such as nsVoidArray or something?
This bug is a symptom of a larger problem. Everytime a non-null {}, non-inline function is declared in an h file a copy of the function is included in that compilation module. This fix removes 100's of needless copies of these functions. The NS_EXPORT problem just made these copies visible, they were there even without the NS_EXPORT. After this fix is in I'll go fix up a similar problem with NS_EXPORT in content, layout, parser. I will also go inspect the h files and see if I can spot more function declarations in them.
ok, we'll need some reviewers anyway. I think we should go ahead and get this checked in, and tackle the larger problem that dougt talks about. so, sr=alecf on these patches.. just need an r=? dougt?
Maybe I just don't understand enough about this problem. What is the problem with nsProxyEvent.*. This class shouldn't isn't used outside of xpcom. Why did it have to be touched?
just read the newsgroup postings. I would like to have jband or rick review this.
I just looked at the proxy stuff - for some reason there are lots of libraries exporting the proxy stuff - addrbook, appcomps, imglib2, to name a few..
Attachment #53054 - Attachment is obsolete: true
this does not build on the mac. There is some problem linker problem when trying to link oji.
Did I accidentally get part of this patch mixed into that big merged patch I made? http://bugzilla.mozilla.org/show_bug.cgi?id=104515
Why the scattering of |inline| in nsIInterfaceRequestorUtils.h and nsCOMPtr.h? C++ section 9.3 (clause 2) or section 7.1.2 (clause 3) says they're already inline.
(And does an optimized Java plugin still work with a debug build with this patch?)
Java plug-in still works, but I am recompiling it on my machine. Do we have to freeze the OJI stuff forever to allow backwards binary compatibility? All the OJI patch did was change the exported symbol name from C++ managled to C. I thought there might be a possiblility that the Java support could be compiled with a different C++ compiler than Mozilla. For example someone on Solaris using a Sun supplied OJI compiled with the SUN compiler and then running a later Mozilla compiled with GCC. As for the inlines, in some cases with the MS compiler I get inline functions and some case I get one copy per compilation unit. I just added them to make sure. Anyway, the routines involved are going to be reworked into the static XPCOM lib when that happens.
> I just added them to make sure. Well, that code was rather clean, and I'd rather keep it that way. If they don't do anything, could you not add them?
(And no, those nsCOMPtr methods should stay inline, they shouldn't be part of a static XPCOM library.)
From looking at the tinderbox logs, it looks to me like there is probably an error in the building of OJI. OJI currently does not build correctly on Windows: http://bugzilla.mozilla.org/show_bug.cgi?id=101410 Nobody notices this becuase OJI rarely changes and needs to be rebuilt. The MAC build process may have a similar bug. This could explain why Doug didn't see a problem on his local mac; he could have built in a different sequence and hid the OJI build problem. Also, if these patches didn't work on the Mac in general I would have expected to see about 50,000 link errors. Instead the only module that failed to link was OJI. I don't have access to a Mac so I can't track this problem down. I can verify that the patch that was checked in worked fine on Windows.
Depends on: 101410
Assignee: jonsmirl → nobody
QA Contact: scc → xpcom
Life is all different now
Status: NEW → RESOLVED
Closed: 19 years ago
Resolution: --- → INVALID
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: