OSDN Git Service

android-x86/dalvik.git
13 years agoSupport traceview-style profiling in all builds
buzbee [Wed, 19 Jan 2011 23:31:15 +0000 (15:31 -0800)]
Support traceview-style profiling in all builds

This change builds on an earlier bccheng change that allowed JIT'd code
to avoid reverting to the debug portable interpeter when doing traceview-style
method profiling.  That CL introduced a new traceview build (libdvm_traceview)
because the performance delta was too great to enable the capability for
all builds.

In this CL, we remove the libdvm_traceview build and provide full-speed
method tracing in all builds.  This is done by introducing "_PROF"
versions of invoke and return templates used by the JIT.  Normally, these
templates are not used, and performace in unaffected.  However, when method
profiling is enabled, all existing translation are purged and new translations
are created using the _PROF templates.  These templates introduce a
smallish performance penalty above and beyond the actual tracing cost, but
again are only used when tracing has been enabled.

Strictly speaking, there is a slight burden that is placed on invokes and
returns in the non-tracing case - on the order of an additional 3 or 4
cycles per invoke/return.  Those operations are already heavyweight enough
that I was unable to measure the added cost in benchmarks.

Change-Id: Ic09baf4249f1e716e136a65458f4e06cea35fc18

13 years agoMerge "Consolidate mterp's debug/profile/suspend control" into dalvik-dev
buzbee [Wed, 19 Jan 2011 18:16:31 +0000 (10:16 -0800)]
Merge "Consolidate mterp's debug/profile/suspend control" into dalvik-dev

13 years agoConsolidate mterp's debug/profile/suspend control
buzbee [Fri, 14 Jan 2011 21:37:31 +0000 (13:37 -0800)]
Consolidate mterp's debug/profile/suspend control

This is a step towards full debug & profiling support in JIT'd code.
Previously, the interpreter made multiple distinct checks for pending
suspend requests, debugger and profiler checks at each safe point.
This CL moves the individual controls into a single control word,
significantly speeding up the safe-point check code path in the common
fast case.

In short, any time some VM component wants control to break at a safe
point it will set a bit in gDvm.interpBreak, which will be examined
at the safe point check in footer.S.  In the old code, the safe point
check consisted of 11 instructions (including 6 loads).  The new sequence
is 6 instructions (4 loads - two of which are needed and two are
speculative to fill otherwise stalling slots).

This code path is hot enough in the interpreter that we actually see
some measureable speedups in benchmarks.  The old sieve benchmark
improves from 252 to 256 (~1.5%).

As part of the change, global debuggerActive and activeProfilers variables
have been eliminated as redundant.  Note also that there is a subtle
change in thread suspension.  Thread suspend request counts are kept on
a per-thread basis, and previously each thread would only examine its own
suspend count.  With this change, a bit has been allocated in interpBreak
to signify that at least one suspend request is active across all
threads.  This bit is treated as "some thread is supposed to
suspend, check to see if it's me".

Change-Id: I527dc918f58d1486ef3324136080ef541a775ba8

13 years agoam 2287bffd: am 9622ef8d: am b2e15681: Merge "Implement growth limits to support...
Carl Shapiro [Wed, 19 Jan 2011 06:13:54 +0000 (22:13 -0800)]
am 2287bffd: am 9622ef8d: am b2e15681: Merge "Implement growth limits to support multiple heap configurations." into honeycomb

* commit '2287bffddbb9150bdefaec8e6d9baf2726a86c90':
  Implement growth limits to support multiple heap configurations.

13 years agoam f18a4274: am 6210c50d: am eef67346: Merge "Fix proxy expectation." into honeycomb
Jesse Wilson [Wed, 19 Jan 2011 06:13:50 +0000 (22:13 -0800)]
am f18a4274: am 6210c50d: am eef67346: Merge "Fix proxy expectation." into honeycomb

* commit 'f18a427413d1cea7e245256810346837bd88cd8c':
  Fix proxy expectation.

13 years agoam 9622ef8d: am b2e15681: Merge "Implement growth limits to support multiple heap...
Carl Shapiro [Wed, 19 Jan 2011 06:02:28 +0000 (22:02 -0800)]
am 9622ef8d: am b2e15681: Merge "Implement growth limits to support multiple heap configurations." into honeycomb

* commit '9622ef8d66f3a2c1780166a84485e6130727fcc1':
  Implement growth limits to support multiple heap configurations.

13 years agoam 6210c50d: am eef67346: Merge "Fix proxy expectation." into honeycomb
Jesse Wilson [Wed, 19 Jan 2011 06:02:26 +0000 (22:02 -0800)]
am 6210c50d: am eef67346: Merge "Fix proxy expectation." into honeycomb

* commit '6210c50d31f45c28c2cddca405a4b946f7fbfb39':
  Fix proxy expectation.

13 years agoam b2e15681: Merge "Implement growth limits to support multiple heap configurations...
Carl Shapiro [Wed, 19 Jan 2011 02:41:06 +0000 (18:41 -0800)]
am b2e15681: Merge "Implement growth limits to support multiple heap configurations." into honeycomb

* commit 'b2e15681cb52079d8e63a68a611036911b94d1fe':
  Implement growth limits to support multiple heap configurations.

13 years agoam eef67346: Merge "Fix proxy expectation." into honeycomb
Jesse Wilson [Wed, 19 Jan 2011 02:39:31 +0000 (18:39 -0800)]
am eef67346: Merge "Fix proxy expectation." into honeycomb

* commit 'eef673461bdbfbd8fde35c302ee5df5330f643a5':
  Fix proxy expectation.

