OSDN Git Service
Android (Google) Code Review [Wed, 25 Nov 2009 17:55:11 +0000 (09:55 -0800)]
Merge change I5ec3a381
* changes:
Changing JtregRunner to support running tests off device.
Jesse Wilson [Wed, 25 Nov 2009 01:40:39 +0000 (17:40 -0800)]
Changing JtregRunner to support running tests off device.
Android (Google) Code Review [Tue, 24 Nov 2009 23:08:30 +0000 (15:08 -0800)]
Merge change I869898f1
* changes:
Fix an assertion.
Andy McFadden [Tue, 24 Nov 2009 22:00:50 +0000 (14:00 -0800)]
Fix an assertion.
The assertion probably dated from before the binary-search path existed.
Elliott Hughes [Tue, 24 Nov 2009 21:31:39 +0000 (13:31 -0800)]
am
e732bb04: am
1c7705b6: Merge change I96996494 into eclair-mr2
Merge commit '
e732bb040be84bd2ac652ca53330b80367a65725'
* commit '
e732bb040be84bd2ac652ca53330b80367a65725':
Fix browser crashes if server certificates have > 32 subjectAltNames.
Elliott Hughes [Tue, 24 Nov 2009 21:28:07 +0000 (13:28 -0800)]
am
1c7705b6: Merge change I96996494 into eclair-mr2
Merge commit '
1c7705b6066ea57109557fc1cb0609991ac0af24' into eclair-mr2-plus-aosp
* commit '
1c7705b6066ea57109557fc1cb0609991ac0af24':
Fix browser crashes if server certificates have > 32 subjectAltNames.
Android (Google) Code Review [Tue, 24 Nov 2009 21:24:18 +0000 (13:24 -0800)]
Merge change I96996494 into eclair-mr2
* changes:
Fix browser crashes if server certificates have > 32 subjectAltNames.
Elliott Hughes [Tue, 24 Nov 2009 19:47:14 +0000 (11:47 -0800)]
Fix browser crashes if server certificates have > 32 subjectAltNames.
Android-only changes added an arbitrary limit that upstream doesn't have.
This limit-free implementation is still more efficient than upstream (which
always allocates three Vectors).
Dr No: danfuzz
Bug:
2281869
Jesse Wilson [Tue, 24 Nov 2009 18:24:37 +0000 (10:24 -0800)]
A few notes on why we don't cache canonical paths.
Android (Google) Code Review [Tue, 24 Nov 2009 18:35:44 +0000 (10:35 -0800)]
Merge change I518925b0
* changes:
Fix windows SDK build.
Jesse Wilson [Tue, 24 Nov 2009 17:56:59 +0000 (09:56 -0800)]
am
683daacf: (-s ours) am
d1aead76: Merge change Ie21b2327 into eclair-mr2
Merge commit '
683daacf21830a0b0510320c735485c75749c4f1'
* commit '
683daacf21830a0b0510320c735485c75749c4f1':
DO NOT MERGE: Removing the use of FileCanonPathCache.
Jesse Wilson [Tue, 24 Nov 2009 17:51:34 +0000 (09:51 -0800)]
am
d1aead76: Merge change Ie21b2327 into eclair-mr2
Merge commit '
d1aead768d5c6e4aa18c4f43e6be97f8a40fbf84' into eclair-mr2-plus-aosp
* commit '
d1aead768d5c6e4aa18c4f43e6be97f8a40fbf84':
DO NOT MERGE: Removing the use of FileCanonPathCache.
Android (Google) Code Review [Tue, 24 Nov 2009 17:47:04 +0000 (09:47 -0800)]
Merge change Ie21b2327 into eclair-mr2
* changes:
DO NOT MERGE: Removing the use of FileCanonPathCache.
Jesse Wilson [Tue, 24 Nov 2009 01:58:43 +0000 (17:58 -0800)]
DO NOT MERGE: Removing the use of FileCanonPathCache.
Aside from being an unjustified optimization, users have reported
problems with this in the wild. This cache has already been removed
in master.
Android (Google) Code Review [Tue, 24 Nov 2009 01:44:32 +0000 (17:44 -0800)]
Merge change I9189bd9d
* changes:
Fix java.io.File's JNI's fixed-length buffers.
Elliott Hughes [Sat, 21 Nov 2009 07:02:07 +0000 (23:02 -0800)]
Fix java.io.File's JNI's fixed-length buffers.
I've also removed most of the duplication, simplified a lot of the
implementation, and added loads of TODOs now it's possible to see
what's going on under all the obfuscation. (The native code is
roughly half its previous size, but more functional.)
I want to stop here rather than start fixing any of the TODOs
because this change is already large enough and the history will
be clearer if unrelated changes are kept separate (easy though many
of them are).
Strictly speaking, I haven't removed all the fixed-length buffers:
the File.list implementation still uses fixed-length buffers, but
as the new TODOs point out, I think we want to rewrite that code
to better match its callers, and doing so will make the fixed-length
buffers go away. There's no point polishing code that's already
scheduled for deletion.
Add a couple of basic tests, one that assumes that if Path copes
with long paths in a couple of File's methods, it works in all of
them; another that singles out our readlink(2) wrapper because
that's the only place so far where we cope with arbitrary-length
paths moving in the opposite direction (from kernel to JNI to Java).
Android (Google) Code Review [Tue, 24 Nov 2009 00:35:47 +0000 (16:35 -0800)]
Merge change Iff90b1aa
* changes:
Explicitly ignore non-IPv4/IPv6 addresses from IFA_ADDRESS.
Android (Google) Code Review [Tue, 24 Nov 2009 00:33:44 +0000 (16:33 -0800)]
Merge change I72b1f303
* changes:
Add a comment.
Andy McFadden [Tue, 24 Nov 2009 00:12:39 +0000 (16:12 -0800)]
Android (Google) Code Review [Mon, 23 Nov 2009 23:25:50 +0000 (15:25 -0800)]
Merge change I4bd6f817
* changes:
Replaced primitive sorts with Iaroslavski, Bentley, and Bloch's Dual Pivot Quicksort. The originals were based on Bentley and McIlroy's "Engineering a Sort Function." The original floating point sorts suffered from poor performance due to the use of a naive comparison function. In round numbers, the new version is 1.5x as fast as the old one on integers and twice as fast on floating point numbers (on the latest Android build running on Sholes). On some data sets (e.g., nearly sorted data, the new version is substantially faster.
Joshua Bloch [Wed, 11 Nov 2009 23:31:19 +0000 (15:31 -0800)]
Replaced primitive sorts with Iaroslavski, Bentley, and Bloch's Dual Pivot Quicksort.
The originals were based on Bentley and McIlroy's "Engineering a Sort Function."
The original floating point sorts suffered from poor performance due to the use
of a naive comparison function. In round numbers, the new version is 1.5x as fast
as the old one on integers and twice as fast on floating point numbers (on the
latest Android build running on Sholes). On some data sets (e.g., nearly sorted data,
the new version is substantially faster.
Now, with added performance tweaks from Jesse and Bob!! With these tweaks, the sort
is 70% faster than the original sort on integers and over twice as fast on doubles.
None of the optimizations are Dalvik-specific, and we may be able to make it even
faster by adding Dalvik-specific optimizations.
Also added beefier tests.
Elliott Hughes [Mon, 23 Nov 2009 18:54:47 +0000 (10:54 -0800)]
Add a comment.
Elliott Hughes [Mon, 23 Nov 2009 18:46:02 +0000 (10:46 -0800)]
Explicitly ignore non-IPv4/IPv6 addresses from IFA_ADDRESS.
I don't think this can happen (some other calls return hardware addresses too,
but I've never seen a hardware address in an IFA_ADDRESS message), but netlink
is badly documented, and it's better to be safe than sorry.
Bill Buzbee [Fri, 20 Nov 2009 23:41:34 +0000 (15:41 -0800)]
Jit: Support for inline-execute/range [issue
2268232]
Bill Buzbee [Sun, 22 Nov 2009 20:45:30 +0000 (12:45 -0800)]
Jit: Misc fixes, move_exception, blocking mode, self-cosim
OP_MOVE_EXCEPTION handler was neglecting to reset.
Blocking mode was failing to signal empty queue in some cases
Self-cosim was including operations in traces that can't be done twice
Added OP_MOVE_EXCEPTION to self cosim's no-replay ops (it has side effects)
Restored threshold of 1 to self-cosim (now able to boot device with self-cosim)
When threshold < 6, disable 2nd-level translation filter
Ben Cheng [Mon, 23 Nov 2009 07:31:11 +0000 (23:31 -0800)]
Restructure the codegen to make architectural depedency explicit.
The original Codegen.c is broken into three components:
- CodegenCommon.c (arch-independend)
- CodegenFactory.c (Thumb1/2 dependent)
- CodegenDriver.c (Dalvik dependent)
For the Thumb/Thumb2 directories, each contain the followin three files:
- Factory.c (low-level routines for instruction selections)
- Gen.c (invoke the ISA-specific instruction selection routines)
- Ralloc.c (arch-dependent register pools)
The FP directory contains FP-specific codegen routines depending on
Thumb/Thumb2/VFP/PortableFP:
- Thumb2VFP.c
- ThumbVFP.c
- ThumbPortableFP.c
Then the hierarchy is formed by stacking these files in the following top-down
order:
1 CodegenCommon.c
2 Thumb[2]/Factory.c
3 CodegenFactory.c
4 Thumb[2]/Gen.c
5 FP stuff
6 Thumb[2]/Ralloc.c
7 CodegenDriver.c
Android (Google) Code Review [Sat, 21 Nov 2009 03:13:58 +0000 (19:13 -0800)]
Merge change I9fa3ef2c
* changes:
Rewrite NetworkInterface's JNI for IPv6.
Android (Google) Code Review [Sat, 21 Nov 2009 01:26:04 +0000 (17:26 -0800)]
Merge change I2807742e
* changes:
Switch java_io_File.c over to C++.
Elliott Hughes [Sat, 21 Nov 2009 00:57:50 +0000 (16:57 -0800)]
Switch java_io_File.c over to C++.
Dan Egnor [Sat, 21 Nov 2009 00:25:09 +0000 (16:25 -0800)]
am
070dbac8: am
0dfef7bc: Fix bugs created by caching NumberFormat & DecimalFormatSymbols objects
Merge commit '
070dbac882856834111bc0e766224ee53c8d5471'
* commit '
070dbac882856834111bc0e766224ee53c8d5471':
Fix bugs created by caching NumberFormat & DecimalFormatSymbols objects
Dan Egnor [Sat, 21 Nov 2009 00:20:17 +0000 (16:20 -0800)]
am
0dfef7bc: Fix bugs created by caching NumberFormat & DecimalFormatSymbols objects
Merge commit '
0dfef7bc223f18a1372b4c44c822b9cdc5d5f741' into eclair-mr2-plus-aosp
* commit '
0dfef7bc223f18a1372b4c44c822b9cdc5d5f741':
Fix bugs created by caching NumberFormat & DecimalFormatSymbols objects
Dan Egnor [Sat, 21 Nov 2009 00:10:56 +0000 (16:10 -0800)]
Fix bugs created by caching NumberFormat & DecimalFormatSymbols objects
Elliott Hughes [Fri, 20 Nov 2009 02:32:43 +0000 (18:32 -0800)]
Rewrite NetworkInterface's JNI for IPv6.
The old ioctl SIOCGIFCONF implementation of getNetworkInterfaces only returns
IPv4 addresses. Now we've switched everything over to IPv6, that's not good
enough. This change (a) implements glibc/BSD-like getifaddrs(3)/freeifaddrs(3)
for Android, and (b) rewrites our getNetworkInterfaces to use that method. Of
particular note is that we now do more of the work in Java. The JNI hands back
a Java equivalent of getifaddrs(3)'s linked list of ifaddrs structs. The new
package-private java.net.InterfaceAddress class serves as Java's "struct
ifaddrs".
The old implementation was also broken: SIOCGIFCONF doesn't actually return
interface indexes from the kernel as the old code believed, so we were
pulling the address family out of the IPv4 address it returned, leading
us to assign the index 2 to all network interfaces. This caused all kinds of
weird behavior later.
I also had to fix GenericIPMreq so that its interface index field is actually
set. The native code gets passed one of these objects when setNetworkInterface
is called, so it's kind of important that the object identify which interface
it's supposed to correspond to.
I've also added missing copyright headers.
This fixes all of the harmony tests on the simulator and on the device. It
fixes several but not all of the jtreg MulticastSocket and IPv6 tests.
Android (Google) Code Review [Fri, 20 Nov 2009 23:07:35 +0000 (15:07 -0800)]
Merge change I952e8040
* changes:
Implement ZoneInfo.toString for debugging convenience.
Elliott Hughes [Fri, 20 Nov 2009 22:19:42 +0000 (14:19 -0800)]
Implement ZoneInfo.toString for debugging convenience.
Bug:
2276903
Andy McFadden [Fri, 20 Nov 2009 21:42:29 +0000 (13:42 -0800)]
Fix heap profiling doc.
The DDMS "get hprof dump" button doesn't show up until 2.0.
Andy McFadden [Thu, 19 Nov 2009 18:23:41 +0000 (10:23 -0800)]
Add execute-inline/range instruction.
Like "execute-inline", this is an instruction generated by dexopt that
replaces a method invoke instruction. It's useful for small, frequently
called methods in the core libs.
As with execute-inline, we allow at most 4 arguments, but with /range
we're no longer limited to the low 16 registers.
Also: marked execute-inline as being able to throw an exception.
Needed: native x86 implementation; support in JIT.
For bug
2268232.
Bill Buzbee [Thu, 19 Nov 2009 19:37:21 +0000 (11:37 -0800)]
Jit: fix for string/indexOf handler.
Android (Google) Code Review [Wed, 18 Nov 2009 22:04:37 +0000 (14:04 -0800)]
Merge change I8cd9a083
* changes:
Fix KXmlSerializer so it won't generate invalid XML.
Elliott Hughes [Wed, 18 Nov 2009 02:05:40 +0000 (18:05 -0800)]
Fix KXmlSerializer so it won't generate invalid XML.
We were allowing arbitrary characters to be output (which, surprisingly,
XML does not), and we weren't correctly escaping CDATA sections that
contained "]]>".
Pull out some of my test helpers from DocumentBuilderTest into Support_Xml,
because they're more generally useful when writing tests involving XML.
Also correct a bunch of spelling mistakes in XmlSerializer's javadoc, since
I happened to be reading through.
Jesse Wilson [Wed, 18 Nov 2009 21:33:48 +0000 (13:33 -0800)]
Don't ignore errors on expected result, compile, or install in jtreg runner.
Android (Google) Code Review [Wed, 18 Nov 2009 01:52:35 +0000 (17:52 -0800)]
Merge change Id856eca6
* changes:
protect use of SMALL_BUFFERS and HANDSHAKE_CUTTHROUGH
Dan Egnor [Wed, 18 Nov 2009 01:01:37 +0000 (17:01 -0800)]
am
50f82ad4: am
08e0023c: Merge change I42d17725 into eclair-mr2
Merge commit '
50f82ad4f2c4047382029560fd09d1907518adc8'
* commit '
50f82ad4f2c4047382029560fd09d1907518adc8':
Cache NumberFormat and DecimalFormatSymbols objects in a ThreadLocal,
Elliott Hughes [Wed, 18 Nov 2009 01:01:32 +0000 (17:01 -0800)]
am
239e94f6: am
28ac5b8c: Merge change I77af8135 into eclair-mr2
Merge commit '
239e94f6a7d54bf13c78171d841582557b5fdd38'
* commit '
239e94f6a7d54bf13c78171d841582557b5fdd38':
Fix Formatter.format's handling of Formattable.
Dan Egnor [Wed, 18 Nov 2009 00:58:01 +0000 (16:58 -0800)]
am
08e0023c: Merge change I42d17725 into eclair-mr2
Merge commit '
08e0023c59828a443d993c7e6cb43bf9d197506a' into eclair-mr2-plus-aosp
* commit '
08e0023c59828a443d993c7e6cb43bf9d197506a':
Cache NumberFormat and DecimalFormatSymbols objects in a ThreadLocal,
Elliott Hughes [Wed, 18 Nov 2009 00:57:57 +0000 (16:57 -0800)]
am
28ac5b8c: Merge change I77af8135 into eclair-mr2
Merge commit '
28ac5b8cfd52d1902a132a5faf8f102a8b33d6c2' into eclair-mr2-plus-aosp
* commit '
28ac5b8cfd52d1902a132a5faf8f102a8b33d6c2':
Fix Formatter.format's handling of Formattable.
Android (Google) Code Review [Wed, 18 Nov 2009 00:55:29 +0000 (16:55 -0800)]
Merge change I42d17725 into eclair-mr2
* changes:
Cache NumberFormat and DecimalFormatSymbols objects in a ThreadLocal, so they can be reused between multiple instances of Formatter on the same thread. This speeds up my unscientific benchmark (a number of printouts involved in a debugging diagnostics output) by 3x, and should have a similar impact on anyone who uses String.format(), PrintWriter.format(), and the like.
Android (Google) Code Review [Wed, 18 Nov 2009 00:54:48 +0000 (16:54 -0800)]
Merge change I77af8135 into eclair-mr2
* changes:
Fix Formatter.format's handling of Formattable.
Elliott Hughes [Wed, 18 Nov 2009 00:46:57 +0000 (16:46 -0800)]
am
52d2e5f4: am
08c24984: Merge change I0ee370b9 into eclair-mr2
Merge commit '
52d2e5f4e7f75e3a2b38b0373158b7dff13e72cf'
* commit '
52d2e5f4e7f75e3a2b38b0373158b7dff13e72cf':
Consistently use Formatter's cached NumberFormat.
Elliott Hughes [Wed, 18 Nov 2009 00:42:52 +0000 (16:42 -0800)]
am
08c24984: Merge change I0ee370b9 into eclair-mr2
Merge commit '
08c24984fd3cb3e927c9a97b8413843b4b215dc5' into eclair-mr2-plus-aosp
* commit '
08c24984fd3cb3e927c9a97b8413843b4b215dc5':
Consistently use Formatter's cached NumberFormat.
Android (Google) Code Review [Wed, 18 Nov 2009 00:40:01 +0000 (16:40 -0800)]
Merge change I0ee370b9 into eclair-mr2
* changes:
Consistently use Formatter's cached NumberFormat.
Jean-Baptiste Queru [Tue, 17 Nov 2009 23:33:33 +0000 (15:33 -0800)]
protect use of SMALL_BUFFERS and HANDSHAKE_CUTTHROUGH
Dan Egnor [Tue, 17 Nov 2009 23:56:11 +0000 (15:56 -0800)]
Cache NumberFormat and DecimalFormatSymbols objects in a ThreadLocal,
so they can be reused between multiple instances of Formatter on the
same thread. This speeds up my unscientific benchmark (a number of
printouts involved in a debugging diagnostics output) by 3x, and
should have a similar impact on anyone who uses String.format(),
PrintWriter.format(), and the like.
Andy McFadden [Tue, 17 Nov 2009 23:10:55 +0000 (15:10 -0800)]
Elliott Hughes [Tue, 22 Sep 2009 21:38:18 +0000 (14:38 -0700)]
Fix Formatter.format's handling of Formattable.
This doesn't make much difference to performance, but it is
slightly faster and I think it reads better too. Proof of the
latter is the fact that the rewritten form accidentally fixed
bug 1767: the old code was storing up literal text until after
handling the next format specifier, which is wrong if the
format specifier has side effects caused by the use of
Formattable.
(I don't plan on doing any more on the performance bug for now,
though I note that %g allocates and manipulates BigDecimal
instances, which would be worth looking at when we get round to
the bug that causes it to fail a harmony test.)
Bug: 1476, 1767
Elliott Hughes [Mon, 21 Sep 2009 21:08:38 +0000 (14:08 -0700)]
Consistently use Formatter's cached NumberFormat.
%f is a lot more expensive than it should be because we're not using the cached
NumberFormat (as we are for %d). Running the microbenchmark I added to the
bug (times in ms, on a Cortex A8):
old new
new Formatter %f 1732 811
String.format %d 635 651
String.format %f 1752 900
reuse Formatter %f 1521 188
Double.toString + 149 148
Double.toString append 33 33
StringBuilder.append 143 139
Bug: 1476
Andy McFadden [Tue, 17 Nov 2009 22:05:42 +0000 (14:05 -0800)]
am
dced7947: Reduce logging.
Merge commit '
dced79474902ffa57fbd48121eb794aad7d24ddc' into eclair-mr2-plus-aosp
* commit '
dced79474902ffa57fbd48121eb794aad7d24ddc':
Reduce logging.
Android (Google) Code Review [Tue, 17 Nov 2009 21:47:34 +0000 (13:47 -0800)]
Merge change I49b05da2
* changes:
Various XML fixes.
Andy McFadden [Tue, 17 Nov 2009 21:13:34 +0000 (13:13 -0800)]
Reduce logging.
This cuts out some unnecessarily verbose dalvikvm chatter, notably:
Trying to load lib /system/lib/librs_jni.so 0x0
Added shared lib /system/lib/librs_jni.so 0x0
These messages can be useful for people trying to get their apps to
work with the NDK, so I'm only suppressing them when the path starts
with "/system". The result is that you can boot the system and run all
standard apps without seeing them, but we'll still see app-private libs
being loaded.
Also LOGI->LOGV for "Debugger thread not active, ignoring DDM send",
which seemed to be firing on startup for APp NaMe events. Ditto for
"Splitting out new zygote heap", which only happens once, but doesn't
strike me as a particularly useful thing to log.
Elliott Hughes [Tue, 17 Nov 2009 05:23:11 +0000 (21:23 -0800)]
Various XML fixes.
Add tests for bug 2487, exploring the situations where "]]>" is and isn't
allowed. Fix the bug by changing KXmlParser so it pays attention to
whether it's dealing with normal text or text in an attribute value and
reports errors appropriately.
In order to pass the new tests, we also need to fix DocumentBuilder to
pay attention to its DocumentBuilderFactory's "coalescing" setting: whether
or not adjacent text/CDATA nodes should be coalesced.
This in turn fixes a @KnownFailure in DocumentBuilderFactoryTest: previously
we didn't allow the caller to turn "coalescing" off (though until my
previous patch, we didn't actually coalesce anyway). Now we support both,
and I've made coalescing the default, because bug reports tell us that's
what users want. It's how the RI behaves, too.
Bug: 2487
Android (Google) Code Review [Tue, 17 Nov 2009 15:19:49 +0000 (07:19 -0800)]
Merge change I117408b2
* changes:
Restore support for DEX on FAT.
Android (Google) Code Review [Tue, 17 Nov 2009 05:41:20 +0000 (21:41 -0800)]
Merge change Id8a539c6
* changes:
Suppressing an invalid test that's checking implementation details.
Jesse Wilson [Tue, 17 Nov 2009 02:31:15 +0000 (18:31 -0800)]
Suppressing an invalid test that's checking implementation details.
Andy McFadden [Tue, 17 Nov 2009 00:14:54 +0000 (16:14 -0800)]
Restore support for DEX on FAT.
The recent change to mmap(read-write)+mprotect(read-only) doesn't seem
to work on FAT filesystems like /sdcard. This caused problems for the
code that opens Zip files and the code that opens DEX files.
This change splits the "map file" function into "read only" and
"writable read only" versions, using the former for Zip and the latter
for DEX. Further, failure to mprotect(read-only) is now considered a
soft failure and only causes a warning.
The only apps that will be affected by this are those using /sdcard to
hold optimized DEX data for "plugin" APKs.
Also: moved the non-HAVE_POSIX_FILEMAP implementation of file mapping
into a shared function. (Could probably go away entirely.)
Also: fixed the expected output for test 071.
Android (Google) Code Review [Mon, 16 Nov 2009 23:10:01 +0000 (15:10 -0800)]
Merge change I4c0dedfd
* changes:
Jit: string's compareTo performance improvement.
Jesse Wilson [Mon, 16 Nov 2009 22:22:02 +0000 (14:22 -0800)]
Specifying the /tmp directory and other properties for test runs.
This fixes 2 broken tests in RandomAccessFile, and possibly others.
Bill Buzbee [Mon, 16 Nov 2009 20:51:22 +0000 (12:51 -0800)]
Jit: string's compareTo performance improvement.
Changed compareTo handler to call __memcmp16() for strings >= 32 chars.
However, even for those strings, the first two chars are done in the
handler (to catch early-out cases).
Comparisons were done with micro-benchmarks comparing 10 and 200-char
strings.
The strings were:
equal -> Q
not equal at start -> S
not equal at end -> E
The test configurations were handler (H) [the previous handler], subroutine (S)
[memcmp16()} and blended (B) [this commit]
H S B
10E 60 138 65
10S 32 70 30
10Q 9 9 9
100E 745 708 716
In short, the small string cases were twice as fast with the existing
handler compared to memcmp16, but memcmp16 was ~5% faster for long
strings.
Andy McFadden [Thu, 29 Oct 2009 00:39:02 +0000 (17:39 -0700)]
Change the way breakpoints work.
This replaces the breakpoint mechanism with a more efficient approach.
We now insert breakpoint instructions into the bytecode stream instead of
maintaining a table. This requires mapping DEX files as private instead
of shared, which allows copy-on-write to work. mprotect() is used to
guard the pages against inadvertent writes.
Unused opcode EC is now OP_BREAKPOINT. It's not recognized by dexdump or
any interpreter except portdbg, but it can be encountered by the bytecode
verifier (the debugger can request breakpoints in unverified code).
Breakpoint changes are blocked while the verifier runs to avoid races.
This eliminates method->debugBreakpointCount, which is no longer needed.
(Also, it clashed with LinearAlloc's read-only mode.)
The deferred verification error mechanism was using a code-copying
approach to modify the bytecode stream. That has been changed to use
the same copy-on-write modification mechanism.
Also, normalized all PAGE_SIZE/PAGESIZE references to a single
SYSTEM_PAGE_SIZE define.
Simple Fibonacci computation test times (opal-eng):
JIT, no debugger: 10.6ms
Fast interp, no debugger: 36ms
Portable interp, no debugger: 43.8ms
ORIG debug interp, no breakpoints set: 458ms
ORIG debug interp, breakpoint set nearby: 697ms
NEW debug interp, no breakpoints set: 341ms
NEW debug interp, breakpoints set nearby: 341ms
Where "nearby" means there's a breakpoint in the method doing the
computation that isn't actually hit -- the VM had an optimization where
it flagged methods with breakpoints and skipped some of the processing
when possible.
The bottom line is that code should run noticeably faster while a
debugger is attached.
Android (Google) Code Review [Mon, 16 Nov 2009 19:25:30 +0000 (11:25 -0800)]
Merge change I690f0051
* changes:
Fixing a simple concurrency issue in the jtreg runner.
Jesse Wilson [Mon, 16 Nov 2009 19:00:19 +0000 (11:00 -0800)]
Fixing a simple concurrency issue in the jtreg runner.
Android (Google) Code Review [Mon, 16 Nov 2009 18:30:41 +0000 (10:30 -0800)]
Merge change If8e2929a
* changes:
Don't allocate arbitrary-length buffers on the stack.
Android (Google) Code Review [Mon, 16 Nov 2009 18:25:08 +0000 (10:25 -0800)]
Merge change Id979947d
* changes:
Remove org.kxml2.wap.
Jean-Baptiste Queru [Sun, 15 Nov 2009 23:02:20 +0000 (15:02 -0800)]
Jean-Baptiste Queru [Sun, 15 Nov 2009 22:55:05 +0000 (14:55 -0800)]
merge from open-source master
Jean-Baptiste Queru [Sun, 15 Nov 2009 22:05:56 +0000 (14:05 -0800)]
merge from open-source master
Merge commit 'goog/stage-korg-master' into HEAD
Bill Buzbee [Sun, 15 Nov 2009 21:37:18 +0000 (13:37 -0800)]
Jit: fix for compareTo handler.
Note to self: Units tests are much more effective when the test main actually
calls them.
Jean-Baptiste Queru [Sun, 15 Nov 2009 20:05:35 +0000 (12:05 -0800)]
merge from eclair
Android (Google) Code Review [Sun, 15 Nov 2009 19:24:58 +0000 (11:24 -0800)]
Merge change I07accb25
* changes:
Fix CHECK_CAST problem in the Jit.
Bill Buzbee [Fri, 13 Nov 2009 01:07:16 +0000 (17:07 -0800)]
Fix CHECK_CAST problem in the Jit.
The Jit has previously (and wrongly) assumed that because any CHECK_CAST
operation had previously succeeded in the interpreter, that the class
that check cast's object was being check against would already be resolved.
However, if the object being checked is NULL, no attempt is made to resolve
the class. First bug flushed out by the Jit's stress mode (woohoo).
Elliott Hughes [Sat, 14 Nov 2009 02:10:06 +0000 (18:10 -0800)]
Remove org.kxml2.wap.
(Not to be submitted before
d2944c35 in packages/apps/Email.)
Bug:
2249953
Elliott Hughes [Sat, 14 Nov 2009 01:07:00 +0000 (17:07 -0800)]
Don't allocate arbitrary-length buffers on the stack.
A new LocalArray C++ class lets us specify a "reasonable" amount of stack to
use, but transparently fall back to using the heap if we need more space.
The three places I've chosen to use LocalArray in this patch are fairly
random; all they have in common is that they're the places where we call
GetStringUTFRegion. There are more places LocalArray will be useful: the
java.io.File JNI in particular.
Bug:
2257819
Android (Google) Code Review [Fri, 13 Nov 2009 22:53:06 +0000 (14:53 -0800)]
Merge change I716b2844
* changes:
Suppressing BufferedReader jtreg tests we're better off not passing.
Jesse Wilson [Fri, 13 Nov 2009 22:24:18 +0000 (14:24 -0800)]
Suppressing BufferedReader jtreg tests we're better off not passing.
Elliott Hughes [Fri, 13 Nov 2009 19:20:15 +0000 (11:20 -0800)]
If we have a Class object in the "monitors held:" output, show which class.
Bug:
2187020
Android (Google) Code Review [Fri, 13 Nov 2009 06:43:32 +0000 (22:43 -0800)]
Merge change Iaf8fd5ec
* changes:
Fix HttpURLConnection's chunked encoding behavior.
Elliott Hughes [Thu, 12 Nov 2009 22:05:59 +0000 (14:05 -0800)]
Fix HttpURLConnection's chunked encoding behavior.
A third-party developer who wasn't reading to the end of the stream found that
their next connection would return junk, which turned out to be the tail of
the first response (thanks to connection recycling). Make sure we clean up
a chunked-encoding stream before allowing the connection to be reused.
Enhance our test web server to implement chunked encoding properly, with
configurable chunk sizes, rather than just responding with a single chunk.
Bug: http://code.google.com/p/android/issues/detail?id=2939
Jean-Baptiste Queru [Fri, 13 Nov 2009 02:45:15 +0000 (18:45 -0800)]
eclair snapshot
Android (Google) Code Review [Thu, 12 Nov 2009 23:53:25 +0000 (15:53 -0800)]
Merge change I200886b4
* changes:
Make cacerts.bks available to the simulator too.
Elliott Hughes [Thu, 12 Nov 2009 22:51:57 +0000 (14:51 -0800)]
Make cacerts.bks available to the simulator too.
This lets you successfully run more tests on a sim-eng build than otherwise,
by bringing us in line with the normal on-device configuration.
Elliott Hughes [Thu, 12 Nov 2009 20:23:05 +0000 (12:23 -0800)]
Remove OSNetworkSystem.oneTimeInitialization.
Do this work at JNI registration time, as we do for almost everything else.
(I did this to rule out a warning from the dalvikvm deadlock prediction
code, which doesn't like the unusual lock ordering at initialization time,
and although it didn't make any difference to that, I prefer to have a
defined static order of initialization.)
Android (Google) Code Review [Thu, 12 Nov 2009 20:01:23 +0000 (12:01 -0800)]
Merge change Ica2d0b8c
* changes:
Fix a buffer overrun in OSNetworkSystem.
Elliott Hughes [Thu, 12 Nov 2009 05:55:42 +0000 (21:55 -0800)]
Fix a buffer overrun in OSNetworkSystem.
Given an IPv6 address in a non-standard (Java-specific) form, we used to
overrun an on-stack buffer that was assuming the standard (shorter) form.
Make the buffer large enough for both forms, and reject anything that's
still too large.
Found by Inet6AddressTest.
Android (Google) Code Review [Thu, 12 Nov 2009 17:30:38 +0000 (09:30 -0800)]
Merge change Id726991b
* changes:
Jit stress mode: translate everything we can and self verify.
Elliott Hughes [Thu, 12 Nov 2009 01:22:45 +0000 (17:22 -0800)]
Fix typos in the XmlPullParser documentation.
Bill Buzbee [Tue, 10 Nov 2009 22:31:32 +0000 (14:31 -0800)]
Jit stress mode: translate everything we can and self verify.
This represents a general clean-up of some existing command-line
options: -Xjitthreshold:num and -Xjitblocking. The jit threshold
controls how quickly we treat a Dalvik address as a potential trace
head. Normally this is set around 200 (and the range is 0..255, where
0 is in effect 256 and 1 means begin trace selection on first visit).
-Xjitblocking forces the system to pause execution whenever a translation
request is made and resume when that translation is complete. Normally
the system make a request but continues execution (to avoid jitter).
Additionally, if WITH_SELF_VERIFICATION is defined, we force blocking
to be true, and set the threshold to 1. And finally, we treat
threshold==1 as a special case and disable the 2nd-level trace-building
filter - which causes the system to immediately start trace selection.
Elliott Hughes [Tue, 10 Nov 2009 21:20:43 +0000 (13:20 -0800)]
Fix DOM parsing of character references/entities.
Our DOM parser didn't support { or š character references,
and didn't merge adjacent text nodes into one (so "a&b" would be
three text nodes rather than one; SAX allows the former, but DOM
guarantees the latter).
This patch fixes both bugs, and adds tests.
Bug: 2607 (and duplicates)
Elliott Hughes [Tue, 10 Nov 2009 00:06:42 +0000 (16:06 -0800)]
Bring our kxml2 up to date with upstream.
Much of this is spurious whitespace changes, but there's some increased
"relaxation". I deliberately lost the Android-specific change that was
avoiding Runtime, since we do now have Runtime. I've added an Android-specific
change to comment out some System.out logging that's been added upstream.
I'd tell you the upstream revision number, but they're still using CVS, so
there isn't one.
Brett Chabot [Mon, 9 Nov 2009 21:49:10 +0000 (13:49 -0800)]
am
216438fc: (-s ours) am
83859891: am
3dc6a811: (-s ours) DO NOT MERGE. CTS test cleanup. Mark tests as KnownFailures and BrokenTests.
Merge commit '
216438fc405d78069b1042cc21fc43dc85f860a9'
* commit '
216438fc405d78069b1042cc21fc43dc85f860a9':
DO NOT MERGE. CTS test cleanup. Mark tests as KnownFailures and BrokenTests.
Android (Google) Code Review [Mon, 9 Nov 2009 20:43:42 +0000 (12:43 -0800)]
Merge change Ie65d9758
* changes:
Introduce "just interpret" chainable pseudo-translation.
Bill Buzbee [Sun, 8 Nov 2009 22:31:20 +0000 (14:31 -0800)]
Introduce "just interpret" chainable pseudo-translation.
This is the first step towards enabling translation & self-cosim stress modes.
When trace selection begins, the trace head address is pinned and
remains in a limbo state until the translation is complete. Previously,
if the trace selected aborted for any reason, the trace head would remain
forever in limbo. This was not a correctness problem, but caused some
small performance anomolies and made life more difficult for self-cosimulation
mode.
This CL introduces a pseudo-translation that simply routes control to
the interpreter. When we detect that a trace selection attempt has
failed, the trace head is associated with this fully-chainable
pseudo-translation. This also has the benefit for self-cosimulation that
we are guaranteed forward progress.