OSDN Git Service

android-x86/dalvik.git
14 years agoUse ashmem to create the JIT code cache.
Ben Cheng [Thu, 11 Feb 2010 23:03:00 +0000 (15:03 -0800)]
Use ashmem to create the JIT code cache.

14 years agoFree memory associated with the trace descriptor of ALL dropped JIT work orders
Ben Cheng [Thu, 11 Feb 2010 01:21:39 +0000 (17:21 -0800)]
Free memory associated with the trace descriptor of ALL dropped JIT work orders

To further reduce the memory consumption only enable the method vs trace
compile size stats when WITH_JIT_TUNING is configured.

14 years agoMerge "Support per-application switch to execute the VM in safe mode."
Ben Cheng [Wed, 10 Feb 2010 22:49:59 +0000 (14:49 -0800)]
Merge "Support per-application switch to execute the VM in safe mode."

14 years agoMerge "Added LDMIA/STMIA support to Self Verification mode."
Jeff Hao [Wed, 10 Feb 2010 22:34:14 +0000 (14:34 -0800)]
Merge "Added LDMIA/STMIA support to Self Verification mode."

14 years agoMerge "Add a setHandshakeTimeout() to OpenSSLSocketImpl, which sets a read timeout...
Dan Egnor [Wed, 10 Feb 2010 22:32:15 +0000 (14:32 -0800)]
Merge "Add a setHandshakeTimeout() to OpenSSLSocketImpl, which sets a read timeout that only applies to the SSL handshake step."

14 years agoAdd a setHandshakeTimeout() to OpenSSLSocketImpl, which sets
Dan Egnor [Wed, 10 Feb 2010 19:48:08 +0000 (11:48 -0800)]
Add a setHandshakeTimeout() to OpenSSLSocketImpl, which sets
a read timeout that only applies to the SSL handshake step.

Bug: 2362543

14 years agoFix NamingPatternCodeFinder to detect final classes
Brian Carlstrom [Wed, 10 Feb 2010 20:34:01 +0000 (12:34 -0800)]
Fix NamingPatternCodeFinder to detect final classes

14 years agoSupport per-application switch to execute the VM in safe mode.
Ben Cheng [Tue, 9 Feb 2010 00:03:42 +0000 (16:03 -0800)]
Support per-application switch to execute the VM in safe mode.

This is the implementation on the VM side to consume the android:safeMode=true
attribute and force the application to run in interpreter-only mode (the
current safe mode).

Bug: 2267583

14 years agoAdded LDMIA/STMIA support to Self Verification mode.
jeffhao [Wed, 10 Feb 2010 18:51:02 +0000 (10:51 -0800)]
Added LDMIA/STMIA support to Self Verification mode.

14 years agoMerge "Remove TestRunner.success field / Make postCompileTest return void"
Brian Carlstrom [Wed, 10 Feb 2010 18:32:11 +0000 (10:32 -0800)]
Merge "Remove TestRunner.success field / Make postCompileTest return void"

14 years agoRemove TestRunner.success field / Make postCompileTest return void
Brian Carlstrom [Wed, 10 Feb 2010 07:28:11 +0000 (23:28 -0800)]
Remove TestRunner.success field / Make postCompileTest return void

SUMMARY:
- Change TestRunner subclasses to instead implement a Runner interface
- Cleanup runtime classpath generation
- Misc improvements

DETAILS:

Change TestRunner subclasses to instead implement a Runner interface

    *Runner classes now implement the new Runner interface instead of
    extending TestRunner. prepareTest/test now take a "Class
    testClass" instead of accessing a "String testClass" from the
    superclass. This also means that all their "static void main"
    methods are removed and replaced with a single main method in
    TestRunner. TestActivity can now instantiate a TestRunner and call
    its "boolean run()" method to execute tests and retrieve their
    SUCCESS/FAILURE status via the return value, allowing the removeal
    of TestRunner.success. Mode now needs to explicitly include
    TestRunner.java in the list of code to compile because it no
    longer is implicitly found by compiling its former subclasses.

java/dalvik/runner/TestRunner.java
java/dalvik/runner/Runner.java
java/dalvik/runner/CaliperRunner.java
java/dalvik/runner/JUnitRunner.java
java/dalvik/runner/JtregRunner.java
java/dalvik/runner/MainRunner.java
java/dalvik/runner/Mode.java

    CodeFinder.getRunnerClass now returns a Runner, not a TestRunner

java/dalvik/runner/CodeFinder.java
java/dalvik/runner/JUnitFinder.java
java/dalvik/runner/CaliperFinder.java
java/dalvik/runner/JtregFinder.java
java/dalvik/runner/MainFinder.java

    Similarly, TestRun.runnerClass is now a Runner, not a TestRunner

java/dalvik/runner/TestRun.java

    Move logic to run a test based on TestProperties.RUNNER_CLASS from
    TestActivity to TestRunner since its now used in all cases, not
    just the Activity case. TestActivity.ActivityRunner remains the
    one subclass of TestRunner, accessing the TestRunner.run(...)
    logic via super.run(...), allowing it to maintain its special
    result file writing logic.

java/dalvik/runner/TestActivity.java
java/dalvik/runner/TestRunner.java

    Moved writing of TestProperties.RUNNER_CLASS from ActivityMode now
    that it is used for all Modes.

java/dalvik/runner/ActivityMode.java
java/dalvik/runner/Mode.java

    Since CaliperRunner now has a "Class testClass", it uses the more
    strongly typed Runner.main(Class<? extends Benchmark>, ...)  API.

java/dalvik/runner/CaliperRunner.java

    Fixing javadoc TestRunner->Runner
java/dalvik/runner/TestProperties.java

    Adding new Runner class to the build.

Android.mk