13 years agoMerge "Implement growth limits to support multiple heap configurations." into honeycomb
Carl Shapiro [Wed, 19 Jan 2011 02:16:46 +0000 (18:16 -0800)]
Merge "Implement growth limits to support multiple heap configurations." into honeycomb

13 years agoImplement growth limits to support multiple heap configurations.
Carl Shapiro [Wed, 19 Jan 2011 01:59:30 +0000 (17:59 -0800)]
Implement growth limits to support multiple heap configurations.

When a growth limit is in effect, allocations will be limited to
number of bytes specified by the growth limit instead of the maximum
heap size.  Growth limits are specified on the command line with the
new parameter -XX:HeapGrowthLimit.  A growth limit can be removed at
runtime by calling the new clearGrowthLimit method.

This is a work around until we can adjust the maximum heap size at
runtime.

Change-Id: Ic01e32823b5ca8cf29c0948fb6cd2df10967c1fb

13 years agoMerge "Fix proxy expectation." into honeycomb
Jesse Wilson [Wed, 19 Jan 2011 01:24:19 +0000 (17:24 -0800)]
Merge "Fix proxy expectation." into honeycomb

13 years agoFix proxy expectation.
Jesse Wilson [Wed, 19 Jan 2011 01:20:33 +0000 (17:20 -0800)]
Fix proxy expectation.

Change-Id: I70589302c686387a1f89e8f79eb58c4b6b8214a6

13 years agoMerge "Add an undocumented --incremental option to dx." into dalvik-dev
Jesse Wilson [Wed, 19 Jan 2011 00:05:37 +0000 (16:05 -0800)]
Merge "Add an undocumented --incremental option to dx." into dalvik-dev

13 years agoAdd an undocumented --incremental option to dx.
Jesse Wilson [Tue, 18 Jan 2011 01:29:35 +0000 (17:29 -0800)]
Add an undocumented --incremental option to dx.

Change-Id: I48879b2f724e9b92c99c669803f9c8de01487327

13 years agoMerge "Optimized dx instruction expansion to only generate necessary moves." into...
jeffhao [Tue, 18 Jan 2011 21:27:37 +0000 (13:27 -0800)]
Merge "Optimized dx instruction expansion to only generate necessary moves." into dalvik-dev

13 years agoOptimized dx instruction expansion to only generate necessary moves.
jeffhao [Mon, 17 Jan 2011 19:37:21 +0000 (11:37 -0800)]
Optimized dx instruction expansion to only generate necessary moves.

When an instruction's fields do not fit into an instruction format, dx
expands the instruction. Before, this would always use new registers for
sources and destination, generating moves for each. However, some of
these moves would be unnecessary if an original register already fit
into the instruction format. This change checks to see if the original
register fits before using a new register and generating a new move.

Change-Id: I17c6722cf4053573bf913a28d631386f2c3a733d

13 years agoam acbb1f4c: am 88b5885e: am 241cec80: Remove unused heap dumping code.
Carl Shapiro [Mon, 17 Jan 2011 22:51:40 +0000 (14:51 -0800)]
am acbb1f4c: am 88b5885e: am 241cec80: Remove unused heap dumping code.

* commit 'acbb1f4c8a6a4085cd237b50fd0f2d1efe432e9f':
  Remove unused heap dumping code.

13 years agoam 88b5885e: am 241cec80: Remove unused heap dumping code.
Carl Shapiro [Mon, 17 Jan 2011 22:47:59 +0000 (14:47 -0800)]
am 88b5885e: am 241cec80: Remove unused heap dumping code.

* commit '88b5885e8ba78898eadf6d201cebe97794fe578d':
  Remove unused heap dumping code.

13 years agoam 241cec80: Remove unused heap dumping code.
Carl Shapiro [Mon, 17 Jan 2011 22:42:22 +0000 (14:42 -0800)]
am 241cec80: Remove unused heap dumping code.

* commit '241cec80a79551730122fb9dbc92a3527392b1de':
  Remove unused heap dumping code.

13 years agoMerge "Make DexMerger's dex reader general purpose." into dalvik-dev
Jesse Wilson [Mon, 17 Jan 2011 22:13:49 +0000 (14:13 -0800)]
Merge "Make DexMerger's dex reader general purpose." into dalvik-dev

13 years agoMake DexMerger's dex reader general purpose.
Jesse Wilson [Mon, 17 Jan 2011 02:06:57 +0000 (18:06 -0800)]
Make DexMerger's dex reader general purpose.

Use this to implement FindUsages, which prints references to
fields and methods within a dex. This is the FindUsages output
for "Ljava/lang/Number;", "longValue" on libcore's dex file:

Method referenced by Ljava/io/EmulatedFields;#get invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/io/EmulatedFieldsForDumping;#write invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/io/ObjectOutputStream;#writeFieldValues invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method declared by Ljava/lang/Number;#longValue
Method declared by Ljava/lang/Byte;#longValue
Method declared by Ljava/lang/Double;#longValue
Method declared by Ljava/lang/Float;#longValue
Method declared by Ljava/lang/Integer;#longValue
Method declared by Ljava/lang/Long;#longValue
Method declared by Ljava/lang/Short;#longValue
Method referenced by Ljava/lang/reflect/Array;#set invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/math/BigDecimal;#divideBigIntegers invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/math/BigDecimal;#divideBigIntegers invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/math/BigDecimal;#divideBigIntegers invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/math/BigDecimal;#readObject invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/math/BigDecimal;#setUnscaledValue invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/math/BigDecimal;#valueExact invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/math/BigDecimal;#doubleValue invoke-virtual/range {vCCCC..vNNNN}, meth@BBBB
Method referenced by Ljava/math/BigDecimal;#doubleValue invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method declared by Ljava/math/BigDecimal;#longValue
Method referenced by Ljava/math/BigDecimal;#longValue invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method declared by Ljava/math/BigInteger;#longValue
Method referenced by Ljava/math/Conversion;#bigInteger2Double invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/math/Conversion;#bigInteger2Double invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/text/NumberFormat;#format invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/text/DateFormat;#format invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/text/DecimalFormat;#format invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/text/DecimalFormat;#parse invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/text/SimpleDateFormat;#formatToCharacterIterator invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/util/Formatter;#transform invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/util/Formatter;#transformFromDateTime invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/util/Formatter;#transformFromInteger invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/util/Formatter;#transformFromInteger invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/util/Formatter;#transformFromInteger invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/util/Formatter;#transformFromInteger invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/util/Formatter;#transform_g invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/util/Formatter;#transform_g invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/util/Formatter;#transform_g invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/util/Formatter;#transform_g invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Ljava/util/Scanner;#nextLong invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method declared by Ljava/util/concurrent/atomic/AtomicInteger;#longValue
Method declared by Ljava/util/concurrent/atomic/AtomicLong;#longValue
Method referenced by Llibcore/icu/NativeDecimalFormat;#formatToCharacterIterator invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/apache/xalan/xslt/SecuritySupport12;#getLastModified invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/apache/xml/dtm/SecuritySupport12;#getLastModified invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/apache/xml/dtm/ref/SecuritySupport12;#getLastModified invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/apache/xml/serializer/SecuritySupport12;#getLastModified invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/apache/xml/utils/SecuritySupport12;#getLastModified invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/apache/xpath/functions/SecuritySupport12;#getLastModified invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/json/JSON;#toLong invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/json/JSONArray;#getLong invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/json/JSONArray;#optLong invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/json/JSONObject;#numberToString invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/json/JSONObject;#getLong invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC
Method referenced by Lorg/json/JSONObject;#optLong invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC

Change-Id: Ia50f28f53ce5838799e2d5f03a7a2f1c551299de

13 years agoam 9c947b14: am 56750efd: am 0f403d5f: Remove some inline declarations to improve...
Carl Shapiro [Mon, 17 Jan 2011 07:22:27 +0000 (23:22 -0800)]
am 9c947b14: am 56750efd: am 0f403d5f: Remove some inline declarations to improve debugging.

* commit '9c947b14fcaae1233b58c2c3ab3351b632dba76b':
  Remove some inline declarations to improve debugging.

13 years agoam cb7e217f: am 548d70b0: am 23966773: Rename absoluteMaxSize to maximumSize.
Carl Shapiro [Mon, 17 Jan 2011 07:22:25 +0000 (23:22 -0800)]
am cb7e217f: am 548d70b0: am 23966773: Rename absoluteMaxSize to maximumSize.

* commit 'cb7e217fb0a6c024abaa0f233edfd7d99aacc64d':
  Rename absoluteMaxSize to maximumSize.

13 years agoam 70f4dccb: am c5ec711d: am ac8f1125: Merge "Make the soft limited predicate look...
Carl Shapiro [Mon, 17 Jan 2011 07:22:21 +0000 (23:22 -0800)]
am 70f4dccb: am c5ec711d: am ac8f1125: Merge "Make the soft limited predicate look more like a predicate." into honeycomb

* commit '70f4dccb8a5d393cf9a076e72d8af4425c99b8bb':
  Make the soft limited predicate look more like a predicate.

13 years agoam 56750efd: am 0f403d5f: Remove some inline declarations to improve debugging.
Carl Shapiro [Mon, 17 Jan 2011 07:06:13 +0000 (23:06 -0800)]
am 56750efd: am 0f403d5f: Remove some inline declarations to improve debugging.

* commit '56750efd3a5fffaef6306df89fc9a2054d5e5861':
  Remove some inline declarations to improve debugging.

13 years agoam 548d70b0: am 23966773: Rename absoluteMaxSize to maximumSize.
Carl Shapiro [Mon, 17 Jan 2011 07:01:20 +0000 (23:01 -0800)]
am 548d70b0: am 23966773: Rename absoluteMaxSize to maximumSize.

* commit '548d70b045b434be5343fb1549a6d538c5c12ff7':
  Rename absoluteMaxSize to maximumSize.

13 years agoam c5ec711d: am ac8f1125: Merge "Make the soft limited predicate look more like a...
Carl Shapiro [Mon, 17 Jan 2011 07:00:48 +0000 (23:00 -0800)]
am c5ec711d: am ac8f1125: Merge "Make the soft limited predicate look more like a predicate." into honeycomb

* commit 'c5ec711d856778b6fd108b15a0a77f68995d44af':
  Make the soft limited predicate look more like a predicate.

13 years agoRemove unused heap dumping code.
Carl Shapiro [Mon, 17 Jan 2011 03:29:23 +0000 (19:29 -0800)]
Remove unused heap dumping code.

Change-Id: Id8774848a870003c60be2ebcc505ce30795a4fcf

13 years agoam 0f403d5f: Remove some inline declarations to improve debugging.
Carl Shapiro [Mon, 17 Jan 2011 01:31:37 +0000 (17:31 -0800)]
am 0f403d5f: Remove some inline declarations to improve debugging.

* commit '0f403d5f9286b42c3596004eb8015718269d9092':
  Remove some inline declarations to improve debugging.

