History log of /dalvik/vm/interp/Interp.cpp
Revision Date Author Comments
4fa9a95705253695d257381fdb12311f13d7638a 06-Aug-2012 Elliott Hughes <enh@google.com> RETURN_VOID_BARRIER is also a return.

Bug: http://code.google.com/p/android/issues/detail?id=36003
Change-Id: I7fb53b0898158a3ad7b0eb4f8385674ddaeffd60
0c2dc522d0e120f346cf0a40c8cf0c93346131c2 03-Jul-2012 Dong-Yuan Chen <dong-yuan.chen@intel.com> [X86] X86 trace JIT compiler support

This patch provides a fully functional x86 trace JIT compiler for Dalvik
VM. It is built on top of the existing x86 fast interpreter
with bug fixes and needed extension to support trace JIT interface. The
x86 trace JIT code generator was developed independent of the existing
template-based code generator and thus does not share exactly the same
infrastructure. Included in this patch are:

* Deprecated and removed the x86-atom fast interpreter that is no
longer functional since ICS.
* Augmented x86 fast interpreter to provide interfaces for x86 trace JIT
compiler.
* Added x86 trace JIT code generator with full JDWP debugging support.
* Method JIT and self-verification mode are not supported.

The x86 code generator uses the x86 instruction encoder/decoder library
from the Apache Harmony project. Additional wrapper extension and bug
fixes were added to support the x86 trace JIT code generator. The x86
instruction encoder/decoder is embedded inside the x86 code generator
under the libenc subdirectory.

Change-Id: I241113681963a16c13a3562390813cbaaa6eedf0
Signed-off-by: Dong-Yuan Chen <dong-yuan.chen@intel.com>
Signed-off-by: Yixin Shou <yixin.shou@intel.com>
Signed-off-by: Johnnie Birch <johnnie.l.birch.jr@intel.com>
Signed-off-by: Udayan <udayan.banerji@intel.com>
Signed-off-by: Sushma Kyasaralli Thimmappa <sushma.kyasaralli.thimmappa@intel.com>
Signed-off-by: Bijoy Jose <bijoy.a.jose@intel.com>
Signed-off-by: Razvan A Lupusoru <razvan.a.lupusoru@intel.com>
Signed-off-by: Tim Hartley <timothy.d.hartley@intel.com>
0de2df09a41ffbe2318dbc9a4daa04dc7966f9b8 18-Jul-2012 Elliott Hughes <enh@google.com> Fix a small and unlikely memory leak.

Change-Id: I131b9f2f8ae4a4b2bb3bb00bc2cd1e607d979bb5
75425b731c514bf90c985275d80aa7886727d83f 01-Feb-2012 Chris Dearman <chris@mips.com> Fix the portable interpreter build

Change-Id: Ibf08d50c7a01a4c30559dd2ee9511c28fb1365a5
Signed-off-by: Chris Dearman <chris@mips.com>
3560a2d72e377a36fc0a8ee675b3bf6096dc8f43 18-Jan-2012 buzbee <buzbee@google.com> Remove stale assert

Delete a stale assert that can cause problems when running with
the portable interpreter when debugging or profiling.

Change-Id: I354a1fbe280e1baeb885cb51fed1f3e2c8eef159
c1a4ab9c313d8a3d12007f2dbef7b5a6fa4ac2ef 06-Jan-2012 Steve Block <steveblock@google.com> Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/#/c/157220

Also fix an occurrence of LOGW missed in an earlier change.

Bug: 5449033
Change-Id: I2e3b23839e6dcd09015d6402280e9300c75e3406
e8e1ddccd616e8226b7cc1e4e9fdb327429249e8 06-Jan-2012 Steve Block <steveblock@google.com> Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/157065

Bug: 5449033
Change-Id: Ia5d301248024df26c2a29dabdfe738e39ec87c82
4308417beec548c2b2c06ecec4f7f4a965b09fb2 04-Jan-2012 Steve Block <steveblock@google.com> Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/156801

Bug: 5449033
Change-Id: Ic558031c75b3702d90eb78bd730501ae5d3c077b
062bf509a77fce9dfcb7e7b2e401cf2a124d83d5 20-Dec-2011 Steve Block <steveblock@google.com> Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/156016

Bug: 5449033
Change-Id: Ic663376d1ad6a6cb14bf81405ad9afd247cf2f60
e3d9cde40f96bf40dd4ad3d495949869bde5dd1e 01-Nov-2011 Ben Cheng <bccheng@android.com> Disable JIT single-stepping resume mode.