Cleanup runtime classpath generation

    Changed Mode.postCompileTest to return void instead of Classpath
    to match Most.postCompileTestRunner. Removed passing test
    classpath from compile to run via TestRun.testClasspath. Instead,
    Vm.getRuntimeSupportClasspath now is used to compute full
    classpath, instead of using the old TestRun.getTestClasspath in
    Mode. Mode.compileTest now uses a boolean to indicate compilation
    success, instead of null/non-null Classpath. TestRun.testClasspath
    is now replaced with TestRun.testCompiled which is used to track
    compilation success. In retrospect, it seems like using the
    absense of a Classpath as an indication of compilation
    success/failure seems like somewhat of a hack.

java/dalvik/runner/Mode.java
java/dalvik/runner/ActivityMode.java
java/dalvik/runner/DeviceDalvikVm.java
java/dalvik/runner/JavaVm.java
java/dalvik/runner/TestRun.java

    New deviceDexFile to make sure dex file name generation stays
    consistent between build time and compile time.

java/dalvik/runner/DeviceDalvikVm.java

    Changed MainRunner implementation to more closely match JtregRunner
java/dalvik/runner/MainRunner.java

Misc improvements

    Changed TestActivity to use a shutdown hook to catch when a test
    calls System.exit so we can be sure to write a result file and not
    simply wait for the timeout to catch our failure to return.

java/dalvik/runner/TestActivity.java

    Changed Mkdir.mkdirs to use new Command().execute to get automatic
    logging of command execution with --verbose

java/dalvik/runner/Mkdir.java

    Improved javadoc

java/dalvik/runner/Mode.java

    Fixed apparently misplaced @SuppressWarnings("unchecked")
java/dalvik/runner/OptionParser.java

    Enabling warnings as errors and turning on unchecked warnings.

Android.mk

    Made sure test script works with fresh device and improved logging

test-dalvik-runner.sh

14 years agoAdded missing break statements and improved debugging in SelfVerification.
jeffhao [Tue, 9 Feb 2010 22:55:47 +0000 (14:55 -0800)]
Added missing break statements and improved debugging in SelfVerification.

14 years agoMerge "Jit: Phase 1 of register utility cleanup/rewrite - the great renaming"
Bill Buzbee [Tue, 9 Feb 2010 20:56:57 +0000 (12:56 -0800)]
Merge "Jit: Phase 1 of register utility cleanup/rewrite - the great renaming"

14 years agoJit: Phase 1 of register utility cleanup/rewrite - the great renaming
Bill Buzbee [Tue, 9 Feb 2010 19:16:15 +0000 (11:16 -0800)]
Jit: Phase 1 of register utility cleanup/rewrite - the great renaming

Renaming of all of those register utilities which used to be local because
of our include mechanism to the standard dvmCompiler prefix scheme.

14 years agoMerge "DalvikRunner can run a test as an android.app.Activity & PathClassLoader.toStr...
Brian Carlstrom [Tue, 9 Feb 2010 19:10:04 +0000 (11:10 -0800)]
Merge "DalvikRunner can run a test as an android.app.Activity & PathClassLoader.toString change"

14 years agoDalvikRunner can run a test as an android.app.Activity & PathClassLoader.toString...
Brian Carlstrom [Fri, 5 Feb 2010 19:05:20 +0000 (11:05 -0800)]
DalvikRunner can run a test as an android.app.Activity & PathClassLoader.toString change

SUMMARY:
- PathClassLoader.toString prints path
- DalvikRunner --mode activity now working
- new DalvikRunner --no-clean vs --no-clean-after behavior

DETAILS

Dalvik runtime change
    Changed PathClassLoader.toString to print the class loaders path
    Also fixed variable name in commented out debug code
libcore/dalvik/src/main/java/dalvik/system/PathClassLoader.java

Dalvik Runner changes

    Mode is the new abstract superclass of the existing Vm
    class. ActivityMode is for the new Mode of running as a Activity
    on the device. Vm is now a subclass of Mode and its JavaVm and
    DeviceDalvikVm still exist although some code has been refactored
    into the new Environment clases (see below)

libcore/tools/runner/java/dalvik/runner/Mode.java
libcore/tools/runner/java/dalvik/runner/ActivityMode.java
libcore/tools/runner/java/dalvik/runner/DeviceDalvikVm.java
libcore/tools/runner/java/dalvik/runner/JavaVm.java
libcore/tools/runner/java/dalvik/runner/Vm.java

    Environment and its subclasses EnvironmentHost and
    EnvironmentDevice allow us to reuse some common code between the
    two different device modes (ActivityMode and
    DeviceDalvikVm). Basically code that was more about where and how
    to do things based on where the code was running as opposed to how
    the code was running moved to the Environment classes. For
    example, prepare() logic for /sdcard/ and ADB code in general.

libcore/tools/runner/java/dalvik/runner/DeviceDalvikVm.java
libcore/tools/runner/java/dalvik/runner/Environment.java
libcore/tools/runner/java/dalvik/runner/EnvironmentDevice.java
libcore/tools/runner/java/dalvik/runner/EnvironmentHost.java
libcore/tools/runner/java/dalvik/runner/JavaVm.java
libcore/tools/runner/java/dalvik/runner/Vm.java

    Adding new files
libcore/tools/runner/Android.mk

    Aapt is a wrapper for "aapt" similar to Adb and Dx
libcore/tools/runner/java/dalvik/runner/Aapt.java

    Added Adb.install and Adb.uninstall methods
    Changed from using File.toString to File.getPath for clarity
libcore/tools/runner/java/dalvik/runner/Adb.java

    CodeFinder has been extended so that Driver can ask finders what
    they need to build and run, specifically through the new
    getRunnerJava and getRunnerClasspath. (As part of this
    NamingPatternCodeFinder's runnerClass was changed to
    getRunnerClass for consistency with the superclass.) This was
    important for running as an Activity because we want to minimize
    what we pack into the APK file because of the "dx --dex" runtime
    and not just pull in all possible runners and supporting
    libraries. TestRun objects also hold onto this information from
    their finders.

