OSDN Git Service
buzbee [Mon, 28 Feb 2011 19:10:33 +0000 (11:10 -0800)]
Use new negative array size exception reporting
Follow-up to change 98624 to enhance assembly interpreters to use
the new dvmThrowNegativeArraySizeException.
Change-Id: I9c8b425b3255d42afa1dc466024c03eeeb4eec23
Carl Shapiro [Mon, 28 Feb 2011 18:46:53 +0000 (10:46 -0800)]
Merge "Assert that objects passed to scanObject are marked." into dalvik-dev
Carl Shapiro [Mon, 28 Feb 2011 18:44:06 +0000 (10:44 -0800)]
Merge "Expand away some infrequently used logging macros." into dalvik-dev
Dan Bornstein [Mon, 28 Feb 2011 18:38:32 +0000 (10:38 -0800)]
Merge "More exception cleanup." into dalvik-dev
Andy McFadden [Mon, 28 Feb 2011 15:43:17 +0000 (07:43 -0800)]
Merge "Update dexopt control logic" into dalvik-dev
Carl Shapiro [Sat, 26 Feb 2011 03:42:07 +0000 (19:42 -0800)]
Assert that objects passed to scanObject are marked.
This condition could be assumed true as scanObject was only passed
objects that had been popped from the mark stack. With the new
garbage collector objects to scan may be coming from bitmap or card
table scans. Improper use of the scanning primitives can result in
unmarked objects being scanned.
Change-Id: I416cad2638c512a88a14fdfa693eb62392b5e63b
Carl Shapiro [Sat, 26 Feb 2011 02:59:44 +0000 (18:59 -0800)]
Expand away some infrequently used logging macros.
Change-Id: I642c8dbf794d5a6f73b539eb5f47140368c2f397
Dan Bornstein [Fri, 25 Feb 2011 23:49:29 +0000 (15:49 -0800)]
More exception cleanup.
Added a few more classes to the list and tweaked
dvmThrowNegativeArraySizeException() to actually take the size as an
argument. Still pending: Changing the assembly interp files to make
better calls.
Change-Id: I3a470f5fd4c9a1f7f55fc875900096c00c4ac010
Dan Bornstein [Fri, 25 Feb 2011 21:31:45 +0000 (13:31 -0800)]
More exception cleanup.
I added a few more exception class objects, and migrated existing
uses of those exceptions away from naming the class as a string.
I left one TODO in the x86-atom interp, as there is nobody actively
maintaining that codebase.
Change-Id: I9226a2d81b0389a14f7a3770d978a9bbe98c2898
Andy McFadden [Fri, 25 Feb 2011 00:53:55 +0000 (16:53 -0800)]
Update dexopt control logic
This adds a new mode, -Xdexopt:full. In most ways it behaves like
-Xdexopt:verified (the default), but when an un-optimized class is
loaded we will do a full set of optimizations instead of just the
"essential" set.
For classes that are verified and optimized by dexopt (which is to
say, most of them), this has no effect. For the others, this trades
off speed for space, substituting quickened instructions but causing
copy-on-write of pages mapped from the DEX file.
This also demotes the substitution of execute-inline opcodes to
"non-essential" status.
Change-Id: I392fb2ff0bf0af83c000937079895d25ce7f0cb1
Dan Bornstein [Fri, 25 Feb 2011 20:30:59 +0000 (12:30 -0800)]
Merge "Add a bit of structure to the Exception startup code." into dalvik-dev
Dan Bornstein [Thu, 24 Feb 2011 23:47:20 +0000 (15:47 -0800)]
Add a bit of structure to the Exception startup code.
This is in preparation for having a *lot* more exception classes get
looked up at startup time.
Change-Id: Id464c5b19a6a15f6779d8959f5d6397a0c6c5842
Andy McFadden [Fri, 25 Feb 2011 01:13:26 +0000 (17:13 -0800)]
Merge "Fix a divide-by-zero" into dalvik-dev
Andy McFadden [Fri, 25 Feb 2011 00:55:40 +0000 (16:55 -0800)]
Fix a divide-by-zero
Only happened when JIT was enabled, you selected libdvm_assert.so, and
the JIT didn't find anything useful to do before the VM exited.
Change-Id: I031d6c1c589a90f7c4580c262caa9e986cda9e63
jeffhao [Thu, 24 Feb 2011 23:26:48 +0000 (15:26 -0800)]
Merge "Changed dx register allocator to place more phis and reuse locals." into dalvik-dev
jeffhao [Thu, 24 Feb 2011 01:45:51 +0000 (17:45 -0800)]
Changed dx register allocator to place more phis and reuse locals.
This change makes the register allocator try to place all phis earlier,
by using whichever register is most common among its sources and result.
In addition, the code tries much harder to reuse registers originally
reserved for locals if they are no longer live. This leads to fewer
registers in many methods.
Change-Id: I5f69320686184f784384f5cf3a1d9c97e44ec19d
Dan Bornstein [Thu, 24 Feb 2011 18:32:47 +0000 (10:32 -0800)]
Round three of exception cleanup.
I expanded AIOOBE since it was the odd one out, migrated the wrappers
in Exception.h to the end of the file where they're less disruptive,
and tweaked a couple other throws in the main vm code.
Change-Id: Iae11fda2c47989ce7579483df226124ffeb2ac84
Dan Bornstein [Thu, 24 Feb 2011 01:32:06 +0000 (17:32 -0800)]
am
75144030: Add new comparator function.
* commit '
75144030732a492207f594ae6bf73f0308d6be6c':
Add new comparator function.
Dan Bornstein [Wed, 23 Feb 2011 23:30:24 +0000 (15:30 -0800)]
Add new comparator function.
This one compares a DexProto with a list of method parameter types,
and it is immediately useful in the new getMethod() reflection code,
to avoid doing a bunch of extra string manipulation.
While I was in the territory, I removed some comment redundancy.
Change-Id: I5049e2ac4606e44a65c3c426ac2f880a891c51f9
Dan Bornstein [Wed, 23 Feb 2011 23:30:24 +0000 (15:30 -0800)]
Add new comparator function.
This one compares a DexProto with a list of method parameter types,
and it is immediately useful in the new getMethod() reflection code,
to avoid doing a bunch of extra string manipulation.
While I was in the territory, I removed some comment redundancy.
Change-Id: I1d3c8df534601890165b2e251c036579e4caccdc
Dan Bornstein [Wed, 23 Feb 2011 22:56:56 +0000 (14:56 -0800)]
Merge "Round two." into dalvik-dev
Dan Bornstein [Wed, 23 Feb 2011 22:11:27 +0000 (14:11 -0800)]
Round two.
This gets most of the rest of the cases where a simple(ish) message
is included with a throw.
Change-Id: Id081966e5c505063c4d4dcf936037cf4d55fc8bf
Andy McFadden [Wed, 23 Feb 2011 21:53:53 +0000 (13:53 -0800)]
Merge "Bump up the Dalvik versions" into dalvik-dev
Jesse Wilson [Wed, 23 Feb 2011 21:44:21 +0000 (13:44 -0800)]
am
5945bc11: Merge "Optimize Class.getMethod() by loading only one method."
* commit '
5945bc11f354083d24f952992dc579a1fd77dba8':
Optimize Class.getMethod() by loading only one method.
Dan Bornstein [Wed, 23 Feb 2011 21:42:15 +0000 (13:42 -0800)]
Merge "Factor out class names from throw statements." into dalvik-dev
Dan Bornstein [Wed, 23 Feb 2011 21:07:07 +0000 (13:07 -0800)]
Factor out class names from throw statements.
Most exception throwing now happens via purpose-built wrapper
functions, each of which encapsulates the actual exception class name,
reducing one source of error (examples of which I fixed during this
exercise) and generally tidying things up.
This change doesn't fix all uses of exception class names, nor even
all throws, because (a) there were classes I didn't get to; (b)
because I didn't make wrappers for all the possible throw function
variants (e.g. the one that takes a cause, the one that takes varargs
for string formatting, etc.); and (c) there are uses of exception
classes in contexts other than throwing. But this change at least makes
a dent in the problem.
Change-Id: I6586ddd3e66ac0fc32c23181b17600ded0b914b2
Jesse Wilson [Wed, 23 Feb 2011 21:32:57 +0000 (13:32 -0800)]
Merge "Optimize Class.getMethod() by loading only one method."
Jesse Wilson [Wed, 23 Feb 2011 04:20:36 +0000 (20:20 -0800)]
Optimize Class.getMethod() by loading only one method.
Change-Id: Ia2cd776c0a14914264e8d94e978d55854ed75623
http://b/
3431686
Andy McFadden [Tue, 22 Feb 2011 22:04:19 +0000 (14:04 -0800)]
Bump up the Dalvik versions
Increase the human-readable form to differentiate from HC.
Increase the build number because we need to re-DEX stuff after
some recent changes (e.g. we've increased the number of methods
that need to use return-void-barrier).
Change-Id: I8f2c94694f7a11e86de882963ba509711f668f47
Andy McFadden [Wed, 23 Feb 2011 05:33:24 +0000 (21:33 -0800)]
am
636ed3eb: Bump Dalvik version.
* commit '
636ed3eba9e28d9630c8d8177b2ae601e7990f0e':
Bump Dalvik version.
Carl Shapiro [Wed, 23 Feb 2011 00:51:27 +0000 (16:51 -0800)]
Remove a comment about cloning partially initialized objects.
The compiler and verifier should make this situation impossible.
Change-Id: I0be561108ff7ed221ab98172919c59e80a0365b7
Andy McFadden [Tue, 22 Feb 2011 22:26:27 +0000 (14:26 -0800)]
Merge "Added flags to dvmCloneObject" into dalvik-dev
Andy McFadden [Tue, 22 Feb 2011 22:09:19 +0000 (14:09 -0800)]
Bump Dalvik version.
Minor increase to differentiate HC MR1 from HC.
Change-Id: I2ccd57d4952c19c2df2fe948ce60c476819450d4
buzbee [Tue, 22 Feb 2011 22:01:46 +0000 (14:01 -0800)]
Fix for
3477749 WITH_TRACKREF_CHECKS
Failed to specify grouping struct on access to debugTrackedRefStart
in recent InterpState/Thread consolidation. Fixed.
Change-Id: Ib996b96fa1f322e3c433377bea79293eb984fca9
Andy McFadden [Tue, 22 Feb 2011 21:56:47 +0000 (13:56 -0800)]
Added flags to dvmCloneObject
Updated the call site to use "don't track".
Change-Id: Ibd4b5a9d93b0043c3906ad86b9ae19d1bf70541d
Jesse Wilson [Tue, 22 Feb 2011 03:16:46 +0000 (19:16 -0800)]
Merge "Retain annotations when merging dex files." into dalvik-dev
buzbee [Sun, 20 Feb 2011 17:41:25 +0000 (09:41 -0800)]
Merge "Interpreter restructuring: eliminate InterpState" into dalvik-dev
buzbee [Sat, 12 Feb 2011 01:48:20 +0000 (17:48 -0800)]
Interpreter restructuring: eliminate InterpState
The key datastructure for the interpreter is InterpState.
This change eliminates it, merging its data with the Thread structure.
Here's why:
In principio creavit Fadden Thread et InterpState. And it was good.
Thread holds thread-private state, while InterpState captures data
associated with a Dalvik interpreter activation. Because JNI calls
can result in nested interpreter invocations, we can have more than one
InterpState for each actual thread. InterpState was relatively small,
and it all worked well. It was used enough that in the Arm version
a register (rGLUE) was dedicated to it.
Then, along came the JIT guys, who saw InterpState as a convenient place
to dump all sorts of useful data that they wanted quick access to through
that dedicated register. InterpState grew and grew. In terms of
space, this wasn't a big problem - but it did mean that the initialization
cost of each interpreter activation grew as well. For applications
that do a lot of callbacks from native code into Dalvik, this is
measurable. It's also mostly useless cost because much of the JIT-related
InterpState initialization was setting up useful constants - things that
don't need to be saved and restored all the time.
The biggest problem, though, deals with thread control. When something
interesting is happening that needs all threads to be stopped (such as
GC and debugger attach), we have access to all of the Thread structures,
but we don't have access to all of the InterpState structures (which
may be buried/nested on the native stack). As a result, polling for
thread suspension is done via a one-indirection pointer chase. InterpState
itself can't hold the stop bits because we can't always find it, so
instead it holds a pointer to the global or thread-specific stop control.
Yuck.
With this change, we eliminate InterpState and merge all needed data
into Thread. Further, we replace the decidated rGLUE register with a
pointer to the Thread structure (rSELF). The small subset of state
data that needs to be saved and restored across nested interpreter
activations is collected into a record that is saved to the interpreter
frame, and restored on exit. Further, these small records are linked
together to allow tracebacks to show nested activations. Old InterpState
variables that simply contain useful constants are initialized once at
thread creation time.
This CL is large enough by itself that the new ability to streamline
suspend checks is not done here - that will happen in a future CL. Here
we just focus on consolidation.
Change-Id: Ide6b2fb85716fea454ac113f5611263a96687356
Jesse Wilson [Sat, 19 Feb 2011 20:03:49 +0000 (12:03 -0800)]
Retain annotations when merging dex files.
This change has one major limitation: it doesn't deduplicate
equal annotation directories or annotation sets across dex
files. That will result in unnecessarily large dex files.
Change-Id: If63273d16eba1d989c6b5695d102b378d4047119
http://b/
3447216
Ying Wang [Sat, 19 Feb 2011 01:25:54 +0000 (17:25 -0800)]
am
6c360b86: Fix prelink for libdvm.
* commit '
6c360b86f5774376140636ff60ad4af3814fef21':
Fix prelink for libdvm.
Elliott Hughes [Sat, 19 Feb 2011 01:09:20 +0000 (17:09 -0800)]
Fix an off-by-one error.
I can't believe I wrote this, but I can't find an original that would let me
pass this off as a copy & paste of someone else's bug.
Bug:
3471497
Change-Id: I40a33f62a1551147adaf8e3bdf0e796ab1918398
Ying Wang [Sat, 19 Feb 2011 00:56:41 +0000 (16:56 -0800)]
Fix prelink for libdvm.
Change-Id: If91f46f80c1b1947683720e8187cecb0f7077b94
Bug:
3470019
Elliott Hughes [Fri, 18 Feb 2011 21:52:48 +0000 (13:52 -0800)]
Merge "Remove system properties that are now handled in libcore." into dalvik-dev
Andy McFadden [Fri, 18 Feb 2011 21:47:56 +0000 (13:47 -0800)]
Merge "Defer marking of objects as finalizable" into dalvik-dev
Andy McFadden [Thu, 17 Feb 2011 00:50:40 +0000 (16:50 -0800)]
Defer marking of objects as finalizable
This shifts responsibility for marking an object as "finalizable" from
object creation to object initialization. We want to make the object
finalizable when Object.<init> completes. For performance reasons we
skip the call to the Object constructor (which doesn't do anything)
and just take the opportunity to check the class flag.
Handling of clone()d object isn't quite right yet.
Also, fixed a minor glitch in stubdefs.
Bug
3342343
Change-Id: I5b7b819079e5862dc9cbd1830bb445a852dc63bf
buzbee [Fri, 18 Feb 2011 19:19:01 +0000 (11:19 -0800)]
Merge "[JIT] Fix profile trace dump" into dalvik-dev
buzbee [Fri, 18 Feb 2011 19:13:56 +0000 (11:13 -0800)]
[JIT] Fix profile trace dump
The debugging profile mode prints out a list of the top ten traces,
followed by recompilations. In some cases, it is possible that a trace
was requested, but did not finish compiling before the run ended. If
so, that could cause the dump to fail. This CL adds a check for null
codeAddress to detect those cases.
Change-Id: I415fd94d8fa9e270f75d5114fa5cc5d993bd6997
Elliott Hughes [Fri, 18 Feb 2011 18:49:24 +0000 (10:49 -0800)]
Remove system properties that are now handled in libcore.
Change-Id: Ifc954f422fd73e7bd8ebbcc69f890d041acbc2e2
Jesse Wilson [Fri, 18 Feb 2011 06:38:33 +0000 (22:38 -0800)]
Merge "Return unsigned shorts in ShortArrayCodeInput." into dalvik-dev
Jesse Wilson [Fri, 18 Feb 2011 03:16:28 +0000 (19:16 -0800)]
Return unsigned shorts in ShortArrayCodeInput.
Follow up to I9a77541b994f184da0e389840e5cac728ad6c072
http://b/
3447216
Change-Id: I0746ab58aa765d83274931a95ecea0b56c3581d7
Dan Bornstein [Thu, 17 Feb 2011 22:22:55 +0000 (14:22 -0800)]
Merge "This test stopped being useful quite a while ago." into dalvik-dev
Dan Bornstein [Thu, 17 Feb 2011 22:20:55 +0000 (14:20 -0800)]
This test stopped being useful quite a while ago.
Change-Id: I2069770f9b7456e4f3cde692d9a6b929ec7fe067
Dan Bornstein [Thu, 17 Feb 2011 20:47:58 +0000 (12:47 -0800)]
Perform a bit of spec hygiene.
Change-Id: Iabb7fa8ff20155a018d40bd2e23b21f19d14de1e
Elliott Hughes [Thu, 17 Feb 2011 00:12:03 +0000 (16:12 -0800)]
Merge "Ensure we always call inline natives." into dalvik-dev
Ben Cheng [Thu, 17 Feb 2011 00:02:33 +0000 (16:02 -0800)]
Merge "Add support to do suspend polling on backward branches in JIT'ed code." into dalvik-dev
jeffhao [Wed, 16 Feb 2011 23:55:26 +0000 (15:55 -0800)]
Merge "Fix for complex jsr nesting causing NullPointerException." into dalvik-dev
Ben Cheng [Thu, 3 Feb 2011 22:02:06 +0000 (14:02 -0800)]
Add support to do suspend polling on backward branches in JIT'ed code.
The polling is expensive for now as it is done through three
instructions: ld/ld/branch. As a result, a bunch of bonus stuff has
been worked on to mitigate the extra overhead:
- Cleaned up resource flags for memory disambiguation.
- Rewrote load/store elimination and scheduler routines to hide
the ld/ld latency for GC flag. Seperate the dependency checking into
memory disambiguation part and resource conflict part.
- Allowed code motion for Dalvik/constant/non-aliasing loads to be
hoisted above branches for null/range checks.
- Created extended basic blocks following goto instructions so that
longer instruction streams can be optimized as a whole.
Without the bonus stuff, the performance dropped about ~5-10% on some
benchmarks because of the lack of headroom to hide the polling latency
in tight loops. With the bonus stuff, the performance delta is between
+/-5% with polling code generated. With the bonus stuff but disabling
polling, the new bonus stuff provides consistent performance
improvements:
CaffeineMark 3.6%
Linpack 11.1%
Scimark 9.7%
Sieve 33.0%
Checkers 6.0%
As a result, GC polling is disabled by default but can be turned on
through the -Xjitsuspendpoll flag for experimental purposes.
Change-Id: Ia81fc85de3e2b70e6cc93bc37c2b845892003cdb
Elliott Hughes [Wed, 16 Feb 2011 22:30:45 +0000 (14:30 -0800)]
Ensure we always call inline natives.
Even though execute-inline is now a mandatory optimization, you can't be sure
the inline natives will be invoked that way. There's reflection and JNI, for
example, and there's the special case of String.equals that might be invoked
as Object.equals. This patch adds a regular native method corresponding to
each inline native, so that a corresponding libcore patch can drop its
implementations. (For example, despite the fact that we all believed last week
that the Java implementation of String.equals is never used, that turned out
not to be true: every HashMap lookup will have used it. This pair of patches
brings reality in line with our existing belief.)
Change-Id: I19e64c23bea83e91696206ca40ce4e3faf853040
Kenny Root [Wed, 16 Feb 2011 20:46:00 +0000 (12:46 -0800)]
am
ce0503dc: Clean up use of HAVE_ANDROID_OS
* commit '
ce0503dc677442f37b04277d888599d2cdb50ad6':
Clean up use of HAVE_ANDROID_OS
Jesse Wilson [Wed, 16 Feb 2011 19:29:32 +0000 (11:29 -0800)]
Merge "Emit compact ouput .dex files." into dalvik-dev
Jesse Wilson [Wed, 16 Feb 2011 02:28:53 +0000 (18:28 -0800)]
Emit compact ouput .dex files.
Change-Id: I69ca23b53a542db7e7a18d819795e795bf0822c0
http://b/
3447216
Kenny Root [Wed, 16 Feb 2011 18:15:52 +0000 (10:15 -0800)]
Clean up use of HAVE_ANDROID_OS
HAVE_ANDROID_OS was defined as "1" for targets, but never defined as "0"
for non-targets. Changing them to #ifdef should be safe and matches all
the other uses of HAVE_ANDROID_OS throughout the system.
Change-Id: I077aee39b08ce82327a571d9aca0cae422a0ebb5
Andy McFadden [Wed, 16 Feb 2011 15:54:43 +0000 (07:54 -0800)]
Merge "Barrier after construction of finalizable object" into dalvik-dev
Andy McFadden [Wed, 16 Feb 2011 15:54:17 +0000 (07:54 -0800)]
Merge "Fix some asm .size directives" into dalvik-dev
Andy McFadden [Tue, 15 Feb 2011 23:46:36 +0000 (15:46 -0800)]
Fix some asm .size directives
We were missing a .size directive for dvmPlatformInvoke, and the
directive for the mterp handlers wasn't being handled right. Threw
in a bonus directive for the entry point and the "assist debugger"
stuff that wraps method calls.
Bug
3456786
Change-Id: Ideee64a496e54eb09008410e9e9eba652b59f403
Carl Shapiro [Tue, 15 Feb 2011 23:37:02 +0000 (15:37 -0800)]
Merge "Use memchr to scan the card table." into dalvik-dev
Carl Shapiro [Tue, 15 Feb 2011 23:19:13 +0000 (15:19 -0800)]
Use memchr to scan the card table.
Change-Id: I8066b2818d360d3f383d1b90bbbea0b2983d4519
Andy McFadden [Tue, 15 Feb 2011 15:48:05 +0000 (07:48 -0800)]
Barrier after construction of finalizable object
If thread 1 creates an object, and thread 2 executes the finalizer,
then thread 2 must be guaranteed to see a fully-constructed object.
To this end, we need to emit a store/store barrier before returning
from the object's constructor.
We already do this for objects with final fields, so this is a
minor tweak.
While working on this I noticed that Enum overrides finalize()
(for the explicit purpose of making sure that no subclass can do
so), which the VM was taking as a signal that all enumerated types
are finalizable. In practice this doesn't matter, since the only
instances are the enum elements themselves, and we'd only GC them
if the enum class itself went away. However, setting it correctly
means less work for dexopt and has no measurable impact on class
loading time.
Bug
3403518
Change-Id: Ifa890b5e7ef1cda2a554ba54f25c4148272c3537
jeffhao [Tue, 15 Feb 2011 22:41:45 +0000 (14:41 -0800)]
Fix for complex jsr nesting causing NullPointerException.
Happens when one jsr calls another that ultimates throws an exception.
The subroutine inliner assumes the return block of the first jsr is
reachable when it's not, causing access to a null field. Fixed by
checking the field for null before accessing it.
Change-Id: Id1fb376c9f14ffebc77cdbd253a713eb6d949c1f
Jesse Wilson [Tue, 15 Feb 2011 22:21:05 +0000 (14:21 -0800)]
Deduplicate type lists on merged .dex files.
Change-Id: Ic089fecebb66544dfdb422421cce47a6f203a31a
http://b/
3447216
Jesse Wilson [Tue, 15 Feb 2011 19:10:13 +0000 (11:10 -0800)]
Merge "Fix some bugs in the new dx instruction code." into dalvik-dev
Jesse Wilson [Tue, 15 Feb 2011 03:01:34 +0000 (19:01 -0800)]
Fix some bugs in the new dx instruction code.
http://b/
3447216
Change-Id: I9a77541b994f184da0e389840e5cac728ad6c072
buzbee [Tue, 15 Feb 2011 18:40:49 +0000 (10:40 -0800)]
Merge "Remove spurious code from bad merge/pilot error" into dalvik-dev
buzbee [Tue, 15 Feb 2011 18:29:38 +0000 (10:29 -0800)]
Remove spurious code from bad merge/pilot error
Looks like I spuriously duplicated two lines of assembly code in
footer.S around a call to method profiling. Removed.
Change-Id: I0b10656e15eba0d16af8784ae9ca09c33b5096c0
Andy McFadden [Mon, 14 Feb 2011 22:44:35 +0000 (14:44 -0800)]
resolved conflicts for merge of
6e2af6d2 to dalvik-dev
Change-Id: Ib5ec0912c0c5d7041b794351fcca10c41c4294ec
Andy McFadden [Mon, 14 Feb 2011 22:04:42 +0000 (14:04 -0800)]
Fix "all stubs" interpreter
The "all stubs" interpreter is the recommended starting point for
anyone creating a "fast" interpreter on a new CPU. This cleans
up some minor bit rot in the code and documentation.
Bug
3452689
Change-Id: I6bc3b0b5da11955d842d5fc5f16cb1a2209d4a89
Andy McFadden [Mon, 14 Feb 2011 21:02:19 +0000 (13:02 -0800)]
Merge "Remove gclog.py" into dalvik-dev
Andy McFadden [Mon, 14 Feb 2011 20:29:38 +0000 (12:29 -0800)]
Remove gclog.py
The GC event log entries are no longer generated, so we no longer
need this.
Change-Id: I247bbc44d628ac5e54dfe031d09eb14edbff8d4d
Ben Cheng [Mon, 14 Feb 2011 18:02:04 +0000 (10:02 -0800)]
Merge "Add scheduling barrier at the end of IT blocks for FP comparisons." into dalvik-dev
jeffhao [Fri, 11 Feb 2011 23:43:07 +0000 (15:43 -0800)]
Fix to allow SCCP to correctly propagate division and remainer ops.
Also updated expected values for the const collector test.
Change-Id: Iedcf17d776c60cb6174f7a7c9f75be84d2c38020
Ben Cheng [Sat, 12 Feb 2011 01:01:08 +0000 (17:01 -0800)]
Add scheduling barrier at the end of IT blocks for FP comparisons.
Bug:
3448446
Change-Id: I98e2bbc4886443ba3c27c2963d7540fcee5790bb
Andy McFadden [Sat, 12 Feb 2011 00:00:54 +0000 (16:00 -0800)]
Merge "Rename invoke-direct-empty to invoke-object-init" into dalvik-dev
Andy McFadden [Fri, 11 Feb 2011 23:26:10 +0000 (15:26 -0800)]
Rename invoke-direct-empty to invoke-object-init
The invoke-direct-empty instruction was introduced to remove the
overhead of calling the empty Object constructor. We now need it
to do some extra work on behalf of object construction, so it's
appropriate to change the instruction name to match the role it
fills rather than the more general role it was hoped to fill.
No functional changes.
Bug
3342343
Change-Id: I65dd6a2c00c99581c9a19b16fe193b70642c8fbb
Carl Shapiro [Fri, 11 Feb 2011 00:46:55 +0000 (16:46 -0800)]
Fast fail impossible allocations.
If the size_t type cannot be used to represent any component of an
array size the allocation is be rejected. With this change, overflow
is checked for in the element size computation and total array size
computation. More preconditions are checked by asserts. Misleading
comments have been removed.
Change-Id: I067869c3404b9da591939555c6f9904f52ca7bd7
Carl Shapiro [Fri, 11 Feb 2011 20:06:33 +0000 (12:06 -0800)]
Ensure a dalvik-cache directory exists before running dalvik.
The dalvik tests require a dalvik-cache directory otherwise dalvikvm
will fail with an unhelpful error message. On the device it is safe
to assume a dalvik-cache directory exists but this is not a safe
assumption on the host. With this change the script tries to create a
dalvik-cache directory on the host if it does not exist.
Change-Id: Ie0c69ff8dcd68b6b04a763f06861edd308406f69
Elliott Hughes [Thu, 10 Feb 2011 23:47:58 +0000 (15:47 -0800)]
Merge "Fix an out-of-date comment." into dalvik-dev
Andy McFadden [Thu, 10 Feb 2011 23:47:57 +0000 (15:47 -0800)]
Merge "Tweak the 64-bit load/store code" into dalvik-dev
Andy McFadden [Thu, 10 Feb 2011 23:32:16 +0000 (15:32 -0800)]
Tweak the 64-bit load/store code
The old version would either move data through a union, call memcpy(),
or just cast the pointer to a wider type and dereference it. The
latter turns out to be an aliasing violation, and it recently started
causing test failures on the "host" build.
We now use memcpy() for x86 and unions for ARM.
Bug
3431820
Change-Id: I302a7f49f7ae88ac96b8f7fef3d9260ac64d631b
Elliott Hughes [Thu, 10 Feb 2011 23:25:04 +0000 (15:25 -0800)]
Fix an out-of-date comment.
Change-Id: Ie3a93604533e9dab59e892506e2c0258d046837b
Elliott Hughes [Thu, 10 Feb 2011 22:21:44 +0000 (14:21 -0800)]
Merge "Move more system propery handling into managed code." into dalvik-dev
Elliott Hughes [Thu, 10 Feb 2011 20:03:34 +0000 (12:03 -0800)]
Move more system propery handling into managed code.
Bug:
3413364
Change-Id: I044ed1b11e919bb1c589c626b613faf85157fb64
jeffhao [Thu, 10 Feb 2011 21:02:51 +0000 (13:02 -0800)]
Merge "Reverting SCCP change to division because the system doesn't start." into dalvik-dev
jeffhao [Thu, 10 Feb 2011 20:46:14 +0000 (12:46 -0800)]
Reverting SCCP change to division because the system doesn't start.
Temporarily reverting change to allow the system to boot while the
root cause is determined.
Change-Id: Ife1fb6fc99fead9eb72fff8415969fc4955ff7cd
jeffhao [Thu, 10 Feb 2011 17:52:00 +0000 (09:52 -0800)]
Merge "Added support for integer division to SCCP." into dalvik-dev
jeffhao [Thu, 10 Feb 2011 02:29:00 +0000 (18:29 -0800)]
Added support for integer division to SCCP.
Division generates a result that must be fetched with a
move-result-pseudo instruction. SCCP originally had no way of tying the
division with the result it generates. This change should allow proper
constant propagation when division of integers is involved.
Change-Id: Ib7c5d2dd26eea3ab6545b613a540f0161a8e1642
Elliott Hughes [Thu, 10 Feb 2011 01:29:30 +0000 (17:29 -0800)]
Merge "Move more system property handling into managed code." into dalvik-dev
Elliott Hughes [Thu, 10 Feb 2011 00:52:36 +0000 (16:52 -0800)]
Move more system property handling into managed code.
Bug:
3413364
Change-Id: I0f22ea9ed5327e4fef9d4395025173a839ea9ce2
Carl Shapiro [Thu, 10 Feb 2011 00:41:57 +0000 (16:41 -0800)]
Merge "Split addNewHeap into separate definitions." into dalvik-dev
Carl Shapiro [Thu, 10 Feb 2011 00:36:12 +0000 (16:36 -0800)]
Split addNewHeap into separate definitions.
Change-Id: I47c4edb8dddf1e8c256ff2def7045fa236b5b1fd
Carl Shapiro [Wed, 9 Feb 2011 23:35:43 +0000 (15:35 -0800)]
Merge "Remove the unused argument to dvmCollectGarbage." into dalvik-dev