Commit Graph

64 Commits

Author SHA1 Message Date
Jim Chen
5a0ee6a6ba Bug 1297462 - Report OutOfMemoryError exception as OOM crash; r=snorp
Detect OutOfMemoryError exceptions and report them as OOM crashes in the
crash report.
2016-08-26 12:25:57 -04:00
Jim Chen
da50d1a62c Bug 1297462 - Combine Java exception stack code paths; r=snorp
Right now we report Java exception stacks through two code paths:
- GeckoAppShell.reportJavaCrash for exceptions caught by Java code
- jni::HandleUncaughtException for exceptions caught by native code

This patch combines the code for reporting the Java stack trace into
ReportException, to make it easier to add new features such as reporting
OOM exceptions.
2016-08-26 12:25:57 -04:00
Jim Chen
c25482dbd4 Bug 1297462 - Always handle uncaught Java exception in native code if possible; r=snorp
We used to only handle certain exceptions in native code, and otherwise
forward the exception to Java handling code. Handling exceptions in
native code gives us better native stack traces in crash reports, so
this patch makes us always handle uncaught Java exceptions in native
code if possible, and only forward to Java as a fallback.
2016-08-26 12:25:57 -04:00
Kan-Ru Chen
b6d880aca1 Bug 1297276 - Rename mfbt/unused.h to mfbt/Unused.h for consistency. r=froydnj
The patch is generated from following command:

  rgrep -l unused.h|xargs sed -i -e s,mozilla/unused.h,mozilla/Unused.h,

MozReview-Commit-ID: AtLcWApZfES


--HG--
rename : mfbt/unused.h => mfbt/Unused.h
2016-08-24 14:47:04 +08:00
Jim Chen
ac1b87c36f Bug 1292323 - Optimize native call dispatching; r=snorp
Refactor the dispatching code to be more streamlined, and add two
optimizations to the way we dispatch a call:

* avoid a pair of unnecessary calls to add/delete the global class ref,
  when dispatching a static call to the Gecko thread without a class ref
  parameter.