libcore/tools/runner/java/dalvik/runner/Driver.java
libcore/tools/runner/java/dalvik/runner/CodeFinder.java
libcore/tools/runner/java/dalvik/runner/CaliperFinder.java
libcore/tools/runner/java/dalvik/runner/JUnitFinder.java
libcore/tools/runner/java/dalvik/runner/JtregFinder.java
libcore/tools/runner/java/dalvik/runner/MainFinder.java
libcore/tools/runner/java/dalvik/runner/NamingPatternCodeFinder.java
libcore/tools/runner/java/dalvik/runner/TestRun.java

    TestRunner TestRunner's className is now testClass to clarifiy it
    from the runnerClass.

libcore/tools/runner/java/dalvik/runner/TestRunner.java
libcore/tools/runner/java/dalvik/runner/CaliperRunner.java
libcore/tools/runner/java/dalvik/runner/JUnitRunner.java
libcore/tools/runner/java/dalvik/runner/JtregRunner.java
libcore/tools/runner/java/dalvik/runner/MainRunner.java

    Classpath now has a Collection.of and Collection.addAll that take
    a Collection<File> instead if just a File...

libcore/tools/runner/java/dalvik/runner/Classpath.java

    Added Command.args(File arg) to avoid a lot of
    args(file.getPath())

libcore/tools/runner/java/dalvik/runner/Command.java

     Option --clean has expanded to --clean-before, --clean-after, and
     --clean. Now --no-clean will remove nothing as Elliot
     requested. --no-clean-after is now what is useful for
     DalvikRunner debuggin. Default is still to clean before and
     after.

libcore/tools/runner/java/dalvik/runner/DalvikRunner.java

    Moved Vm.DALVIK_RUNNER_HOME to DalvikRunner.HOME.
    /tmp/<UUID> paths are now /tmp/dalvikrunner/<UUID> paths are easier cleanup.

libcore/tools/runner/java/dalvik/runner/DalvikRunner.java

    Driver was changed to use a ExecutorCompletionService around the
    ExecutorService so that exceptions from the execute threads could
    be reported on the main thread.

libcore/tools/runner/java/dalvik/runner/Driver.java

    We now build the testrunner before the test so that its classes
    will be around to be packed into APK files.

libcore/tools/runner/java/dalvik/runner/Driver.java

    Dx.dex now takes File arguments instread of Strings.  Dx.dex also
    needs to pass additional memory arguments to not run out of memory
    building the big dex for the APK. The values I used where from the
    build/core/definitions.mk

libcore/tools/runner/java/dalvik/runner/Dx.java

    postCompile was split into postCompileTestRunner and
    postCompileTest because the packaging requires are very different
    in each case for ActivityMode. Specifically, the test runner is
    not post-packaged seperately, but packaged in the APK with each
    test.

libcore/tools/runner/java/dalvik/runner/ActivityMode.java
libcore/tools/runner/java/dalvik/runner/DeviceDalvikVm.java
libcore/tools/runner/java/dalvik/runner/JavaVm.java
libcore/tools/runner/java/dalvik/runner/Vm.java

    Changed testClass to test to avoid collision with new superclass field

libcore/tools/runner/java/dalvik/runner/JtregRunner.java
libcore/tools/runner/java/dalvik/runner/MainRunner.java

    Added @SuppressWarnings("unchecked")

libcore/tools/runner/java/dalvik/runner/OptionParser.java

    New android.app.Activity based on Elliot's TestAPK. It encapsulates an
    ActivityRunner that invokes the appropriate TestRunner based on test.properties.

libcore/tools/runner/java/dalvik/runner/TestActivity.java

    New class that shared contains (old and some new) between the
    DalvikRunner and the TestRunner.

libcore/tools/runner/java/dalvik/runner/TestProperties.java

    Regression test script for debugging the matrix of various
    DalvikRunner modes and test types:

libcore/tools/runner/test-dalvik-runner.sh

14 years agoFree the memory associated with the trace descriptor of dropped JIT work orders.
Ben Cheng [Tue, 9 Feb 2010 04:57:59 +0000 (20:57 -0800)]
Free the memory associated with the trace descriptor of dropped JIT work orders.

14 years agoJit: Startup/Shutdown cleanup
Bill Buzbee [Tue, 9 Feb 2010 01:08:15 +0000 (17:08 -0800)]
Jit: Startup/Shutdown cleanup

A legacy of early parallel Jit development was separate Startup & Shutdown
code for the interpreter half of the jit (dvmJitStartup/dvmJitShutdown)
and the compiler half (dvmCompilerStartup/dvmCompilerShutdown).  This cl
eliminates the dvmJit pair.  Additionally, guard coded added to the
framework callback to return immediately if the Jit isn't active.

14 years agoJit: Remove references to interpState from C interpreter
Bill Buzbee [Mon, 8 Feb 2010 18:41:32 +0000 (10:41 -0800)]
Jit: Remove references to interpState from C interpreter

Fix for Issue 2157987:
   Eventual isssue with interpState->jitState in <dalvik/vm/mterp/c/header.c

14 years agoEnable JIT parameters to be initialized in an architecture dependent way.
Ben Cheng [Fri, 5 Feb 2010 00:15:59 +0000 (16:15 -0800)]
Enable JIT parameters to be initialized in an architecture dependent way.

The search for optimial value is still ongoing. The current settings are:

                         v5    v7
JIT profile table       512  2048
JIT code cache         512K    1M
JIT threshold           200    40

14 years agoMerge "JIT: Replace missing ending comment marker MONITOR_ENTER template"
Bill Buzbee [Sat, 6 Feb 2010 00:14:51 +0000 (16:14 -0800)]
Merge "JIT: Replace missing ending comment marker MONITOR_ENTER template"

