Commit Graph

1109 Commits

Author SHA1 Message Date
Jan Beich
5f6e848e09 Bug 1330119 - Build Linux aarch64 code in XPTCALL also on BSDs. r=froydnj
MozReview-Commit-ID: 92T1qG5yVx2

--HG--
extra : rebase_source : db1579c6ef5493bbdeb347d9021faa521261d24b
2017-01-10 22:50:32 +00:00
Sylvestre Ledru
5bedb078f1 Bug 1338086 - Remove useless else blocks in order to reduce complexity in xpcom/ r=froydnj
MozReview-Commit-ID: JUJARn5Nspp

--HG--
extra : rebase_source : c719d19215fb26ace822269c2a28faf5cf35ffbb
2017-02-09 15:31:35 +01:00
Benjamin Smedberg
5030045d16 Bug 1332631 part F - move nsXPTCUtils.h to xpcom/reflect/xptcall, r=froydnj
MozReview-Commit-ID: 7h69wKKdvwe

--HG--
rename : xpcom/glue/nsXPTCUtils.h => xpcom/reflect/xptcall/nsXPTCUtils.h
extra : rebase_source : 5939339f35e842e025538fed616d405f15749d82
extra : histedit_source : 99784f8fad561d895dfa09ff996d120bacc325fd
2017-01-20 14:25:46 -05:00
Benjamin Smedberg
c7352a6657 Bug 1306329 - Stop exporting XPCOM and XUL symbols. r=glandium
--HG--
extra : rebase_source : 482177f9c1026e527cff9f23b36a5076fa6d07a5
2016-12-02 12:55:34 -05:00
Wes Kocher
d4ced30f67 Backed out 4 changesets (bug 1306329) for 3000+ hazards a=backout
Backed out changeset 1c2f51ce3faf (bug 1306329)
Backed out changeset 6bb17b9a62d8 (bug 1306329)
Backed out changeset 377ca1419f1a (bug 1306329)
Backed out changeset ad4e531c7070 (bug 1306329)

MozReview-Commit-ID: KJAxdyJeJ6J
2017-01-17 17:55:24 -08:00
Benjamin Smedberg
d616a7ec44 Bug 1306329 - Stop exporting XPCOM and XUL symbols. r=glandium
--HG--
extra : rebase_source : 8c700498470b42279197f316d553154b1f2ed235
2016-12-02 12:55:34 -05:00
John David Anglin
0beeba79e1 Bug 1325495 - xpcom: Save %r26 in arg0 stack slot on hppa with gcc. r=froydnj
In the 32-bit parisc runtime, the first four non floating-point
arguments are passed in registers (%r26, %r25, %r24 and %r23).
The remaining arguments are passed on the stack. There are four
reserved slots on the stack that the callee can use to save the
first four argument registers if the callee desires.

The StubN functions are special in that arguments are not explicitly
declared. %r26 is used for the "self" pointer. The call to SharedStub(n)
loads n into %r26 and clobbers the "self" pointer in %r26. The hppa
SharedStub implementation expects to find the "self" pointer on the
stack in the slot reserved for StubN. However, gcc doesn't copy any
arguments to the stack as no arguments are declared for StubN. Even
if it did, there's no guarantee that we could force gcc to save the
argument on the stack as that's more expensive than copying to a
free register. Thus, we need to copy %r26 to the stack slot manually.
2017-01-12 06:37:13 +09:00
John Paul Adrian Glaubitz
fde7f4bca8 Bug 1275204 - Use OpenBSD/sparc64 xptcall stubs on Linux/sparc64. r=froydnj 2017-01-11 16:04:34 +09:00
Andrew McCreight
fccb0645ed Bug 1323042 - forbid MOZ_COUNT_{CTOR,DTOR} for nsISupports classes; r=froydnj 2016-12-12 09:27:58 -05:00
Nathan Froyd
826598caba Backout aba6c73511a2 (bug 1307961) for massive test bustage resulting in a CLOSED TREE; r=alltheorange 2016-12-12 08:45:46 -05:00
Andrew McCreight
e31b5489da Bug 1307961 - require consistent bloatview reporting for nsISupports classes; r=froydnj 2016-12-12 07:58:33 -05:00
Trevor Saunders
ed793c18d7 bug 1272498 - remove a obsolete and now useless comment 2016-11-16 01:17:40 -05:00
Trevor Saunders
17486e3454 bug 1272498 - rewrite NS_InvokeByIndex in assembly r=froydnj 2016-11-15 22:07:40 -05:00
Eric Rahm
84d0b89865 Bug 1316738 - Remove XPCOM test TestInterfaceInfo. r=froydnj
This removes a GeckoSimpleProgram that is neither built nor run.