* avoid an extra allocation when dispatching to a proxy function.
2016-08-12 23:15:53 -04:00
Jim Chen
0ca0344ec2 Bug 1292323 - Merge NativeStubImpl into NativeStub; r=snorp
Merge all the NativeStubImpl specializations in jni/Natives.h into one
NativeStub, which makes it more organized and facilitates code sharing.
2016-08-12 23:15:53 -04:00
Jim Chen
36628f0198 Bug 1292323 - Implement JNI thread checking and dispatching; r=snorp
Implement checking the calling thread of a JNI call based on the
calledFrom attribute set in WrapForJNI. Also implement automatic call
dispatching based on the dispatchTo attribute set in WrapForJNI. This
eliminates the use of UsesNativeCallProxy and UsesGeckoThreadProxy.
2016-08-12 23:15:52 -04:00
Jim Chen
0bd1b97d16 Bug 1292323 - Update annotationProcessor to reflect WrapForJNI changes; r=snorp
Update the code generator and related classes in annotation processor to
use the new WrapForJNI flags. Also add some more sanity checking to make
sure the flags are used correctly.
2016-08-12 23:15:52 -04:00
Jim Chen
4b8a8da17c Bug 1289208 - Add native methods to AndroidGamepadManager; r=snorp
Add native method calls to AndroidGamepadManager to replace the gamepad
events in GeckoEvent. Implement those calls in AndroidGamepad.cpp. The
jni/Refs.h change is necessary to fix a compile error when using
jni::BooleanArray.
2016-08-04 09:16:05 -04:00
Carsten "Tomcat" Book
336105a0de merge mozilla-inbound to mozilla-central a=merge 2016-07-22 11:58:02 +02:00
Jim Chen
a7794572ee Bug 1287946 - Improve usage of StringParam in PrefsHelper; r=me
PrefsHelper uses Maybe<> as a replacement for a ternary expression, in
order to work around jni::StringParam's lack of copy constructor.
However, we can add a move constructor to StringParam, which lets us use
it in a ternary expression, and avoid the awkwardness of Maybe<>.
2016-07-21 13:49:05 -04:00
Jim Chen
ce45a595ab Bug 1287946 - Update existing code to use mozilla::java; r=me 2016-07-21 13:49:04 -04:00
Jim Chen
fe52fe774b Bug 1286663 - Add JNI wrapper class for ByteBuffer; r=snorp
Add a wrapper class for ByteBuffer and its associated calls in JNI.
2016-07-21 13:49:04 -04: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
Carsten "Tomcat" Book
eaf9acf7d5 Backed out changeset f623f6ccca25 (Bug 1286663) for another bustage on android on a CLOSED TREE 2016-07-21 08:14:27 +02:00
Carsten "Tomcat" Book
e8bc59a87a Backed out changeset 684888aeee81 (bug 1287946) 2016-07-21 08:07:12 +02:00
Carsten "Tomcat" Book
d8c7234cc9 Backed out changeset e954e5a93482 (bug 1287946) 2016-07-21 08:07:11 +02:00
Jim Chen
d082802e14 Bug 1287946 - Improve usage of StringParam in PrefsHelper; r=me
PrefsHelper uses Maybe<> as a replacement for a ternary expression, in
order to work around jni::StringParam's lack of copy constructor.
However, we can add a move constructor to StringParam, which lets us use
it in a ternary expression, and avoid the awkwardness of Maybe<>.
2016-07-21 00:42:26 -04:00
Jim Chen
78f67d1f6f Bug 1287946 - Update existing code to use mozilla::java; r=me 2016-07-21 00:42:26 -04:00
Jim Chen
bf5b43ab73 Bug 1286663 - Add JNI wrapper class for ByteBuffer; r=snorp
Add a wrapper class for ByteBuffer and its associated calls in JNI.
2016-07-21 00:41:12 -04:00
Jim Chen
9f20364a07 Bug 1277624 - Don't use anonymous namespace in headers; r=me
Trivial patch to not use anonymous namespace in headers, which can
introduce multiple copies of the same code in different compilation
units.
2016-06-27 14:49:55 -04:00
Jim Chen
9177a4b375 Bug 1277624 - Move JNI class name out of Context; r=snorp
Move the class name strings into ObjectBase, so that the strings can be
overridden by derived classes in other namespaces.
2016-06-27 14:49:55 -04:00
Nathan Froyd
154bef14bf Bug 1277650 - part 3 - add MOZ_JNICALL attribute to MakeNativeMethod's argument; r=darchons
clang complains that it's unable to instantiate this template because
the functions being passed as arguments are MOZ_JNICALL, while the
actual parameter to the function has no such attribute.  Adding the
attribute makes everything line up.
2016-06-06 16:58:55 -04:00
Nathan Froyd
9e9c7538de Bug 1277650 - part 2 - more explicit friending between NativeStubImpl and ProxyNativeCall; r=darchons
clang complains about specializations of NativeStubImpl not being able
to see the private constructor of ProxyNativeCall.  While
ProxyNativeCall includes a friend declaration for NativeStubImpl, it's
not obvious *which* NativeStubImpl is being friended, as NativeStubImpl
hasn't been forward declared and exists in a completely separate
namespace.  Forward declaring NativeStubImpl and adjusting the friend
declaration makes everything more correct.
2016-06-06 16:58:55 -04:00
Jim Chen
652036509d Bug 1268125 - Always use GetEnvForThread for GlobalRef ref/unref; r=snorp
Even though a class may not be multi-threaded, its object references can
still be passed to different threads. As long as the references are not
accessed, we should allow it, and therefore GlobalRef should use
GetEnvForThread for ref/unref, instead of using FindEnv, which can
trigger assertions on non-main threads.
2016-05-24 12:18:04 -04: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
Jim Chen
d8cd767aac Bug 1270202 - Move WindowEvent to outside of GeckoViewSupport; r=snorp
WindowEvent is not specific to GeckoViewSupport, and classes other than
GeckoViewSupport use it, so this patch moves it to outside of
GeckoViewSupport.
2016-05-05 11:39:02 -04:00
Jim Chen
46edf980e0 Bug 1244875 - Refactor JNI templates; r=snorp
Improve the performance of JNI calls by making JNI calls require a
Context object. LocalRef inherits from Context and can make calls
directly. Non-local Ref classes will generate a Context object when
making a call. The patch also makes the template design cleaner in
several cases.
2016-02-09 17:27:28 -05:00
Jim Chen
2b4561b520 Bug 1243049 - Implement new PrefsHelper native methods; r=snorp
Implement the PrefsHelper native methods. The previous browser.js
implementation supported "pseudo-prefs" that did not exist as actual
prefs, but was accessible through PrefsHelper. In order to accommodate
these pseudo-prefs, we send observer notifications in order to
communicate with browser.js about prefs that we don't support.
2016-02-01 17:38:13 -05:00
Jim Chen
bd5c7ad120 Bug 1238761 - Add specializations of jni::Ref for primitive arrays; r=snorp
This patch adds specializations of jni::Ref for primitive arrays like
IntArray and FloatArray, so that the arrays can be accessed through the
GetElement, GetElements, and Length members.
2016-01-15 13:05:44 -05:00
Jim Chen
dd04b2cada Bug 1235475 - Crash at the exception source when an exception is in native code; r=snorp
When we have a Java exception in native code, the Java stack in the
exception will not be very useful because the top frame is the native
entry point. In this case, the native stack is more useful. However,
currently we don't get a good native stack in this situation because we
go through Java when handling the exception, and the native stack we get
will have a lot of unknown frames inside libdvm or libart. This patch
makes us stay in native code when handling an uncaught exception from
native code, so that we get a good native stack.
2015-12-30 18:36:41 -05:00
Jim Chen
827f34efc0 Bug 1227706 - Implement nsWindow::GLControllerSupport; r=snorp
This patch adds native method implementations in GLControllerSupport to
manage compositor creation/pause/resume.
2015-12-23 22:03:34 -05:00
Jim Chen
325ee148ee Bug 1227706 - Let GeckoView manage GLController instances; r=snorp
GLController instances are associated with a particular nsWindow, rather
than a particular View. Therefore, we need to let GeckoView manage
GLController instances, as part of GeckoView's handling of saving and
restoring states.
2015-12-23 22:03:34 -05:00
Jim Chen
11f74c6395 Bug 1227731 - Add ability to redirect proxied native calls; r=snorp
This patch adds a way to set the target of a proxied native call, so the
call goes to another C++ function / class member than the original
target.
2015-12-23 22:03:34 -05:00
Birunthan Mohanathas
9985829ecc Bug 1219392 - Capitalize mozilla::unused to avoid conflicts. r=froydnj 2015-11-02 07:53:26 +02:00
Jim Chen
4bce9b46f1 Bug 1211704 - Count key and IME events as UI events; r=esawin
GeckoEvent.KEY_EVENT and GeckoEvent.IME_EVENT used to count as UI events
for the hang monitor. We should count the new native calls as native
events too through this patch.
2015-10-22 17:45:47 -04:00
Jim Chen
be2a6f1785 Bug 1215139 - Make NativeImpl::DisposeNative a static member; r=snorp
It's helpful to have a static DisposeNative when disposing of instances
that are still associated with a native object through an null weak
pointer. In that case, we can't call instance methods because the weak
pointer is null, but we can still call static methods.
2015-10-22 17:45:46 -04:00
Jim Chen
aacb32b312 Bug 1207642 - Work around Dalvik bug by realigning stack on JNI entry. r=snorp
Use the force_align_arg_pointer attribute to force realigning stack at JNI entry points.
2015-10-21 08:27:00 -04:00
Jim Chen
011890c91d Bug 1200343 - Add JNI wrapper for object arrays; r=snorp
This patch adds a specialization for jni::Ref<jni::ObjectArray>, which
includes members for getting the length of the array and accessing
array elements.
2015-09-28 12:07:09 -04:00
Wes Kocher
e143a6410c Backed out 4 changesets (bug 1200343) for android talos failures
Backed out changeset 67dc42cbf02b (bug 1200343)
Backed out changeset b077acafcebb (bug 1200343)
Backed out changeset e115ca114601 (bug 1200343)
Backed out changeset 905e1fb54fd4 (bug 1200343)
2015-09-25 13:21:58 -07:00
Jim Chen
3460f51c9f Bug 1200343 - Add JNI wrapper for object arrays; r=snorp
This patch adds a specialization for jni::Ref<jni::ObjectArray>, which
includes members for getting the length of the array and accessing
array elements.
2015-09-25 15:03:34 -04:00
Chris Peterson
71920a9550 Bug 1207030 - Enable -Wshadow flag in more directories that have no -Wshadow warnings. r=glandium 2015-09-22 21:39:03 -07:00
Nicholas Nethercote
f44287005f Bug 1198334 (part 1) - Replace the opt-in FAIL_ON_WARNINGS with the opt-out ALLOW_COMPILER_WARNINGS. r=glandium.
The patch removes 455 occurrences of FAIL_ON_WARNINGS from moz.build files, and
adds 78 instances of ALLOW_COMPILER_WARNINGS. About half of those 78 are in
code we control and which should be removable with a little effort.