14 years agoJIT: Replace missing ending comment marker MONITOR_ENTER template
Bill Buzbee [Sat, 6 Feb 2010 00:08:38 +0000 (16:08 -0800)]
JIT: Replace missing ending comment marker MONITOR_ENTER template

...which, luckily, was followed by a debug version of the same handler
so everything magically worked anyway.  I should buy a lottery ticket today.

14 years agoMerge "Cleaned up uninitialized variable use warnings in Self Verification mode."
Jeff Hao [Fri, 5 Feb 2010 23:41:57 +0000 (15:41 -0800)]
Merge "Cleaned up uninitialized variable use warnings in Self Verification mode."

14 years agoCleaned up uninitialized variable use warnings in Self Verification mode.
jeffhao [Fri, 5 Feb 2010 23:08:23 +0000 (15:08 -0800)]
Cleaned up uninitialized variable use warnings in Self Verification mode.

14 years agoMerge "Improve dexdeps output."
Andy McFadden [Fri, 5 Feb 2010 23:18:59 +0000 (15:18 -0800)]
Merge "Improve dexdeps output."

14 years agoImprove dexdeps output.
Andy McFadden [Fri, 5 Feb 2010 23:05:03 +0000 (15:05 -0800)]
Improve dexdeps output.

This adds the list of referenced classes to the output.  Previously it
only emitted fields and methods, so classes that were referenced by type
only (e.g. some dalvik annotation classes) weren't visible.

The XML output now more closely resembles the API files, having
distinct package/class tags.  We no longer emit a return type for
constructors.

14 years agoJit: Start the Jit when framework signals on first screen draw
Bill Buzbee [Fri, 5 Feb 2010 00:09:55 +0000 (16:09 -0800)]
Jit: Start the Jit when framework signals on first screen draw

Cleanup of delayed start - introduce dvmRelativeCondWait in Sync.c.
Additionally, support for deadman timer to start Jit when no screen draws
happen, and to start immediately when running stand-alone.

Fixed bug in assert variant of libdvm - recent MONITOR change had neglected
to add a new type of exit to the exit stats.

14 years agoam adbe0586: am 217f8ef4: reconcile main tree with open-source eclair
The Android Open Source Project [Fri, 5 Feb 2010 22:12:51 +0000 (14:12 -0800)]
am adbe0586: am 217f8ef4: reconcile main tree with open-source eclair

Merge commit 'adbe0586957a71d2aa9f100646882dbca1c78f12'

* commit 'adbe0586957a71d2aa9f100646882dbca1c78f12':
  android-2.1_r1 snapshot

14 years agoam 217f8ef4: reconcile main tree with open-source eclair
The Android Open Source Project [Fri, 5 Feb 2010 16:40:23 +0000 (08:40 -0800)]
am 217f8ef4: reconcile main tree with open-source eclair

Merge commit '217f8ef4c1c151c63382dc0785edd960c233f62e' into eclair-plus-aosp

* commit '217f8ef4c1c151c63382dc0785edd960c233f62e':
  android-2.1_r1 snapshot

14 years agoreconcile main tree with open-source eclair
The Android Open Source Project [Fri, 5 Feb 2010 16:09:32 +0000 (08:09 -0800)]
reconcile main tree with open-source eclair

14 years agoMerge "Made Self Verification mode's memory interface less intrusive."
Jeff Hao [Thu, 4 Feb 2010 23:34:14 +0000 (15:34 -0800)]
Merge "Made Self Verification mode's memory interface less intrusive."

14 years agoMade Self Verification mode's memory interface less intrusive.
jeffhao [Wed, 3 Feb 2010 18:24:05 +0000 (10:24 -0800)]
Made Self Verification mode's memory interface less intrusive.

14 years agoMerge "Add two TrustCenter roots: - TC TrustCenter Class 2 CA II - TC TrustCenter...
Nagendra Modadugu [Thu, 4 Feb 2010 21:08:57 +0000 (13:08 -0800)]
Merge "Add two TrustCenter roots: - TC TrustCenter Class 2 CA II - TC TrustCenter Universal CA I"

14 years agoAdd two TrustCenter roots:
Nagendra Modadugu [Thu, 4 Feb 2010 19:31:38 +0000 (11:31 -0800)]
Add two TrustCenter roots:
- TC TrustCenter Class 2 CA II
- TC TrustCenter Universal CA I

14 years agoJit: Fix deadlock in method tracing.
Bill Buzbee [Thu, 4 Feb 2010 02:13:57 +0000 (18:13 -0800)]
Jit: Fix deadlock in method tracing.

14 years agoIncrease the size of the stack reserved area.
Andy McFadden [Wed, 3 Feb 2010 20:54:00 +0000 (12:54 -0800)]
Increase the size of the stack reserved area.

This increases the size of the "reserved" area, used for handling stack
overflows, from 512 to 768 bytes.  There will be a corresponding
reduction in the amount of stack space available to interpreted threads
(which currently default to 12KB).

It turns out 512 bytes isn't quite enough space when class lookup throws
an exception while resolving "catch" block classes during a stack
overflow error.

For bug 2398031.

14 years agoFix stack overflow edge case.
Andy McFadden [Wed, 3 Feb 2010 15:21:14 +0000 (07:21 -0800)]
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.

14 years agoFix performance issues related to chaining and unchaining.
Ben Cheng [Wed, 27 Jan 2010 00:46:15 +0000 (16:46 -0800)]
Fix performance issues related to chaining and unchaining.

1) Patching requests for predicted chaining cells (used by virtual/interface
methods) are now batched in a queue and processed when the VM is paused for GC.

2) When the code cache is full the reset operation is also conducted at the
end of GC pauses so this totally eliminates the need for the compiler thread
to issue suspend-all requests. This is a very rare event and when happening it
takes less than 5ms to finish.