MozReview-Commit-ID: 5ERreh9Gksw
2016-11-11 12:02:20 -08:00
Eric Rahm
2b4f954694 Bug 1316737 - Remove XPCOM test TestXPTCInvoke. r=froydnj
This removes the GeckoSimpleProgram TestXPTCInvoke which is neither compiled
nor run.

MozReview-Commit-ID: 5JdVEjEUUmu
2016-11-11 12:02:10 -08:00
Eric Rahm
996515dcac Bug 1311568 - Remove unused references to nsISupportsArray in xptiInterfaceInfoManager. r=froydnj
MozReview-Commit-ID: KMEJTyXXZ3m
2016-10-21 16:34:40 -07:00
Laszlo Ersek
b3ba117711 Bug 1304962 - fix argument processing in AARCH64 xptcall; r=froydnj
The invoke_copy_to_stack() function passes incorrect "stack_args" and
"end" arguments to the alloc_word() utility function, for parameter types
T_I8..T_I64, T_U8..T_U64, T_BOOL, T_CHAR and T_WCHAR.

Namely, the "end" input parameter of invoke_copy_to_stack(), which is
currently incorrectly passed as "end" to alloc_word(), points to the very
end of the entire exchange area between _NS_InvokeByIndex() and
invoke_copy_to_stack(). However, alloc_word()'s "end" parameter should
point to the end of the "ireg" (integer registers) sub-area of the
exchange area. That is, "ireg_end" should be passed to alloc_word() as
"end".

Because invoke_copy_to_stack()'s "end" input parameter is strictly greater
than "ireg_end", alloc_word() will happily trample over the "freg"
(floating point registers) area, on the above-mentioned type branches,
given a large enough "paramCount".

Similarly, as second argument, "stack_args" should be passed to
alloc_word(), pointing to the next available stack slot, for spilled-over
arguments. Passing "stk", which initially points to the base of the entire
exchange area (and hence the base of the "ireg" area) makes no sense.

The two other alloc_word() calls in the function are correct. So
centralize all calls to alloc_word() to a single location -- thereby
ending up with a sole call site per alloc_XXX() function --, and compute
only the last argument, "word", conditionally.

This fixes an obscure SIGSEGV in AARCH64 Firefox. Triggering the bug
requires a target function with seven integer-like parameters (not
counting the implicit "this" -- aka "that" -- parameter), followed by at
least one parameter of the above buggy types. nsIOService::NewChannel2()
is such a target function, for example.

DONTBUILD because NPTOB
2016-09-24 06:36:16 +02:00
Boris Zbarsky
0fd831e559 Bug 1302304. Remove IDL bits that reference nsIDOMMediaError; it's not needed anymore. r=bkelly 2016-09-15 11:41:35 -04:00
Nicholas Nethercote
c2306345d5 Bug 1297658 - Avoid unnecessary checking in memory reporters. r=erahm.
This patch removes checking of all the callback calls in memory reporter
CollectReport() functions, because it's not useful.

The patch also does some associated clean-up.

- Replaces some uses of nsIMemoryReporterCallback with the preferred
  nsIHandleReportCallback typedef.

- Replaces aCallback/aCb/aClosure with aHandleRepor/aData for CollectReports()
  parameter names, for consistency.

- Adds MOZ_MUST_USE/[must_use] in a few places in nsIMemoryReporter.idl.

- Uses the MOZ_COLLECT_REPORT macro in all suitable places.

Overall the patch reduces code size by ~300 lines and reduces the size of
libxul by about 37 KiB on my Linux64 builds.