--HG--
extra : rebase_source : 82e3387abfbd5f1471e953961d301d3d97ed2973
2015-08-27 20:44:53 -07:00
Jim Chen
b62c5aa0a3 Bug 1192043 - Add support for proxying native calls; r=snorp
If a C++ class implements native calls that all return void, it can
choose to have those calls go through a custom proxy function by
inheriting from mozilla::jni::UsesNativeCallProxy and override the
ProxyNativeCall member.

ProxyNativeCall accepts a rvalue reference to a
functor object specific to each call, and can alter the calling
environment (e.g. dispatch the call to another thread) before issuing
the actual native call through the functor's operator().

Any JNI refs contained in the call are automatically turned into global
refs so that the call can continue to work outside of the original JNI
call.

Native call proxy will be used to implement automatic dispatching of
native calls from the main thread to run on the Gecko thread.
2015-08-25 14:52:16 -04:00
Jim Chen
b8013723d5 Bug 1192043 - Fix compile errors in Natives.h; r=snorp
This patch fixes a compile error when using WeakPtr, where Impl* was
expected but SupportsWeakPtr<Impl>* was given.

This patch also fixes a compile error when using the DisposeNative
implementation provided by the autogenerated Natives class. e.g.,

> struct Foo : Bar::Natives<Foo> {
>     using Bar::Natives<Foo>::DisposeNative;
> };