3) Change the initial value of the branch in a predicted chaining cell from 0
(ie lsl r0, r0, #0) to 0xe7fe (ie branch to self) so that initializing a
predicted chaining cell doesn't need to suspend all threads. Together with 1)
seeing 20% speedup on some benchmarks.

4) Add TestCompability.c where defining "TEST_VM_IN_ECLAIR := true" in
buildspec.mk will activate dummy symbols needed to run libdvm.so in older
releases.

Bug: 2397689
Bug: 2396513
Bug: 2331313

14 years agoMerge "Jit: Rework monitor enter/exit to simplify thread suspension"
Bill Buzbee [Wed, 3 Feb 2010 18:23:38 +0000 (10:23 -0800)]
Merge "Jit: Rework monitor enter/exit to simplify thread suspension"

14 years agoMerge "Fix a long standing bug within dvmHeapSourceGetObjectBitmaps. All callers...
Carl Shapiro [Wed, 3 Feb 2010 02:18:13 +0000 (18:18 -0800)]
Merge "Fix a long standing bug within dvmHeapSourceGetObjectBitmaps.  All callers of this function assign the return value to an unsigned value even though this function returns -1 in the error case.  This causes the error checks to succeed in cases where it should otherwise fail. Rather than return -1 on error, I have elected to return 0 instead which just happens to be compatible with all current uses."

14 years agoJit: Rework monitor enter/exit to simplify thread suspension
Bill Buzbee [Tue, 2 Feb 2010 19:04:33 +0000 (11:04 -0800)]
Jit: Rework monitor enter/exit to simplify thread suspension

The Jit must stop all threads in order to flush the translation cache (and
other tables).  Threads which are blocked in a monitor wait cause some
headache here because they effectively hold a references to the translation
cache (though the return address on the native stack).  The new model
introduced in this CL is that for the fast path of monitor enter, control
is allowed to resume in the translation cache.  However, if we need to do a
heavyweight lock (which may cause us to block) control does not return to the
translation cache but instead bails out to the interpreter.  This allows us to
safely clear the code cache even if some threads are in THREAD_MONITOR state.

14 years agoFix a long standing bug within dvmHeapSourceGetObjectBitmaps. All
Carl Shapiro [Tue, 2 Feb 2010 21:47:59 +0000 (13:47 -0800)]
Fix a long standing bug within dvmHeapSourceGetObjectBitmaps.  All
callers of this function assign the return value to an unsigned value
even though this function returns -1 in the error case.  This causes
the error checks to succeed in cases where it should otherwise fail.
Rather than return -1 on error, I have elected to return 0 instead
which just happens to be compatible with all current uses.

14 years agoMerge "A new test suite for our XSLT transforms."
Jesse Wilson [Tue, 2 Feb 2010 20:48:06 +0000 (12:48 -0800)]
Merge "A new test suite for our XSLT transforms."

14 years agoA new test suite for our XSLT transforms.
Jesse Wilson [Tue, 2 Feb 2010 02:33:00 +0000 (18:33 -0800)]
A new test suite for our XSLT transforms.

Currently the test suite isn't wired-in to run automatically. Before
that can happen I need to devise a way for the device to grab the
OASIS test .zip from the Internet (or distribute it with Android).

In the interim the test can be run by hand by manually copying the
test suite to the device ("adb push") and running the test suite's
main method. This approach might be workable in our continuous
build.

Note that the RI does horribly at this test suite - in my run it
reports the following:
   FAILURES!!!
   Tests run: 3173,  Failures: 338,  Errors: 730

14 years agoRestore our ability to parse an XML Document given a File argument
Jesse Wilson [Tue, 2 Feb 2010 19:18:33 +0000 (11:18 -0800)]
Restore our ability to parse an XML Document given a File argument
directly, rather than via a stream.

When I updated DocumentBuilder but not its subclass DocumentBuilderImpl,
some of the assumptions by DocumentBuilderImpl were violated.

14 years agoMerge "Move a test I wrote under our wing."
Elliott Hughes [Tue, 2 Feb 2010 17:02:51 +0000 (09:02 -0800)]
Merge "Move a test I wrote under our wing."

14 years agoReduce VM shutdown verbosity.
Andy McFadden [Tue, 2 Feb 2010 00:56:53 +0000 (16:56 -0800)]
Reduce VM shutdown verbosity.

Adds -verbose:shutdown flag, defaulted to "false".  Cuts out most of the
log noise associated with shell commands.

14 years agoMove a test I wrote under our wing.
Elliott Hughes [Tue, 2 Feb 2010 03:45:41 +0000 (19:45 -0800)]
Move a test I wrote under our wing.

I put this in amongst the harmony tests before we started our own little
tree of tests.

14 years agoAdd a missing "static", found by FindBugs.
Elliott Hughes [Tue, 2 Feb 2010 02:19:28 +0000 (18:19 -0800)]
Add a missing "static", found by FindBugs.

14 years agoMerge "Fix BigDecimalTest.test_stripTrailingZero."
Elliott Hughes [Tue, 2 Feb 2010 01:35:21 +0000 (17:35 -0800)]
Merge "Fix BigDecimalTest.test_stripTrailingZero."

14 years agoFix BigDecimalTest.test_stripTrailingZero.
Elliott Hughes [Tue, 2 Feb 2010 00:25:40 +0000 (16:25 -0800)]
Fix BigDecimalTest.test_stripTrailingZero.

