History log of /dalvik/vm/mterp/c/gotoTargets.c
Revision Date Author Comments
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
7a2697d327936e20ef5484f7819e2e4bf91c891f 07-Jun-2010 Ben Cheng <bccheng@android.com> Implement method inlining for getters/setters

Changes include:
1) Force the trace that ends with an invoke instruction to include
the next instruction if it is a move-result (because both need
to be turned into no-ops if callee is inlined).
2) Interpreter entry point/trace builder changes so that return
target won't automatically be considered as trace starting points
(to avoid duplicate traces that include the move result
instructions).
3) Codegen changes to handle getters/setters invoked from both
monomorphic and polymorphic callsites.
4) Extend/fix self-verification to form identical trace regions and
handle traces with inlined callees.
5) Apply touchups to the method based parsing - still not in use.

Change-Id: I116b934df01bf9ada6d5a25187510e352bccd13c
de66fcbc1d7fde20bdafb508b769028d8f2ec9bc 30-Jul-2010 Elliott Hughes <enh@google.com> Switch -Xjnitrace over to using a custom JNI bridge.

This now works without needing to specify -Xint:portable, and no longer needs
to be manually enabled at compile-time.

If you're using -Xjnitrace, you'll pay to look up the real JNI bridge on every
invocation of a native method, but doing so leads to a really simple
implementation, and you're writing to the log on every invocation anyway, so
-Xjnitrace and performance don't go together anyway.

Bug: 2846017

Change-Id: I3108c4f35f27b72e8849c41077ae3e8768550e96
8afa9dfe04354e5b3917e31e3e2772885f507580 07-Jul-2010 Elliott Hughes <enh@google.com> Tracing for developers of native methods.

The existing -verbose:jni is mainly useful for VM developers hacking on the JNI
implementation; this is intended to replace the ad hoc logging developers of
native methods need to write.

Use "-Xint:portable -Xjnitrace:ClassNameSubstring" on the command line. To
trace all native methods (mainly useful for testing the tracing), use
"-Xjnitrace:"; to trace just methods in java.util.regex.Matcher, use
"-Xjnitrace:Matcher" or "-Xjnitrace:Ljava/util/regex/Matcher;" or whatever.
To trace all the methods in Matcher and Pattern, you have to use something
like "-Xjnitrace:java/util/regex/". There's no facility for tracing an
individual method or group of methods because I haven't needed such a thing.

Here's a basic example:

-> Ljava/nio/charset/Charsets;.toUtf8Bytes([CII)[B (0x400474b8, 0, 5)
<- Ljava/nio/charset/Charsets;.toUtf8Bytes([CII)[B returned 0x40047548

Here's an example of a non-static native method:

-> Lorg/apache/harmony/luni/platform/OSFileSystem;.writeImpl(I[BII)J this=0x40012e78 (1, 0x400476d0, 0, 5)
<- Lorg/apache/harmony/luni/platform/OSFileSystem;.writeImpl(I[BII)J returned 5

Here's an interesting example showing another native method being called, and
an exception being thrown by a native method:

-> Ljava/lang/VMClassLoader;.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; (0x400466b8, false)
-> Ljava/lang/Throwable;.nativeFillInStackTrace()Ljava/lang/Object; ()
<- Ljava/lang/Throwable;.nativeFillInStackTrace()Ljava/lang/Object; returned 0x400467c8
<- Ljava/lang/VMClassLoader;.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; threw Ljava/lang/ClassNotFoundException;

(This functionality needs to be enabled at compile time. A later patch will
address that.)

Change-Id: I6da8930bd4b4f228e07b05cc59a3aea331c5cee1
364f9d924cbd9d392744a66f80cc084c3d80caf0 12-Jun-2010 Barry Hayes <bhayes@google.com> Put wrappers on all stores of Object pointers into heap Objects.

Also:
Changed ++ loops to [i] loops where I'm touching.
Added some asserts.
Added dvmHeapSourceContainsAddress
Added dvmIsValidObjectAddress

Change-Id: I6586688246064aecabb1e22e1dca276fecee7795
fbdcfb9ea9e2a78f295834424c3f24986ea45dac 29-May-2010 Brian Carlstrom <bdc@google.com> Merge remote branch 'goog/dalvik-dev' into dalvik-dev-to-master

Change-Id: I0c0edb3ebf0d5e040d6bbbf60269fab0deb70ef9
fc075c2d1ae63c26f96e0c6eeb72efc898dbebbf 29-May-2010 Ben Cheng <bccheng@android.com> Clean up warnings detected by gcc.

Also re-enabled the JIT for the ARMv5te target.

Change-Id: I89fd229205e30e6ee92a4933290a7d8dca001232
dd6e87095071e4e987910732062545f7303023e5 07-May-2010 Ben Cheng <bccheng@android.com> Abandon a JIT trace if it contains static fields that are not fully initialized

Also turn some asserts into aborts to capture future contract changes between
the VM and the JIT.

Bug: 2655384
Change-Id: I8bb0226c7ae26fedf6b4ad25a1cd1aa7013b60d4
e92aa412a6779376911d415d4b790dc14f5f6bdd 08-Feb-2010 Bill Buzbee <buzbee@google.com> Jit: Remove references to interpState from C interpreter

Fix for Issue 2157987:
Eventual isssue with interpState->jitState in <dalvik/vm/mterp/c/header.c
5540f6e420ffab7bb0c39dc508bdc3a2e0d67507 08-Feb-2010 Bill Buzbee <buzbee@google.com> Jit: Remove references to interpState from C interpreter

Fix for Issue 2157987:
Eventual isssue with interpState->jitState in <dalvik/vm/mterp/c/header.c
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
d726991ba52466cde88e37aba4de2395b62477fa 10-Nov-2009 Bill Buzbee <buzbee@google.com> Jit stress mode: translate everything we can and self verify.

This represents a general clean-up of some existing command-line
options: -Xjitthreshold:num and -Xjitblocking. The jit threshold
controls how quickly we treat a Dalvik address as a potential trace
head. Normally this is set around 200 (and the range is 0..255, where
0 is in effect 256 and 1 means begin trace selection on first visit).

-Xjitblocking forces the system to pause execution whenever a translation
request is made and resume when that translation is complete. Normally
the system make a request but continues execution (to avoid jitter).

Additionally, if WITH_SELF_VERIFICATION is defined, we force blocking
to be true, and set the threshold to 1. And finally, we treat
threshold==1 as a special case and disable the 2nd-level trace-building
filter - which causes the system to immediately start trace selection.
dc84bb2b1657d88c5543eb22b875c297d49e709d 02-Oct-2009 Ben Cheng <bccheng@google.com> Fix trace builder to not confuse self-verification.
79d173cad420b2ef99a09688e603df7ea4f890e9 30-Sep-2009 Ben Cheng <bccheng@google.com> Fixed the trace builder to correctly handle excpetion throwing instruction.

Added a new unit test 081-hot-exceptions to target this problem.
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).
85745e148153894aac52ad3d7f6a36a7767b45a0 08-Jul-2009 Mike Lockwood <lockwood@android.com> Fix variable names related to bytecode tracing.

Signed-off-by: Tony Yokoyama <chuuoudai@gmail.com>

The compile errors, encountered in the case that macro LOG_INSTR is
turned on, are fixed.

On branch log_instr
Changes to be committed:

modified: vm/mterp/armv5te/debug.c
modified: vm/mterp/c/gotoTargets.c
modified: vm/mterp/out/InterpC-allstubs.c
modified: vm/mterp/out/InterpC-armv4.c
modified: vm/mterp/out/InterpC-armv5te.c
modified: vm/mterp/out/InterpC-portdbg.c
modified: vm/mterp/out/InterpC-portstd.c
modified: vm/mterp/out/InterpC-x86.c
modified: vm/mterp/portable/debug.c
modified: vm/oo/Class.c
ba4fc8bfc1bccae048403bd1cea3b869dca61dd7 01-Jun-2009 Ben Cheng <bccheng@android.com> Initial port of the Dalvik JIT enging to the internal repository.
Fixed files with trailing spaces.
Addressed review comments from Dan.
Addressed review comments from fadden.
Addressed review comments from Dan x 2.
Addressed review comments from Dan x 3.
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
31e30105703263782efd450d356cd67ea01af3b7 03-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@132589
6dcac3deb3c19dc634470eb30b2daedf2b201bd4 03-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@137055
5d709784bbf5001012d7f25172927d46f6c1abe1 11-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@130745
89c1feb0a69a7707b271086e749975b3f7acacf7 18-Dec-2008 The Android Open Source Project <initial-contribution@android.com> Code drop from //branches/cupcake/...@124589