--HG--
extra : rebase_source : e94323614bd10463a0c5134a7276238a7ca1cf23
2016-08-24 15:23:45 +10:00
Sebastian Hengst
e419835ca6 Backed out changeset 3114c70baccf (bug 1272498) for build failures on OS X. r=backout on a CLOSED TREE 2016-08-24 21:24:50 +02:00
Sebastian Hengst
7d4a6559ea Backed out changeset f517b043170b (bug 1272498) 2016-08-24 21:23:02 +02:00
Trevor Saunders
ecbd164f05 bug 1272498 - avoid clang's integrated assembler in the hope clang won't preprocess xptcinvoke_asm_x86_64_unix.s r=me landed on a CLOSED TREE
Also change if to If just to be careful.
2016-08-24 11:24:15 -04:00
Trevor Saunders
4b161d6bfd bug 1272498 - rewrite NS_InvokeByIndex in assembly r=froydnj 2016-08-24 10:31:51 -04:00
Andrew McCreight
110539616e Bug 1296726, part 2 - Remove unused methods from nsIInterfaceInfoManager. r=froydnj
MozReview-Commit-ID: 2Znf8iN3pU4
2016-08-23 06:05:01 -07:00
Andrew McCreight
fc6173089e Bug 1296726, part 1 - Remove trailing whitespace from xpcom/reflect/xptinfo. r=froydnj
MozReview-Commit-ID: ewdP6XFfmr
2016-08-23 06:05:01 -07:00
Andrew McCreight
427e9d567c Bug 1297176 - Mark nsIInterfaceInfo{,Manager} builtinclass. r=froydnj
I think technically you could implement one of these in JS now, which
might prevent me from reasonably asserting that these can never GC. I
doubt anybody would ever do that, so it should be okay. There are zero
references to these two interfaces in all of addon DXR, and none in
Firefox JS.

MozReview-Commit-ID: 3AkW0AkqmNx
2016-08-23 06:05:00 -07:00
Tom Tromey
5538d692d3 Bug 1286877 - do not set c-basic-offset for python-mode; r=gps
This removes the unnecessary setting of c-basic-offset from all
python-mode files.

This was automatically generated using

    perl -pi -e 's/; *c-basic-offset: *[0-9]+//'

... on the affected files.

The bulk of these files are moz.build files but there a few others as
well.

MozReview-Commit-ID: 2pPf3DEiZqx

--HG--
extra : rebase_source : 0a7dcac80b924174a2c429b093791148ea6ac204
2016-07-14 10:16:42 -06:00
Nicholas Nethercote
79b0d684fb Bug 1287361 - Add a missing XPT_CALLOC8 null check. r=khuey.
--HG--
extra : rebase_source : 9a9f938ab7499ddcc18a1bce549e651a07829716
2016-07-18 14:18:19 +10:00
Chris Peterson
43c2748f66 Bug 1277775 - Replace MOZ_CONSTEXPR{_VAR,_TMPL} with constexpr. r=froydnj 2016-07-08 14:39:53 -07:00
Nathan Froyd
27e75b365b Bug 1276540 - remove dead instrumentation in xptiInterfaceInfo.cpp; r=erahm
Doubt anybody has compiled with the appropriate #define in a while, and
there's no evidence of the associated DEBUG_* constants being used.
2016-06-07 17:09:41 -04:00
Makoto Kato
5fb3b6c9fa Bug 1275719 - GetShimForParam should traverse parent objects. r=froydnj
When using GetIIDForParamNoAlloc to get return paramter type, if param is nsIDOM*, it should get it by GetShimForParam.

When this situation, GetEntryFor Param tries to get nsIDOMDocument, so GetEntryForParam doesn't get entry.  Then, GetShimForParam tries to get entry.  But since it doesn't traverse parent objects, it will try to get nsIDocShell instead.

So it might not get correct entry.

MozReview-Commit-ID: LaOVymgFMgi

--HG--
extra : rebase_source : 9ce3b38872dd6bcabd473296cc5bda25c7d5ceab
extra : histedit_source : 385797913a2d76e2981b4106d572edd784145126
2016-05-26 23:09:06 +09:00
Nicholas Nethercote
34313286ee Bug 1272203 (part 4) - Use NotNull for XPTCursor. r=froydnj.
This is a nice example of using NotNull for a single non-null pointer that gets
passed around lots of different functions.
2016-05-27 09:49:26 +10:00
Chris Peterson
8a9e2d2bd4 Bug 1272513 - Part 2: Remove redundant -Wshadow CXXFLAGS from moz.build files. r=glandium 2016-05-14 00:54:55 -07:00
Chris Peterson
353ee65255 Bug 1272513 - Part 1: Suppress -Wshadow warnings-as-errors in some directories. r=glandium 2016-05-11 00:00:01 -07:00
Nicholas Nethercote
2ae68d12e9 Bug 1268772 (part 4) - Use MOZ_MUST_USE with NS_NewISupportsArray(). r=erahm.
A few callers of NS_NewISupportsArray() didn't use the return value to detect
failure, but instead checked if the |array| argument was null after the call.
This is inconsistent with the majority of the calls to NS_NewISupportsArray().
This patch changes them to be checked in the normal way.