13 years agoRemove some inline declarations to improve debugging.
Carl Shapiro [Mon, 17 Jan 2011 01:20:49 +0000 (17:20 -0800)]
Remove some inline declarations to improve debugging.

Change-Id: I41b044fb9ae66c1d531f4d61c73ce6fcd597102f

13 years agoam 23966773: Rename absoluteMaxSize to maximumSize.
Carl Shapiro [Sun, 16 Jan 2011 22:11:01 +0000 (14:11 -0800)]
am 23966773: Rename absoluteMaxSize to maximumSize.

* commit '23966773259b828001634a71cafdc4fa98904bea':
  Rename absoluteMaxSize to maximumSize.

13 years agoRename absoluteMaxSize to maximumSize.
Carl Shapiro [Sun, 16 Jan 2011 22:05:53 +0000 (14:05 -0800)]
Rename absoluteMaxSize to maximumSize.

Change-Id: I3ec30b35f3689ad76a805af3b261cdaa7adbc3d7

13 years agoImprove the interface for reading Dex files.
Jesse Wilson [Sat, 15 Jan 2011 00:27:49 +0000 (16:27 -0800)]
Improve the interface for reading Dex files.

I'm planning on making this code reusable for grepping
dex files.

Change-Id: Iebf545ed6d6a4eb347ccc4a39fe40c02d75d69e4

13 years agoam ac8f1125: Merge "Make the soft limited predicate look more like a predicate."...
Carl Shapiro [Sun, 16 Jan 2011 21:53:46 +0000 (13:53 -0800)]
am ac8f1125: Merge "Make the soft limited predicate look more like a predicate." into honeycomb

* commit 'ac8f112513e3481e7295eaeaf5843a55fa9b1b63':
  Make the soft limited predicate look more like a predicate.

13 years agoMerge "Make the soft limited predicate look more like a predicate." into honeycomb
Carl Shapiro [Sun, 16 Jan 2011 21:51:44 +0000 (13:51 -0800)]
Merge "Make the soft limited predicate look more like a predicate." into honeycomb

13 years agoMake the soft limited predicate look more like a predicate.
Carl Shapiro [Sat, 15 Jan 2011 03:05:23 +0000 (19:05 -0800)]
Make the soft limited predicate look more like a predicate.

Change-Id: I8edfafdfa8d73ebe1e3288bc0c8df2c6acbce2af

13 years agoam 480de458: am 5918b804: am 22acd2ae: Merge "Fix JNI invocation of constructors...
Andy McFadden [Fri, 14 Jan 2011 23:38:50 +0000 (15:38 -0800)]
am 480de458: am 5918b804: am 22acd2ae: Merge "Fix JNI invocation of constructors." into honeycomb

* commit '480de458e3735af6868dc5546f335aec3233cd6a':
  Fix JNI invocation of constructors.

13 years agoam 5918b804: am 22acd2ae: Merge "Fix JNI invocation of constructors." into honeycomb
Andy McFadden [Fri, 14 Jan 2011 23:36:19 +0000 (15:36 -0800)]
am 5918b804: am 22acd2ae: Merge "Fix JNI invocation of constructors." into honeycomb

* commit '5918b80472fe57aea34446ea25f2a8ca7a5290b0':
  Fix JNI invocation of constructors.

13 years agoam 22acd2ae: Merge "Fix JNI invocation of constructors." into honeycomb
Andy McFadden [Fri, 14 Jan 2011 23:34:54 +0000 (15:34 -0800)]
am 22acd2ae: Merge "Fix JNI invocation of constructors." into honeycomb

* commit '22acd2ae4b1f0f4f3aab4f55026c2e1d0d409dad':
  Fix JNI invocation of constructors.

13 years agoMerge "Fix JNI invocation of constructors." into honeycomb
Andy McFadden [Fri, 14 Jan 2011 23:33:16 +0000 (15:33 -0800)]
Merge "Fix JNI invocation of constructors." into honeycomb

13 years agoMerge "Fix JNI invocation of constructors." into dalvik-dev
Andy McFadden [Fri, 14 Jan 2011 23:32:13 +0000 (15:32 -0800)]
Merge "Fix JNI invocation of constructors." into dalvik-dev

13 years agoFix JNI invocation of constructors.
Andy McFadden [Fri, 14 Jan 2011 22:52:48 +0000 (14:52 -0800)]
Fix JNI invocation of constructors.

The code that "virtualizes" method invocations was attempting to
virtualize a call to a constructor.  Constructors are direct methods,
so this resulted in a spurious CloneNotSupportedException.

Bug 3354578

(cherry-pick from dalvik-dev)

Change-Id: Ib158ab7fc6b2874eba1fc2afa45fd5436c1f2a8a

13 years agoFix JNI invocation of constructors.
Andy McFadden [Fri, 14 Jan 2011 22:52:48 +0000 (14:52 -0800)]
Fix JNI invocation of constructors.

The code that "virtualizes" method invocations was attempting to
virtualize a call to a constructor.  Constructors are direct methods,
so this resulted in a spurious CloneNotSupportedException.

Bug 3354578

Change-Id: Icac922593f1d872fffaf3bce98c8e24e287bf7af

13 years agoMerge "Read Dex files from a byte[] rather than a RandomAccessFile." into dalvik-dev
Jesse Wilson [Fri, 14 Jan 2011 21:58:58 +0000 (13:58 -0800)]
Merge "Read Dex files from a byte[] rather than a RandomAccessFile." into dalvik-dev

13 years agoRead Dex files from a byte[] rather than a RandomAccessFile.
Jesse Wilson [Fri, 14 Jan 2011 21:16:06 +0000 (13:16 -0800)]
Read Dex files from a byte[] rather than a RandomAccessFile.