BUG: 5551114
Change-Id: Id8ee75be5e71ee258994235952871ad181024e56
17d00d5ded5e5b347cbbf92de3f5f8a35d13e115 27-Oct-2011 Ben Cheng <bccheng@android.com> Fix single-stepping resume mode in the interpreter.

(cherry-picked from master)

When a resume attempt is cancelled due to other pending request make sure
the old native resume PC is cleared. Otherwise the JIT code cache may be
re-entered with mismatching Dalvik PC.

Also fix a code bloat problem where single-step count is not set properly
after executing a return instruction.

BUG: 5208786

Change-Id: I39db1633dcda1f464311c878ded4b5695a9b7ffd
8faec7e782eca1fd6a2ad071c30b939c77c82662 27-Oct-2011 Ben Cheng <bccheng@android.com> Fix single-stepping resume mode in the interpreter.

(cherry-picked from master)

When a resume attempt is cancelled due to other pending request make sure
the old native resume PC is cleared. Otherwise the JIT code cache may be
re-entered with mismatching Dalvik PC.

Also fix a code bloat problem where single-step count is not set properly
after executing a return instruction.

BUG: 5208786

Change-Id: I39db1633dcda1f464311c878ded4b5695a9b7ffd
b1e2271b51cfb1f264b8966f1151652767259751 27-Oct-2011 Ben Cheng <bccheng@android.com> Fix single-stepping resume mode in the interpreter.

(cherry-picked from master)

When a resume attempt is cancelled due to other pending request make sure
the old native resume PC is cleared. Otherwise the JIT code cache may be
re-entered with mismatching Dalvik PC.

Also fix a code bloat problem where single-step count is not set properly
after executing a return instruction.

BUG: 5208786

Change-Id: I54775215b11eae29ccdb6111dc0fdfa99e41e08d
0c0624bfad83503547b0226bd2dfac055782582a 27-Oct-2011 Ben Cheng <bccheng@android.com> Fix single-stepping resume mode in the interpreter.

When a resume attempt is cancelled due to other pending request make sure
the old native resume PC is cleared. Otherwise the JIT code cache may be
re-entered with mismatching Dalvik PC.

Also fix a code bloat problem where single-step count is not set properly
after executing a return instruction.