--HG--
extra : rebase_source : bf91836d7c3b159833c303a3716f4d9366f8b76a
2016-05-02 09:06:47 +10:00
Nicholas Nethercote
358a6071d9 Bug 1260653 - Shrink NativeProperties. r=bz.
This patch makes NativeProperties variable-length and reduces static data by
110,336 bytes on 64-bit, and half that on 32-bit.

MozReview-Commit-ID: 2etZ5AnEhgO

--HG--
extra : rebase_source : 6a167b64df7da3c6940114782fe08337f04a694d
2016-03-31 09:57:20 +11:00
Christian Holler
66408836a1 Bug 1252072 - Prevent ASan instrumentation for unsafe xpcom functions. r=froydnj
MozReview-Commit-ID: 5k2RAVPlcAI

--HG--
extra : rebase_source : cf9270a5f743d032f5e8cb0f1f8d691ec3d965b1
2016-02-29 21:39:03 +01:00
Nicholas Nethercote
2ddfe18454 Bug 1249174 (part 7.5) - Avoid wasted space around XPT strings. r=khuey.
This patch:

- Removes XPTArena's ability to support arbitrary alignments.

- Hardwires two sub-arenas into XPTArena, one with alignment of 8 and one with
  alignment of 1.

- Uses the first sub-arena for most allocations and the second sub-arena for C
  string allocations.

These changes reduce "xpti-working-set" by 56 KiB.

The patch also renames all the used of "malloc" in XPT identifiers with
"calloc", to make clearer that the result is always zeroed.

--HG--
extra : rebase_source : 8e6cc42644621a7f3c80593006734e25420c7229
2016-02-23 16:17:58 +11:00
Nicholas Nethercote
941e0d3432 Bug 1249174 (part 6) - Shrink XPTTypeDescriptor. r=khuey.
With careful layout we can reduce sizeof(XPTTypeDescriptor) from 4 to 3, which
also reduces sizeof(XPTParamDescriptor) from 6 to 4. This reduces
"xpti-working-set" by 16 KiB.

The union-of-structs also improves readability by making it clearer exactly
which fields are used for which types.

--HG--
extra : rebase_source : 08060096f93c756fda847b90b45df1b1b207e2b5
2016-02-23 16:17:44 +11:00
Nicholas Nethercote
50bd48ed70 Bug 1249174 (part 2) - Shrink xptiInterfaceEntry by reordering its fields. r=khuey.
This reduces "xpti-working-set" by another 16 KiB on 64-bit.

--HG--
extra : rebase_source : c04b60066ca517122f2b23874f5b3220e87fc303
2016-02-17 15:23:46 +11:00
Nicholas Nethercote
13ac3274cc Bug 1248534 (part 9) - Remove XPT arena logging code. r=khuey.
It's not useful.

--HG--
extra : rebase_source : 90cdfa37fff023adffd12327ce5c7595e0d8d285
2016-02-23 05:33:35 +11:00
Nicholas Nethercote
b1487760df Bug 1248534 (part 6) - Stack-allocate XPTState. r=khuey.
RegisterBuffer() is the only place that creates an XPTState, and it also
destroys it. So the XPTState can be allocated on the stack, which voids the
need for the creation of an XPTArena.

--HG--
extra : rebase_source : b25f0e798d72b8742efc96793a927f8a060101cf
2016-02-23 05:33:35 +11:00
Nicholas Nethercote
2735b61ff4 Bug 1248534 (part 2) - Remove unused XPT flags. r=khuey.
--HG--
extra : rebase_source : 9423560ffca6b7e50e746ab86861888695d66df2
2016-02-16 19:04:18 +11:00
Nicholas Nethercote
0e4dc7f598 Bug 1248534 (part 1) - Remove XPT encoding support. r=khuey.
Currently XPT can both encode and decode, but encoding has been handled by
Python code since bug 643817, so the encoding support can be removed. This
results in many simplifications. Some notable changes:

- All the XPTHashTable code (including XPTDatapool::offset_map) is no longer
  necessary.

- PrimitiveTest.cpp and SimpleTypeLib.cpp both don't make much sense without
  encoding support, so I removed them.

- A lot of the version code was already unused, e.g. XPT_VERSION_*,
  XPT_TYPELIB_VERSIONS_STRUCT, XPT_TYPELIB_VERSIONS.
  XPT_MAJOR_INCOMPATIBLE_VERSION is the only thing actually used in version
  checks.

- The patch also removes some code that was dead even before encoding removal,
  such as XPT_ParseVersionString().