jessewilson reverted an upstream change (https://issues.apache.org/jira/browse/HARMONY-4623)
that caused an RI incompatibility. Although it seems like the RI behavior is
wrong, the poor design of BigDecimal.equals (which checks both value *and*
scale) probably means we should remain compatible.

This patch changes the test expectation to match the RI's behavior and adds
a comment in both the code and its test explaining that this is deliberate.

14 years agoMerge "Jit: MethodTrace + Jit fix"
Bill Buzbee [Tue, 2 Feb 2010 00:14:52 +0000 (16:14 -0800)]
Merge "Jit: MethodTrace + Jit fix"

14 years agoMerge "Remove @KnownFailure from tests that now pass."
Elliott Hughes [Tue, 2 Feb 2010 00:08:02 +0000 (16:08 -0800)]
Merge "Remove @KnownFailure from tests that now pass."

14 years agoMerge "FindBugs didn't like setInternalField, and neither do I."
Elliott Hughes [Tue, 2 Feb 2010 00:07:42 +0000 (16:07 -0800)]
Merge "FindBugs didn't like setInternalField, and neither do I."

14 years agoRemove @KnownFailure from tests that now pass.
Elliott Hughes [Mon, 1 Feb 2010 23:38:16 +0000 (15:38 -0800)]
Remove @KnownFailure from tests that now pass.

One of these tests still doesn't pass, but for a different reason know the
known failure is fixed, so I've removed that test's annotation too:

16) test_parseLjava_io_InputStreamLorg_xml_sax_helpers_DefaultHandlerLjava_lang_String(tests.api.javax.xml.parsers.SAXParserTest)junit.framework.AssertionFailedError
at tests.api.javax.xml.parsers.SAXParserTest.test_parseLjava_io_InputStreamLorg_xml_sax_helpers_DefaultHandlerLjava_lang_String(SAXParserTest.java:680)
at java.lang.reflect.Method.invokeNative(Native Method)
at com.google.coretests.CoreTestRunnable.runInternally(CoreTestRunnable.java:129)
at com.google.coretests.CoreTestRunnable.run(CoreTestRunnable.java:92)
at com.google.coretests.CoreTestResult.runProtected(CoreTestResult.java:148)
at com.google.coretests.CoreTestSuite.run(CoreTestSuite.java:278)
at com.google.coretests.CoreTestRunner.doRun(CoreTestRunner.java:141)
at com.google.coretests.CoreTestRunner.start(CoreTestRunner.java:317)
at com.google.coretests.CoreTestRunner.main(CoreTestRunner.java:110)
at com.google.coretests.Main.main(Main.java:45)
at dalvik.system.NativeStart.main(Native Method)

14 years agoFindBugs didn't like setInternalField, and neither do I.
Elliott Hughes [Mon, 1 Feb 2010 23:32:27 +0000 (15:32 -0800)]
FindBugs didn't like setInternalField, and neither do I.

"Exception is caught when Exception is not thrown in java.text.DecimalFormat$1.run()"

Since it will always fail anyway, because those fields don't exist, let's
just junk it.

It turns out that getInternalField is similarly useless, so junk it too.

I've tidied the whole readObject method so it's somewhat readable now.

I also fixed this FindBugs warning in passing:

"Method java.text.DecimalFormat.parse(String, ParsePosition) invokes inefficient
new Long(long) constructor; use Long.valueOf(long) instead"

14 years agoMerge "Minor clarification."
Andy McFadden [Mon, 1 Feb 2010 23:12:03 +0000 (15:12 -0800)]
Merge "Minor clarification."

14 years agoMinor clarification.
Andy McFadden [Mon, 1 Feb 2010 22:39:21 +0000 (14:39 -0800)]
Minor clarification.

People seem tempted to skip past the introductory material and jump
straight to the meaty bits, but the introduction tells you some
important things (like how you need to stop/start the framework).

14 years agoJit: MethodTrace + Jit fix
Bill Buzbee [Mon, 1 Feb 2010 02:53:15 +0000 (18:53 -0800)]
Jit: MethodTrace + Jit fix

Add checks for debug & trace mode to avoid re-entering Jit'd code.
This is the conversative solution - we'll eventually want the Jit
to integrate support for tracing and debug into Jit'd code.

14 years agoMerge "Bump up the max stack depth."
Andy McFadden [Mon, 1 Feb 2010 22:54:05 +0000 (14:54 -0800)]
Merge "Bump up the max stack depth."

14 years agoBump up the max stack depth.
Andy McFadden [Mon, 1 Feb 2010 22:32:35 +0000 (14:32 -0800)]
Bump up the max stack depth.

This increases the maximum stack depth in the DDMS "allocation tracker"
tab from 8 to 16.  Adds about 32KB to the static size, plus a variable
amount as the data is prepared for transmission to DDMS.

For bug 2345675.

14 years agoMerge "Update with froyo change."
Andy McFadden [Mon, 1 Feb 2010 20:33:39 +0000 (12:33 -0800)]
Merge "Update with froyo change."

14 years agoFix "unmappable character for ascii" warnings in libcore tests.
Elliott Hughes [Mon, 1 Feb 2010 19:40:36 +0000 (11:40 -0800)]
Fix "unmappable character for ascii" warnings in libcore tests.

The libcore "core" and "core-test" builds are now warning-free. (For Java.)

14 years agoFix varargs warnings in libcore tests.
Elliott Hughes [Mon, 1 Feb 2010 19:14:45 +0000 (11:14 -0800)]
Fix varargs warnings in libcore tests.

14 years agoMerge "Fix warnings in the new XML code."
Elliott Hughes [Mon, 1 Feb 2010 19:13:46 +0000 (11:13 -0800)]
Merge "Fix warnings in the new XML code."

14 years agoFix warnings in the new XML code.
Elliott Hughes [Mon, 1 Feb 2010 18:40:34 +0000 (10:40 -0800)]
Fix warnings in the new XML code.

14 years agoUpdate with froyo change.
Andy McFadden [Mon, 1 Feb 2010 18:24:39 +0000 (10:24 -0800)]
Update with froyo change.

This refers to Froyo as "2.x", because nobody seems to know what the
actual numbering will be.

14 years agoFix fallback in Currency.getSymbol(Locale).
Elliott Hughes [Sat, 30 Jan 2010 05:32:17 +0000 (21:32 -0800)]
Fix fallback in Currency.getSymbol(Locale).