This improves time to merge a trivial file with core.dex from
3.8 seconds to 0.8 seconds.

Also fixing read method names to be consistent with the spec.

Change-Id: I9033bcb497afe7a0d73e00cca14fa046b53a62bf

13 years agoam 9c07fafa: (-s ours) am a5c42dab: (-s ours) am 602b8ffb: (-s ours) am 6ad1992b...
Dan Bornstein [Fri, 14 Jan 2011 20:47:25 +0000 (12:47 -0800)]
am 9c07fafa: (-s ours) am a5c42dab: (-s ours) am 602b8ffb: (-s ours) am 6ad1992b: am 70b130f5: (-s ours) Clean up/out some comments. DO NOT MERGE.

* commit '9c07fafa999beb107c7a780031b08caaaedd2b5e':
  Clean up/out some comments. DO NOT MERGE.

13 years agoam a5c42dab: (-s ours) am 602b8ffb: (-s ours) am 6ad1992b: am 70b130f5: (-s ours...
Dan Bornstein [Fri, 14 Jan 2011 20:44:39 +0000 (12:44 -0800)]
am a5c42dab: (-s ours) am 602b8ffb: (-s ours) am 6ad1992b: am 70b130f5: (-s ours) Clean up/out some comments. DO NOT MERGE.

* commit 'a5c42dab9f2bfe9ec1e85b2b2721d6be58892e25':
  Clean up/out some comments. DO NOT MERGE.

13 years agoam 602b8ffb: (-s ours) am 6ad1992b: am 70b130f5: (-s ours) Clean up/out some comments...
Dan Bornstein [Fri, 14 Jan 2011 20:41:45 +0000 (12:41 -0800)]
am 602b8ffb: (-s ours) am 6ad1992b: am 70b130f5: (-s ours) Clean up/out some comments. DO NOT MERGE.

* commit '602b8ffb35fb555fa77081446efa598206e0c3bf':
  Clean up/out some comments. DO NOT MERGE.

13 years agoam 6ad1992b: am 70b130f5: (-s ours) Clean up/out some comments. DO NOT MERGE.
Dan Bornstein [Fri, 14 Jan 2011 20:39:45 +0000 (12:39 -0800)]
am 6ad1992b: am 70b130f5: (-s ours) Clean up/out some comments. DO NOT MERGE.

* commit '6ad1992b311937963d44be68f3ec0255a87d82b8':
  Clean up/out some comments. DO NOT MERGE.

13 years agoam 70b130f5: (-s ours) Clean up/out some comments. DO NOT MERGE.
Dan Bornstein [Fri, 14 Jan 2011 20:37:13 +0000 (12:37 -0800)]
am 70b130f5: (-s ours) Clean up/out some comments. DO NOT MERGE.

* commit '70b130f5398c43418b6eacba2cc09f71d9febdc4':
  Clean up/out some comments. DO NOT MERGE.

13 years agoClean up/out some comments. DO NOT MERGE.
Dan Bornstein [Fri, 14 Jan 2011 20:26:12 +0000 (12:26 -0800)]
Clean up/out some comments. DO NOT MERGE.

Change-Id: I16063cf9132e0f2d6556ce06e1ebfb90ecff05aa

13 years agoMerge "New tool merge two dex files into one." into dalvik-dev
Jesse Wilson [Fri, 14 Jan 2011 19:22:36 +0000 (11:22 -0800)]
Merge "New tool merge two dex files into one." into dalvik-dev

13 years agoam 45e9a990: am 80211d2b: Only generate debugging LIRs in verbose mode.
Ben Cheng [Fri, 14 Jan 2011 19:14:08 +0000 (11:14 -0800)]
am 45e9a990: am 80211d2b: Only generate debugging LIRs in verbose mode.

* commit '45e9a9908f8874b64294dbd3e4dcfb6b76c4b6e3':
  Only generate debugging LIRs in verbose mode.

13 years agoam 660095cc: am efb37a32: am f741b8e1: am 80a30431: (-s ours) Remove some pointless...
Dan Bornstein [Fri, 14 Jan 2011 19:12:15 +0000 (11:12 -0800)]
am 660095cc: am efb37a32: am f741b8e1: am 80a30431: (-s ours) Remove some pointless tests.

* commit '660095cc310535c4874e953f5eea0abc2540f655':
  Remove some pointless tests.

13 years agoam 80211d2b: Only generate debugging LIRs in verbose mode.
Ben Cheng [Fri, 14 Jan 2011 19:08:38 +0000 (11:08 -0800)]
am 80211d2b: Only generate debugging LIRs in verbose mode.

* commit '80211d2b18daa79c7b4c9b04f0cb366660c86f73':
  Only generate debugging LIRs in verbose mode.

13 years agoam efb37a32: am f741b8e1: am 80a30431: (-s ours) Remove some pointless tests.
Dan Bornstein [Fri, 14 Jan 2011 19:04:47 +0000 (11:04 -0800)]
am efb37a32: am f741b8e1: am 80a30431: (-s ours) Remove some pointless tests.

* commit 'efb37a324e037b9dfbeee7627d7b0417e1b9aed8':
  Remove some pointless tests.

13 years agoOnly generate debugging LIRs in verbose mode.
Ben Cheng [Fri, 14 Jan 2011 18:23:37 +0000 (10:23 -0800)]
Only generate debugging LIRs in verbose mode.

This should reduce memory usage and JIT time a bit.
Affected opcodes: kArmPseudoSSARep and kArmPseudoDalvikByteCodeBoundary.

Change-Id: I18ce9338b8d258270df51a66f9dc98cd2d9dd0e8

13 years agoam c45c71a8: am 9c6e857f: Merge "Minor cleanup of some initialization code." into...
Carl Shapiro [Fri, 14 Jan 2011 01:52:58 +0000 (17:52 -0800)]
am c45c71a8: am 9c6e857f: Merge "Minor cleanup of some initialization code." into honeycomb

* commit 'c45c71a82832422d8d45b6bf7f236d51d77e04f8':
  Minor cleanup of some initialization code.

13 years agoam 9c6e857f: Merge "Minor cleanup of some initialization code." into honeycomb
Carl Shapiro [Fri, 14 Jan 2011 01:48:52 +0000 (17:48 -0800)]
am 9c6e857f: Merge "Minor cleanup of some initialization code." into honeycomb

* commit '9c6e857fb13cad874a2f430438babe44bcddf5d0':
  Minor cleanup of some initialization code.

13 years agoMerge "Minor cleanup of some initialization code." into honeycomb
Carl Shapiro [Fri, 14 Jan 2011 01:45:21 +0000 (17:45 -0800)]
Merge "Minor cleanup of some initialization code." into honeycomb

13 years agoMinor cleanup of some initialization code.
Carl Shapiro [Fri, 14 Jan 2011 01:25:19 +0000 (17:25 -0800)]
Minor cleanup of some initialization code.

This change removes the "dvm" prefix from static functions and makes
the memory option processor use the potentially wider size_t type for
manipulating memory sizes instead of the unsigned int type.

Change-Id: Ia85b01d2a852080e56e4da7c9393fe4e6c2bdf00

13 years agoam db3c9225: am d5dae2a4: Merge "Fix invoke-interface verification failures" into...
Andy McFadden [Fri, 14 Jan 2011 00:42:28 +0000 (16:42 -0800)]
am db3c9225: am d5dae2a4: Merge "Fix invoke-interface verification failures" into honeycomb

* commit 'db3c9225ce1cb2af645958a517233787899c2cfe':
  Fix invoke-interface verification failures

13 years agoam d5dae2a4: Merge "Fix invoke-interface verification failures" into honeycomb
Andy McFadden [Fri, 14 Jan 2011 00:38:19 +0000 (16:38 -0800)]
am d5dae2a4: Merge "Fix invoke-interface verification failures" into honeycomb

* commit 'd5dae2a47d5730887408feed993d8e9006953749':
  Fix invoke-interface verification failures

13 years agoMerge "Fix invoke-interface verification failures" into honeycomb
Andy McFadden [Fri, 14 Jan 2011 00:35:26 +0000 (16:35 -0800)]
Merge "Fix invoke-interface verification failures" into honeycomb

13 years agoam c3be0be1: am a4f35892: Merge "Remove a stray empty line." into honeycomb
Carl Shapiro [Fri, 14 Jan 2011 00:31:46 +0000 (16:31 -0800)]
am c3be0be1: am a4f35892: Merge "Remove a stray empty line." into honeycomb

* commit 'c3be0be1932640691e64f1427a6308edee5561ca':
  Remove a stray empty line.

13 years agoam a4f35892: Merge "Remove a stray empty line." into honeycomb
Carl Shapiro [Fri, 14 Jan 2011 00:27:18 +0000 (16:27 -0800)]
am a4f35892: Merge "Remove a stray empty line." into honeycomb

* commit 'a4f3589250f6d786654131e44291c9c19c80333c':
  Remove a stray empty line.

13 years agoMerge "Remove a stray empty line." into honeycomb
Carl Shapiro [Fri, 14 Jan 2011 00:25:16 +0000 (16:25 -0800)]
Merge "Remove a stray empty line." into honeycomb

13 years agoRemove a stray empty line.
Carl Shapiro [Fri, 14 Jan 2011 00:21:22 +0000 (16:21 -0800)]
Remove a stray empty line.

Change-Id: Ie954aa547b5cbfd0058407c0139e057c08ad9337

13 years agoresolved conflicts for merge of ae08dca2 to dalvik-dev
Andy McFadden [Fri, 14 Jan 2011 00:18:02 +0000 (16:18 -0800)]
resolved conflicts for merge of ae08dca2 to dalvik-dev

Change-Id: I5f35e811bf96f54b45dea7e330a0ecf6a842365f

13 years agoam 6c7aadc2: am 7ed3c87b: Add missing length modifiers for printing size_t values.
Carl Shapiro [Fri, 14 Jan 2011 00:06:57 +0000 (16:06 -0800)]
am 6c7aadc2: am 7ed3c87b: Add missing length modifiers for printing size_t values.

* commit '6c7aadc2e5a5b761d815ce2c79452286b62d24a6':
  Add missing length modifiers for printing size_t values.

13 years agoam 61ed6e5e: Merge "Fix implementation of volatile stores" into honeycomb
Andy McFadden [Fri, 14 Jan 2011 00:06:15 +0000 (16:06 -0800)]
am 61ed6e5e: Merge "Fix implementation of volatile stores" into honeycomb

* commit '61ed6e5ead6361a0589fee6bd42c56e44e3fd52c':
  Fix implementation of volatile stores

13 years agoFix invoke-interface verification failures
Andy McFadden [Fri, 14 Jan 2011 00:05:34 +0000 (16:05 -0800)]
Fix invoke-interface verification failures

A regression introduced in bug 3329492 was causing exceptions to be
thrown immediately (during class initialization) rather than when the
problem was actually hit.

Bug 3345814.

Change-Id: I0a6b36a226b70f7a7da4384fe46095b45f004300

13 years agoMerge "Fix implementation of volatile stores" into honeycomb
Andy McFadden [Fri, 14 Jan 2011 00:04:43 +0000 (16:04 -0800)]
Merge "Fix implementation of volatile stores" into honeycomb

13 years agoam 7ed3c87b: Add missing length modifiers for printing size_t values.
Carl Shapiro [Fri, 14 Jan 2011 00:02:23 +0000 (16:02 -0800)]
am 7ed3c87b: Add missing length modifiers for printing size_t values.

* commit '7ed3c87b8481abaf339e4844a400fd29dc7e5f56':
  Add missing length modifiers for printing size_t values.

13 years agoAdd missing length modifiers for printing size_t values.
Carl Shapiro [Thu, 13 Jan 2011 23:56:42 +0000 (15:56 -0800)]
Add missing length modifiers for printing size_t values.

Change-Id: Ie82f5c4d06e8cdd6b7ce3562a4e7bb28bf2ea858

13 years agoFix implementation of volatile stores
Andy McFadden [Thu, 13 Jan 2011 21:09:26 +0000 (13:09 -0800)]
Fix implementation of volatile stores

Volatile stores are synchronization actions, not merely releasing
stores, so an additional barrier is required.  We also have the
option of using atomic operations, but that's not recommended (except
for 64-bit fields, where we don't have a choice).

Bug 3338450

Change-Id: Ibfa3486eb89af7769c81bcf892b3fee50d2028d4

13 years agoam ca3f39e7: am a0f4e182: Remove stale enumerators for external allocation tracking.
Carl Shapiro [Thu, 13 Jan 2011 22:53:29 +0000 (14:53 -0800)]
am ca3f39e7: am a0f4e182: Remove stale enumerators for external allocation tracking.

* commit 'ca3f39e7b17fe6cd95dee26e98f3381ec93b2e05':
  Remove stale enumerators for external allocation tracking.

13 years agoam a0f4e182: Remove stale enumerators for external allocation tracking.
Carl Shapiro [Thu, 13 Jan 2011 22:45:17 +0000 (14:45 -0800)]
am a0f4e182: Remove stale enumerators for external allocation tracking.

* commit 'a0f4e1824b95c846cd4f04e411abb0862b26b733':
  Remove stale enumerators for external allocation tracking.

13 years agoam f741b8e1: am 80a30431: (-s ours) Remove some pointless tests.
Dan Bornstein [Thu, 13 Jan 2011 22:35:55 +0000 (14:35 -0800)]
am f741b8e1: am 80a30431: (-s ours) Remove some pointless tests.

* commit 'f741b8e112834cb3c140ca81890dc41126649dee':
  Remove some pointless tests.

13 years agoam 80a30431: (-s ours) Remove some pointless tests.
Dan Bornstein [Thu, 13 Jan 2011 22:33:39 +0000 (14:33 -0800)]
am 80a30431: (-s ours) Remove some pointless tests.

* commit '80a30431fa6c92433d2602c159bc71dd81c62c8f':
  Remove some pointless tests.

13 years agoRemove stale enumerators for external allocation tracking.
Carl Shapiro [Thu, 13 Jan 2011 22:28:00 +0000 (14:28 -0800)]
Remove stale enumerators for external allocation tracking.

Change-Id: Iab9c718f6bdee71512c2d5996244d46f944a455f

13 years agoRemove some pointless tests.
Dan Bornstein [Thu, 13 Jan 2011 20:46:28 +0000 (12:46 -0800)]
Remove some pointless tests.

Change-Id: Ibaaf74fbdffd6c08af48cac50ef62a05e8473899

13 years agoam 0111aa23: am eeb834a5: Remove enumerators for stale GC reasons.
Carl Shapiro [Thu, 13 Jan 2011 03:34:55 +0000 (19:34 -0800)]
am 0111aa23: am eeb834a5: Remove enumerators for stale GC reasons.

* commit '0111aa23f186122ca874d22e619467d22be564df':
  Remove enumerators for stale GC reasons.

13 years agoam eeb834a5: Remove enumerators for stale GC reasons.
Carl Shapiro [Thu, 13 Jan 2011 03:30:29 +0000 (19:30 -0800)]
am eeb834a5: Remove enumerators for stale GC reasons.

* commit 'eeb834a53da2d70bea754233469e2ab7a7957d84':
  Remove enumerators for stale GC reasons.

13 years agoam 9f2154a5: am bdd79095: am 4d7dd569: Handle the case of referent clearing during...
Carl Shapiro [Thu, 13 Jan 2011 03:07:16 +0000 (19:07 -0800)]
am 9f2154a5: am bdd79095: am 4d7dd569: Handle the case of referent clearing during tracing.

* commit '9f2154a54d121d1cde61b2be9764fc44e31f534f':
  Handle the case of referent clearing during tracing.

13 years agoam bdd79095: am 4d7dd569: Handle the case of referent clearing during tracing.
Carl Shapiro [Thu, 13 Jan 2011 03:01:41 +0000 (19:01 -0800)]
am bdd79095: am 4d7dd569: Handle the case of referent clearing during tracing.

* commit 'bdd790957e8656b9166542b5b4f1a1aca19e77bf':
  Handle the case of referent clearing during tracing.

13 years agoRemove enumerators for stale GC reasons.
Carl Shapiro [Thu, 13 Jan 2011 02:21:00 +0000 (18:21 -0800)]
Remove enumerators for stale GC reasons.

Change-Id: I297e3ce5ba75e308cc994a7303d6bfc70e819737

13 years agoam 7f3e6d75: am 0560c6e2: Remove the allocation limits interfaces.
Carl Shapiro [Thu, 13 Jan 2011 00:10:56 +0000 (16:10 -0800)]
am 7f3e6d75: am 0560c6e2: Remove the allocation limits interfaces.

* commit '7f3e6d753b190e8c57888829a9f804f9e77ce01f':
  Remove the allocation limits interfaces.

13 years agoam 0560c6e2: Remove the allocation limits interfaces.
Carl Shapiro [Thu, 13 Jan 2011 00:07:00 +0000 (16:07 -0800)]
am 0560c6e2: Remove the allocation limits interfaces.

* commit '0560c6e2b5d3f6668f26858f86ce2cff0beffd86':
  Remove the allocation limits interfaces.

13 years agoRemove the allocation limits interfaces.
Carl Shapiro [Wed, 12 Jan 2011 23:54:43 +0000 (15:54 -0800)]
Remove the allocation limits interfaces.

Change-Id: I97a098fe385cc12991b8f1277683fb1146673570

13 years agoam a657b66e: am a05f6504: Remove support for setting the minimum size of the heap...
Carl Shapiro [Wed, 12 Jan 2011 22:22:35 +0000 (14:22 -0800)]
am a657b66e: am a05f6504: Remove support for setting the minimum size of the heap at runtime.

* commit 'a657b66e6e0c59501f25e4a17df5500dafe8fa0a':
  Remove support for setting the minimum size of the heap at runtime.

13 years agoam a05f6504: Remove support for setting the minimum size of the heap at runtime.
Carl Shapiro [Wed, 12 Jan 2011 22:18:03 +0000 (14:18 -0800)]
am a05f6504: Remove support for setting the minimum size of the heap at runtime.

* commit 'a05f6504440ccf460477e9883c87cd70aca77b24':
  Remove support for setting the minimum size of the heap at runtime.

13 years agoRemove support for setting the minimum size of the heap at runtime.
Carl Shapiro [Wed, 12 Jan 2011 19:04:55 +0000 (11:04 -0800)]
Remove support for setting the minimum size of the heap at runtime.

Change-Id: I1752c59184325b5929532b61f4fa0feaa03b8218

13 years agoam 4d7dd569: Handle the case of referent clearing during tracing.
Carl Shapiro [Wed, 12 Jan 2011 18:49:25 +0000 (10:49 -0800)]
am 4d7dd569: Handle the case of referent clearing during tracing.

* commit '4d7dd56902150ab8db4c20a191bad112928839e9':
  Handle the case of referent clearing during tracing.

13 years agoHandle the case of referent clearing during tracing.
Carl Shapiro [Wed, 12 Jan 2011 01:16:48 +0000 (17:16 -0800)]
Handle the case of referent clearing during tracing.

Reference objects with non-null referent fields are collected during
tracing for processing after the trace has completed.  Before the
trace was made concurrent there was no way for a reference with a
non-null referent field to have its referent become null by any action
of the garbage collector after it was discovered.  Assertions were
placed in the reference processing code to check this invariant.

After the trace was made concurrent it became possible for a user to
clear the referent field of an already discovered reference.  This
violates the assertions in the reference processing code.

This change replaces the assertions in the reference processing code
with logic to deal with null referent fields.  The assert in the
SoftReference preservation code has been converted to a continue that
short circuits the preservation logic.  The assert in the white
reference clearing code short circuits the clearing and enqueueing.

Bug: 3342757
Change-Id: I967b011485e2691b2752500a3488fbcb54f129d3

13 years agoam 255cbef2: am 15e4a632: Handle the case of referent clearing during tracing.
Carl Shapiro [Wed, 12 Jan 2011 01:57:29 +0000 (17:57 -0800)]
am 255cbef2: am 15e4a632: Handle the case of referent clearing during tracing.

* commit '255cbef2fc4cd7ee679744dbdac6dfcdf0a35ca8':
  Handle the case of referent clearing during tracing.

13 years agoam 15e4a632: Handle the case of referent clearing during tracing.
Carl Shapiro [Wed, 12 Jan 2011 01:45:39 +0000 (17:45 -0800)]
am 15e4a632: Handle the case of referent clearing during tracing.

* commit '15e4a6325289d37ae9264f6c072d5071905c6929':
  Handle the case of referent clearing during tracing.

13 years agoHandle the case of referent clearing during tracing.
Carl Shapiro [Wed, 12 Jan 2011 01:16:48 +0000 (17:16 -0800)]
Handle the case of referent clearing during tracing.

Reference objects with non-null referent fields are collected during
tracing for processing after the trace has completed.  Before the
trace was made concurrent there was no way for a reference with a
non-null referent field to have its referent become null by any action
of the garbage collector after it was discovered.  Assertions were
placed in the reference processing code to check this invariant.

After the trace was made concurrent it became possible for a user to
clear the referent field of an already discovered reference.  This
violates the assertions in the reference processing code.

This change replaces the assertions in the reference processing code
with logic to deal with null referent fields.  The assert in the
SoftReference preservation code has been converted to a continue that
short circuits the preservation logic.  The assert in the white
reference clearing code short circuits the clearing and enqueueing.

Change-Id: I77bd18cd1ad52e9f457b0f9b1d4e1403e5de1a98

13 years agoam e506a20f: am 05bdc2f8: Merge "Check VMRuntime.addressOf is actually passed an...
Elliott Hughes [Wed, 12 Jan 2011 01:10:12 +0000 (17:10 -0800)]
am e506a20f: am 05bdc2f8: Merge "Check VMRuntime.addressOf is actually passed an array." into honeycomb

* commit 'e506a20fd13b9b1a941a70311f2cc2546db520c8':
  Check VMRuntime.addressOf is actually passed an array.