--HG--
extra : rebase_source : 11cfe0b01efde4e2ff0c74b02b408baebedd3dd8
2016-02-16 19:02:51 +11:00
Paul Bignier
73d69ff7c5 Bug 1245099 - Fixed uninitialized variable warning. r=bsmedberg 2016-02-02 06:41:00 +01:00
Kyle Huey
91efc5a86c Bug 1241764: Replace nsPIDOMWindow with nsPIDOMWindowInner/Outer. r=mrbkap,smaug 2016-01-30 09:05:36 -08:00
Jan Beich
b99a9577ea Bug 1235610 - Add xpctall support for Bitrig and DragonFly. r=glandium
--HG--
extra : transplant_source : %AD%3E%B5E%09%15%D7%CF%86%E37%FA%09%BF%E1%40%AF%E8%DCK
2015-12-29 18:06:20 +00:00
Nathan Froyd
0fe98fa9ef Bug 1234860 - move win32 NS_InvokeByIndex implementation to a separate assembly file; r=aklotz,ted.m
On win32, NS_InvokeByIndex is implemented with inline assembly.  This
inline assembly assumes that it is wrapped by the compiler with the
standard x86 prologue and epilogue:

    push ebp
    mov ebp, esp
    [inline assembly that manipulates the stack pointer]
    pop ebp
    ret

In particular, the last instruction of the inline assembly is:

    mov esp, ebp

which cancels out the effects of the stack manipulation performed by all
the inline assembly that proceeds the instruction.

When compiling with clang-cl, however, the above assumption does not
hold, as clang-cl inserts a more complex prologue and epilogue,
something like:

    push ebp
    mov ebp, esp
    sub esp, frame_size
    [save registers into stack frame]
    [inline assembly that manipulates the stack pointer]
    [restore registers from stack frame]
    add esp, frame_size
    mov esp, ebp
    pop ebp
    ret

Combining this more extensive prologue and epilogue with the assumptions
of the inline assembly leads to interesting crashes when
NS_InvokeByIndex is called: the inline assembly effectively deallocates
the stack allocated by the inline assembly *and* the stack frame
allocated by the compiler itself.  The compiler-generated code then
attemptes to deallocate the stack frame, leading to the crash, as the
code now returns to an unspecified address.

To avoid these sorts of problems in clang-cl and make the code more
robust generally, let's move the NS_InvokeByIndex implementation to a
separate assembly file.  We can then write exactly what we need to have
happen, safe from any manipulations of the compiler.

Since we don't compile much (any?) code in Gecko with MASM, we need to
add the /SAFESEH flag to the assembler invocation so that the object
file with be appropriately marked as not containing exception handlers;
the linker (which is invoked with the /SAFESEH flag itself) will then
consent to link it into libxul.
2015-12-23 11:45:38 -05:00
Andrea Marchesini
c2230f21f8 Bug 1231100 - Get rid of nsIDOMFileReader - patch 1, r=sicking 2015-12-09 15:52:15 -05:00
Nathan Froyd
01583602a9 Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat
The bulk of this commit was generated with a script, executed at the top
level of a typical source code checkout.  The only non-machine-generated
part was modifying MFBT's moz.build to reflect the new naming.

CLOSED TREE makes big refactorings like this a piece of cake.

 # The main substitution.
find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
    xargs perl -p -i -e '
 s/nsRefPtr\.h/RefPtr\.h/g; # handle includes
 s/nsRefPtr ?</RefPtr</g;   # handle declarations and variables
'

 # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h.
perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h

 # Handle nsRefPtr.h itself, a couple places that define constructors
 # from nsRefPtr, and code generators specially.  We do this here, rather
 # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename
 # things like nsRefPtrHashtable.
perl -p -i -e 's/nsRefPtr/RefPtr/g' \
     mfbt/nsRefPtr.h \
     xpcom/glue/nsCOMPtr.h \
     xpcom/base/OwningNonNull.h \
     ipc/ipdl/ipdl/lower.py \
     ipc/ipdl/ipdl/builtin.py \
     dom/bindings/Codegen.py \
     python/lldbutils/lldbutils/utils.py

 # In our indiscriminate substitution above, we renamed
 # nsRefPtrGetterAddRefs, the class behind getter_AddRefs.  Fix that up.
find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \
    xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g'

if [ -d .git ]; then
    git mv mfbt/nsRefPtr.h mfbt/RefPtr.h
else
    hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h
fi

--HG--
rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 01:24:48 -04:00