If ICU doesn't have any localized symbol for a currency, we're supposed to
return the currency code, not null.

I introduced this bug in my recent changes. The Currency tests don't find it,
but DecimalFormatTest.test_setCurrencyLjava_util_Currency does, by accident.
I've added an explicit test.

14 years agoFix more harmony tests.
Elliott Hughes [Sat, 30 Jan 2010 02:28:23 +0000 (18:28 -0800)]
Fix more harmony tests.

"HMG" means "heure du méridien de Greenwich" to the French. ICU thinks --
and the web seems to agree -- that the French actually say UTC instead.
(And you'd hope so, after it was called UTC instead of the more sensible UCT
just to keep them happy!) The RI thinks the French say "PST" rather than
"UTC-08:00", but that's hard to believe, and means that this test was never
testing RI compatibility anyway.

Relatedly, ICU thinks that "heure normale du Pacifique" is more French than
"Heure normale du Pacifique", and who am I to argue?

Fixing these turns up a real bug in TimeZone; this patch contains a fix to
the exception thrown by the test case, but not a fix for the bug (which is
overflow in inDaylightTime for the year 292278994, so there's plenty of
time to fix that one).

14 years agoMerge "Fix all the harmony java.util.Formatter tests."
Elliott Hughes [Sat, 30 Jan 2010 01:49:30 +0000 (17:49 -0800)]
Merge "Fix all the harmony java.util.Formatter tests."

14 years agoFix all the harmony java.util.Formatter tests.
Elliott Hughes [Sat, 30 Jan 2010 01:28:06 +0000 (17:28 -0800)]
Fix all the harmony java.util.Formatter tests.

ICU thinks that German short weekday names should be "So." et seq rather than
"So". This brings us into line with frameworks/base, which I'm depressed to find
has its own copy of the CLDR data in XML form (and its own date/time
formatters).

Also fix TestEnvironment to not clobber "user.name", which we need in order to
set our expectations in cases where being root affects what we can/can't do.
(This also fixes a few other harmony tests.)

14 years agoMerge "Fixing a critical regression in our SAX parsing."
Jesse Wilson [Sat, 30 Jan 2010 01:27:24 +0000 (17:27 -0800)]
Merge "Fixing a critical regression in our SAX parsing."

14 years agoFixing a critical regression in our SAX parsing.
Jesse Wilson [Sat, 30 Jan 2010 01:06:44 +0000 (17:06 -0800)]
Fixing a critical regression in our SAX parsing.

We weren't correctly covering the case where namespaces were off, but
elements contained namespaces. See bug 2400596.

14 years agoMerge "Add support for streaming hprof dumps."
Andy McFadden [Sat, 30 Jan 2010 00:33:14 +0000 (16:33 -0800)]
Merge "Add support for streaming hprof dumps."

14 years agoMerge "Change DalvikRunner to use newly added OptionParser."
Brian Carlstrom [Fri, 29 Jan 2010 23:50:24 +0000 (15:50 -0800)]
Merge "Change DalvikRunner to use newly added OptionParser."

14 years agoChange DalvikRunner to use newly added OptionParser.
Brian Carlstrom [Fri, 29 Jan 2010 18:51:56 +0000 (10:51 -0800)]
Change DalvikRunner to use newly added OptionParser.

--skip-clean is now --no-clean
--java-home now defaults to 1.5
--mode is now used to specify to run on host's java-home

DalvikRunner page examples are updated with new --mode and --java-home

Fixes junit tests to work on host by using changing classpath to be absolute paths

Some minor scaffolding to prepare for running tests within an android.app.Activity.

(Patchset 2 adds default --java-home location to usage output)
(Patchset 3 address reviewer comments, mostly newbie style issues)
(Patchset 4 address enh OptionParser issues, adds short/byte as well)
(Patchset 5 address enh OptionParser issues, work with "java" from PATH, change deviceRunnerDir to File)

14 years agoMerge "Remove an obsolete assertion."
Carl Shapiro [Fri, 29 Jan 2010 23:33:55 +0000 (15:33 -0800)]
Merge "Remove an obsolete assertion."

14 years agoMerge "Change NumberFormatTest to match ICU's behavior."
Elliott Hughes [Fri, 29 Jan 2010 22:57:57 +0000 (14:57 -0800)]
Merge "Change NumberFormatTest to match ICU's behavior."

14 years agoMerge "Jit: Fix for [Issue 2406862] Compiler thread preventing VM from shutting down"
Bill Buzbee [Fri, 29 Jan 2010 22:52:18 +0000 (14:52 -0800)]
Merge "Jit: Fix for [Issue 2406862] Compiler thread preventing VM from shutting down"

14 years agoreconcile android-2.1_r1 snapshot
The Android Open Source Project [Fri, 29 Jan 2010 22:07:39 +0000 (14:07 -0800)]
reconcile android-2.1_r1 snapshot

14 years agoChange NumberFormatTest to match ICU's behavior.
Elliott Hughes [Fri, 29 Jan 2010 22:02:10 +0000 (14:02 -0800)]
Change NumberFormatTest to match ICU's behavior.

ICU uses a non-breaking space after the euro sign in its currency formats,
where the RI uses ASCII space. ICU's behavior seems more reasonable (to
the extent that any kind of space after a currency symbol is reasonable).

Also uncomment the Arabic tests --- I fixed right-to-left number formats
a few weeks ago.

14 years agoJit: Fix for [Issue 2406862] Compiler thread preventing VM from shutting down
Bill Buzbee [Fri, 29 Jan 2010 21:44:19 +0000 (13:44 -0800)]
Jit: Fix for [Issue 2406862] Compiler thread preventing VM from shutting down

Replace placeholder sleep with timed condition wait that will start
the jit either when the framework signals that the first screen has been
drawn or a fixed time has elapsed.