Change-Id: Ia926bc3a87cae1296719a1069838060b181ce54d
92c1f6f1b4249e4e379452ee7b49f027052bf4ce 20-Oct-2011 Steve Block <steveblock@google.com> Rename (IF_)LOGV(_IF) to (IF_)ALOGV(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/#/c/143865

Bug: 5449033
Change-Id: I8bd96961e369a08e86ff78b82d90f20f42787eb1
1663a6c12fdf4732d7ea0a0406af6085b3c408e4 12-Oct-2011 Steve Block <steveblock@google.com> Rename (IF_)LOG() to (IF_)ALOG() DO NOT MERGE

See https://android-git.corp.google.com/g/#/c/141576

Bug: 5449033
Change-Id: Ie3bc0d5436218ea05f98cb0373ecf5924f78db05
167e062f649c5dd0d811336e8e5734e956ef38dc 06-Sep-2011 Jesse Wilson <jessewilson@google.com> Attempt to fix dalvik heap corruption.

This is bccheng's find, as reported here:
http://b/5208786#ISSUE_HistoryHeader49

Bug: http://b/5208786
Change-Id: I1616bac1ef6c197f723656187a784fc6838975d4
6e0be609807de9fabe1b63a75f7c7d619bfa2f9f 06-Sep-2011 Jesse Wilson <jessewilson@google.com> Attempt to fix dalvik heap corruption.

This is bccheng's find, as reported here:
http://b/5208786#ISSUE_HistoryHeader49

Bug: http://b/5208786
Change-Id: I1616bac1ef6c197f723656187a784fc6838975d4
8bc8bf71a52e17d483021b4c9dc8e735d9bce3ed 20-Jul-2011 Elliott Hughes <enh@google.com> Don't use dvmIsValidObject outside the GC.

Use dvmIsHeapPointer outside the GC. (This still isn't safe because there's
no synchronization when dealing with the HeapSource.)

Bug: 5049447
Change-Id: Ie0b325ef0a92687ea1eaf1491a4bb832298893c5
b08e2b6017770e887f6072c1520b2d7f2ef6916c 07-Jun-2011 Elliott Hughes <enh@google.com> Switch dvmHumanReadableDescriptor over to std::string.

(Prep work before making a change to stack dumps.)

Change-Id: I0af49b920f450fd2611e4b96e717a637483122d6
291c84f60853d30e1c0d79dd08c5e5164f588e26 26-May-2011 Dan Bornstein <danfuzz@android.com> Prefer printf format "%#x" over "0x%x".

I exist to serve.

Change-Id: I8e2880b20eefd466da8515d5b6b0c5cb75d56169
60fc806b679a3655c228b4093058c59941a49cfe 26-May-2011 Dan Bornstein <danfuzz@android.com> Further conservation of newlines.

Friends don't let friends end LOG() strings with newlines.

Change-Id: I5a18c766c90c4ab5f03caa6acd601d34d91beb00
cf4a20cf0cbc53f03a5b16c7152bbb29907f7108 25-May-2011 buzbee <buzbee@google.com> Interpreter/Debugger fix #4479968

This one was tricky to track down. The underlying problem arose
with the consolidation of InterpState with Thread. Rather than
having a state structure for each instance of the interpreter, we
moved to a model that had a single thread-local struct shared by all
interpreter instances running on that thread. A portion of interpreter
state can't be shared - and thus was saved and restored on nested
invocations of the interpreter.

The bug here was that the storage for method return values was not
included in the state that needed save/retore. In normal operation,
it doesn't need to be saved - that storage isn't live across an
invoke that could trigger a nested interpreter activation. However,
when debugging, the debugger itself may hijack threads and create
new interpreter instances for its own purposed - and there is a small
window in which live retval can be trashed.

The fix is simply to move retval into the InterpSave struct.

Change-Id: Ib621824b799c5caa16fdfa8f5689a181159059df
313d430d5b3b96b45370ccddee52a6d88a799f35 11-May-2011 Ben Cheng <bccheng@android.com> Another single-stepping fix in JIT self-verification mode.

The counted single stepping check should be based on the
kSubModeCountedStep submode instead.

Also since the NPC value is cleared when exceptions are thrown, we can
single-step instructions that can throw as well.

Change-Id: Idbc1307ae0956016ef76186aebc6e3b89b119d9d
2ec9f7802034144383261b2fd915bdf1eb396ea4 03-May-2011 buzbee <buzbee@google.com> x86 interpreter fix

Correct the ordering of FP save prior to special subMode handling.
Also added a stress test mode to help catch this sort of problem in
the future.

Change-Id: I5bcd325858fa63023498bfd47e910aaf1530d6bb
d862faa2ceae186da5518607505eb942d634ced9 28-Apr-2011 Carl Shapiro <cshapiro@google.com> Get rid of uneeded extern, enum, typedef and struct qualifiers.

Change-Id: I236c5a1553a51f82c9bc3eaaab042046c854d3b4
cf2aac7e6a29e7e1e5f622fd6123e0d1a9a75bda 25-Apr-2011 buzbee <buzbee@google.com> Refine & simplify the interBreak mechanism

Replace dvmUpdateInterpBreak() and friends with more direct
enable/disable subMode calls. Hide breakFlags manipulation from
higher-level callers and infer what is needed from the active
subMode.

Add documentation to the interpreter control section of
mterp/README.txt

Change-Id: If7ebee5d8e4db8154c4caed72cf89ec088045998
389e258a5b9b2afb7bfaee3344c615d3310fae4e 23-Apr-2011 buzbee <buzbee@google.com> InterpBreak cleanup (part 1)

Moved the suspend count variables from the interpBreak structure. These
are already protected by a mutex, and we need the space in interpBreak
for additional subMode flags. This CL just does the move and expands
the width of subMode to 16-bits.

Change-Id: I4a6070b1ba4fb08a0f6e0aba6f150b30f9159eed
30bc0d46ae730d78c42c39cfa56a59ba3025380b 22-Apr-2011 buzbee <buzbee@google.com> Consolidate curFrame fields in thread storage

We ended up with two locations in the Thread structure for saved
Dalvik frame pointer. This change consolidates them.

Change-Id: I78f288e4e57e232f29663be930101e775bfe370f
1e1433e78f560a01744e870c19c162ab88df9dc1 21-Apr-2011 Carl Shapiro <cshapiro@google.com> Remove unneeded void argument list declarations.

Change-Id: Ica749f6defa890363ec531b29e25bc415dc2cbb9
1813ab265f691e93401c7307c0b34247842ab35e 16-Apr-2011 Carl Shapiro <cshapiro@google.com> Move the verifier and parts of the interpreter into C++.

Change-Id: I8ce5fb558871d9709b251512dd01206be5ca8497