7b4c1d52a946506d49c6da5649d1677e92263d66 |
|
18-Oct-2010 |
Andy McFadden <fadden@android.com> |
Pop call frame before boxing result After reflective method calls, primitive results need to be boxed up in an appropriate object. This generally requires allocating an object of the appropriate type. We were doing this before popping the call frame, which meant that if the allocation caused a GC we would be scanning results out of a "dead" stack frame. We hit a case where a register went from holding a reference to holding a primitive right before the method returned. The exported PC was pointing at the last GC point, where the register was expected to hold a reference, so precise GC was getting very confused. Bug 3102352. (cherry-pick from dalvik-dev) Change-Id: I21f59f1d70689d9e4901deb3100c756fd85223e7
|
0d615c3ce5bf97ae65b9347ee77968f38620d5e8 |
|
18-Aug-2010 |
Andy McFadden <fadden@android.com> |
Always support debugging and profiling. This eliminates the use of the WITH_DEBUGGER and WITH_PROFILER conditional compilation flags. We've never shipped a device without these features, and it's unlikely we ever will. They're not worth the code clutter they cause. As usual, since I can't test the x86-atom code I left that alone and added an item to the TODO list. Bug 2923442. Change-Id: I335ebd5193bc86f7641513b1b41c0378839be1fe
|
7365493ad8d360c1dcf9cd8b6eee62747af01cae |
|
09-Jun-2010 |
Carl Shapiro <cshapiro@google.com> |
Remove repeated newlines at the end of files. Change-Id: I1e3d103a7b932ef21acedb6438c0f26b315df28f
|
de75089fb7216d19e9c22cce4dc62a49513477d3 |
|
09-Jun-2010 |
Carl Shapiro <cshapiro@google.com> |
Remove trailing whitespace. Change-Id: I95534bb2b88eaf48f2329282041118cd034c812b
|
fbdcfb9ea9e2a78f295834424c3f24986ea45dac |
|
29-May-2010 |
Brian Carlstrom <bdc@google.com> |
Merge remote branch 'goog/dalvik-dev' into dalvik-dev-to-master Change-Id: I0c0edb3ebf0d5e040d6bbbf60269fab0deb70ef9
|
e3c01dac83e6eea7f82fe81ed89cfbdd9791dbc9 |
|
21-May-2010 |
Carl Shapiro <cshapiro@google.com> |
Remove unused labels, variables, and functions. Enable warnings. Change-Id: Icbe24eaf1ad499f28b68b6a5f05368271a0a7e86
|
0a24ef9d1a88984dae3f7a9bf431c82626eadb2e |
|
12-Mar-2010 |
Andy McFadden <fadden@android.com> |
Try to show lock owner in MONITOR thread dump. A thread in the MONITOR state is blocked waiting on a monitor. This raises two interesting questions: (1) what lock is it waiting on, and (2) who holds that lock? The answer to (1) can be determined easily by looking at the source code, but (2) is a bit harder. This change extracts the target object from the instruction stream and prints some information about it, e.g.: - waiting to lock <0x40028c68> (a java.lang.Object) held by threadid=1 (main) Also: fiddled with "must [not] be locked" on a recently-added function. (cherry-picked from dalvik-dev) Change-Id: Ic16695741760d50be70e70fb7470972cef28bb09
|
fd54266907c3046339b48748f63afa32ee3ab4e1 |
|
12-Mar-2010 |
Andy McFadden <fadden@android.com> |
Try to show lock owner in MONITOR thread dump. A thread in the MONITOR state is blocked waiting on a monitor. This raises two interesting questions: (1) what lock is it waiting on, and (2) who holds that lock? The answer to (1) can be determined easily by looking at the source code, but (2) is a bit harder. This change extracts the target object from the instruction stream and prints some information about it, e.g.: - waiting to lock <0x40028c68> (a java.lang.Object) held by threadid=1 (main) Change-Id: Iad18fc6f2df4142368bdf1063b8cc71de2d66156 Also: fiddled with "must [not] be locked" on a recently-added function.
|
4fbba1f95b3e27bdc5f5572bb0420b5f928aa54e |
|
03-Feb-2010 |
Andy McFadden <fadden@android.com> |
Fix stack overflow edge case. When a stack overflows, Dalvik allows the stack to expand into a "reserved" area, so that it has enough room to create and initialize the StackOverflowError object. While the stack is expanded we also do the search for an appropriate "catch" block, which may require resolving some exception classes. As it happens, things go badly when the "catch" resolution throws an exception. The VM tries to shrink the stack back down after the second exception is finished, rather than waiting for the initial SOE to finish. Since we still have some additional frames on the stack, we're still occupying the "reserved" area, and the VM aborts when it detects the situation. This changes the stack cleanup to wait until the SOE is being dealt with. For bug 2398031.
|
72e93344b4d1ffc71e9c832ec23de0657e5b04a5 |
|
13-Nov-2009 |
Jean-Baptiste Queru <jbq@google.com> |
eclair snapshot
|
6ed1a0f396a1857c31b486d3e93ee2dbeb49a6cd |
|
11-Sep-2009 |
Andy McFadden <fadden@android.com> |
Display additional information on stack overflow. This required passing an additional argument into dvmHandleStackOverflow, which is called directly from mterp. Fortunately the method being called is sitting in a register for both ARM and x86, so this is a fairly simple change. For internal bug 2110533.
|
d5ab726b65d7271be261864c7e224fb90bfe06e0 |
|
25-Aug-2009 |
Andy McFadden <fadden@android.com> |
Another round of scary indirect ref changes. This change adds a not-really-working implementation to Jni.c, with various changes #ifdefed throughout the code. The ifdef is currently disabled, so the old behavior should continue. Eventually the old version will be stripped out and the ifdefs removed. This renames the stack's "localRefTop" field, which nudged a bunch of code. The name wasn't really right before (it's the *bottom* of the local references), and it's even less right now. This and one other mterp-visible constant were changed, which caused some ripples through mterp and the JIT, but the ifdeffing was limited to one in asm-constants.h (and the constant is the same both ways, so toggling the ifdef won't require rebuilding asm sources). Some comments and arg names in ReferenceTable were updated for the correct orientation of bottom vs. top. Some adjustments were made to the JNI code, e.g. dvmCallMethod now needs to understand if it needs to convert reference arguments from local/global refs to pointers (it's called from various places throughout the VM).
|
0083d37b0e1c9e542f671cbca2e9db6819ecccba |
|
21-Aug-2009 |
Andy McFadden <fadden@android.com> |
Use local references for native method args. This changes the JNI method call mechanism to register all reference arguments as local refs, as well as the "this" argument (for virtual calls) and the class object (for static calls). Before now we skipped this part, because we're handing raw object pointers around, and we know that all of the arguments can be found by the GC on the interpreted stack. In fact, there's no need to add the arguments for GC-correctness; rather, we need to do this to rewrite the pointers we hand to native code. This change impacts JNI method call performance, especially for functions with a large number of reference arguments. To improve things a little, there are now four "call bridge" functions: (1) general handler (2) synchronized method handler (grabs lock, calls #1) (3) virtual method, no reference args (4) static method, no reference args While booting the system, the virtual/static no-ref handlers are used for about 70% of calls. Since these don't have to scan the method signature to look for reference arguments, they're a bit faster. At this point we're still passing raw pointers around, so nothing should really change.
|
8e5c78470229fd2f5474574081eaa4a2286aafea |
|
24-Jul-2009 |
Andy McFadden <fadden@android.com> |
JNI direct buffer function speedup, part 2. This converts the three direct buffer functions from JNI to internal VM calls. As a bonus, we grab PlatformAddress.osaddr directly instead of retrieving it with PlatformAddress.toLong(). We're still calling through getEffectiveAddress(), which is where most of the complexity lies. Nudged a couple of comments.
|
fea44bae077d2d5b4d5197132b2556fd3882d241 |
|
01-Jul-2009 |
Andy McFadden <fadden@android.com> |
Pull 138592-p9 from master to donut. Switch from VMWAIT to RUNNING when executing code on behalf of the debugger. Reset the thread-suspend lock timeout if we have to suspend while trying to acquire it. Also, clear any pending exception before calling interpreted code. Reworked some log messages to make them easier to decipher. (For internal bug 1952616.)
|
99409883d9c4c0ffb49b070ce307bb33a9dfe9f1 |
|
19-Mar-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import //branches/master/...@140412
|
f6c387128427e121477c1b32ad35cdcaa5101ba3 |
|
04-Mar-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //depot/cupcake/@135843
|
f72d5de56a522ac3be03873bdde26f23a5eeeb3c |
|
04-Mar-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //depot/cupcake/@135843
|
89c1feb0a69a7707b271086e749975b3f7acacf7 |
|
18-Dec-2008 |
The Android Open Source Project <initial-contribution@android.com> |
Code drop from //branches/cupcake/...@124589
|
2ad60cfc28e14ee8f0bb038720836a4696c478ad |
|
21-Oct-2008 |
The Android Open Source Project <initial-contribution@android.com> |
Initial Contribution
|