14 years agoAdd support for streaming hprof dumps.
Andy McFadden [Fri, 29 Jan 2010 01:01:39 +0000 (17:01 -0800)]
Add support for streaming hprof dumps.

This adds the dumpHprofDataDdms method, which generates the hprof dump
in RAM and then spits the whole thing at DDMS.  The idea is to avoid
touching /sdcard, since not all apps have permission to do that.

This rearranges hprofShutdown() a fair bit.  It used to re-use a context
struct, saving interesting bits to local variables before zapping it;
now we just create a second context struct and free both at the end.

For bug 2092855.

14 years agoFix tests.api.java.io.SerializationStressTest3.test_18_116_writeObject.
Elliott Hughes [Fri, 29 Jan 2010 21:10:43 +0000 (13:10 -0800)]
Fix tests.api.java.io.SerializationStressTest3.test_18_116_writeObject.

The dead field 'minExponentDigits' was of type 'byte', not 'int'.

Also add detail to serialization exception messages (this isn't just test code ---
ObjectInputStream calls this).

14 years agoRemove an obsolete assertion.
Carl Shapiro [Fri, 29 Jan 2010 19:24:22 +0000 (11:24 -0800)]
Remove an obsolete assertion.

14 years agoFix a Formatter test that I checked in broken.
Elliott Hughes [Fri, 29 Jan 2010 18:23:54 +0000 (10:23 -0800)]
Fix a Formatter test that I checked in broken.

There's really no excuse for this with DalvikRunner, but I copy and pasted this
from a mail, and didn't run it until after it had been committed. I mean, who
puts untested code in a mail? ;-)

14 years agoMerge "Use DecimalFormatSymbols' new default constructor for speed."
Elliott Hughes [Fri, 29 Jan 2010 18:17:44 +0000 (10:17 -0800)]
Merge "Use DecimalFormatSymbols' new default constructor for speed."

14 years agoMerge "Jit: Fix register usage bug (driveabout failure)"
Bill Buzbee [Fri, 29 Jan 2010 04:17:09 +0000 (20:17 -0800)]
Merge "Jit: Fix register usage bug (driveabout failure)"

14 years agoJit: Fix register usage bug (driveabout failure)
Bill Buzbee [Fri, 29 Jan 2010 02:36:55 +0000 (18:36 -0800)]
Jit: Fix register usage bug (driveabout failure)

Some of the execute-inline templates were using r4, which wasn't in the
save set for templates.  The failing traces expected it to be live across
the template call.

14 years agoUse DecimalFormatSymbols' new default constructor for speed.
Elliott Hughes [Fri, 29 Jan 2010 01:47:00 +0000 (17:47 -0800)]
Use DecimalFormatSymbols' new default constructor for speed.

This brings "new DecimalFormat" down to ~80us (from ~260us before this patch,
or ~600us this time last week). Also remove some dead code and tighten up some
accessibility.

Depends on https://android-git.corp.google.com/g/38877.

14 years agoFollow the coding style to rename startJITCompilation to startJitCompilation.
Ben Cheng [Fri, 29 Jan 2010 00:47:03 +0000 (16:47 -0800)]
Follow the coding style to rename startJITCompilation to startJitCompilation.

14 years agoMerge "Fix a couple minor bugs (bug 2404859) in TraceDump.c"
Jack Veenstra [Fri, 29 Jan 2010 00:34:18 +0000 (16:34 -0800)]
Merge "Fix a couple minor bugs (bug 2404859) in TraceDump.c"

14 years agoFix an off-by-one error when releasing thread ids. This is the result
Carl Shapiro [Fri, 29 Jan 2010 00:12:44 +0000 (16:12 -0800)]
Fix an off-by-one error when releasing thread ids.  This is the result
of an oversight in my change that eliminated the LSB set constraint on
assigned thread ids.

14 years agoFix a couple minor bugs (bug 2404859) in TraceDump.c
Jack Veenstra [Thu, 28 Jan 2010 23:57:02 +0000 (15:57 -0800)]
Fix a couple minor bugs (bug 2404859) in TraceDump.c

1. A switch statement was missing a "break" after option letter "f".
2. The heavily-used function "lookupMethod()" had an expression using mod (%) instead of bitwise-and (&).

14 years agoMerge "Add a callback for the framework to explicitly enable the JIT compiler."
Ben Cheng [Thu, 28 Jan 2010 22:43:36 +0000 (14:43 -0800)]
Merge "Add a callback for the framework to explicitly enable the JIT compiler."

14 years agoAdd a callback for the framework to explicitly enable the JIT compiler.
Ben Cheng [Thu, 28 Jan 2010 21:56:52 +0000 (13:56 -0800)]
Add a callback for the framework to explicitly enable the JIT compiler.

Dalvik_dalvik_system_VMRuntime_startJITCompilation ()V it is.

14 years agoMerge "Added support for filter in dmtracedump tool, along with some test cases."
Jack Veenstra [Thu, 28 Jan 2010 22:25:44 +0000 (14:25 -0800)]
Merge "Added support for filter in dmtracedump tool, along with some test cases."

14 years agoMerge "Fix jniThrowRuntimeException for C callers, add jniThrowNullPointerException."
Elliott Hughes [Thu, 28 Jan 2010 22:04:40 +0000 (14:04 -0800)]
Merge "Fix jniThrowRuntimeException for C callers, add jniThrowNullPointerException."

14 years agoMerge "Removing duplicate classes from our tests. These are obsolete with our DOMv3...
Jesse Wilson [Thu, 28 Jan 2010 22:00:35 +0000 (14:00 -0800)]
Merge "Removing duplicate classes from our tests. These are obsolete with our DOMv3 support."

14 years agoMerge "Jit: Rework delayed start plus misc. cleanup"
Bill Buzbee [Thu, 28 Jan 2010 21:48:09 +0000 (13:48 -0800)]
Merge "Jit: Rework delayed start plus misc. cleanup"