This uses a default implementation of DisposeNative instead of a custom
implementation, and resulted in a compile error that this patch fixes.
2015-08-25 14:52:16 -04:00
Jim Chen
8323512edf Bug 1192043 - Clean up NativeStubImpl template parameters; r=snorp
The mangled name of a NativeStubImpl instantiation is longer than
necessary because of the ReturnType arg. This patch turns it into a bool
parameter. It also reorders the parameters for cleanness.
2015-08-25 14:52:16 -04:00
Jim Chen
4403af4250 Bug 1192043 - Add more JNIEnv support and null-check refs in JNI ref classs; r=snorp
Add more constructors in LocalRef and GlobalRef to accommodate use cases
where a JNIEnv is already available for performance reasons. Also add
more null-checks when creating references for performance reasons.
2015-08-25 14:52:16 -04:00
Nathan Froyd
5108c14a08 Bug 1194806 - part 5 - mark function pointer-to-members with JNICALL appropriately; r=snorp,jchen 2015-08-14 23:03:45 -04:00
Nathan Froyd
03c1f240be Bug 1194806 - part 4 - use |typename| to refer to trait class typedefs, not |class|; r=jchen 2015-08-14 22:34:16 -04:00
Nathan Froyd
a64d0e54a5 Bug 1194806 - part 1 - consistently declare mozilla::jni::detail::TypeAdaptor as a struct; r=jchen
clang doesn't like it when we declare things as a struct in one place
and a class in another.  This change makes all the current usages
consistent and clang happy.
2015-08-14 21:59:27 -04:00