<feed xmlns='http://www.w3.org/2005/Atom'>
<title>android_dalvik/libdex/SysUtil.c, branch cm-13.0</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/LineageOS/android_dalvik/'/>
<entry>
<title>Compile libdex as C++.</title>
<updated>2011-04-14T20:32:49+00:00</updated>
<author>
<name>Dan Bornstein</name>
<email>danfuzz@android.com</email>
</author>
<published>2011-04-14T20:08:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/LineageOS/android_dalvik/commit/?id=a70a3d8faa8f7332549fa0c9ae2008d428e28606'/>
<id>a70a3d8faa8f7332549fa0c9ae2008d428e28606</id>
<content type='text'>
The major-looking code changes were all just to unravel some gotos.

Change-Id: I86f98a48b160f357ce93c87446bad5d705d5f05b
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The major-looking code changes were all just to unravel some gotos.

Change-Id: I86f98a48b160f357ce93c87446bad5d705d5f05b
</pre>
</div>
</content>
</entry>
<entry>
<title>Expose sysCopyFileToFile() and use it.</title>
<updated>2010-12-16T21:17:30+00:00</updated>
<author>
<name>Dan Bornstein</name>
<email>danfuzz@android.com</email>
</author>
<published>2010-12-16T21:17:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/LineageOS/android_dalvik/commit/?id=650177ee24fbe07cdd9ad9d8913fbf44cf44be13'/>
<id>650177ee24fbe07cdd9ad9d8913fbf44cf44be13</id>
<content type='text'>
Moved from ZipArchive.c, with tweaks to for argument order and name. Also
tweaked a related function in ZipArchive to match.

Change-Id: I4d2e3c8b44386d87c5aa1c4565f72da87357fce8
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Moved from ZipArchive.c, with tweaks to for argument order and name. Also
tweaked a related function in ZipArchive to match.

Change-Id: I4d2e3c8b44386d87c5aa1c4565f72da87357fce8
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove repeated newlines at the end of files.</title>
<updated>2010-06-09T05:45:29+00:00</updated>
<author>
<name>Carl Shapiro</name>
<email>cshapiro@google.com</email>
</author>
<published>2010-06-09T01:08:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/LineageOS/android_dalvik/commit/?id=7365493ad8d360c1dcf9cd8b6eee62747af01cae'/>
<id>7365493ad8d360c1dcf9cd8b6eee62747af01cae</id>
<content type='text'>
Change-Id: I1e3d103a7b932ef21acedb6438c0f26b315df28f
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: I1e3d103a7b932ef21acedb6438c0f26b315df28f
</pre>
</div>
</content>
</entry>
<entry>
<title>Write until we fall over.</title>
<updated>2010-05-04T22:44:27+00:00</updated>
<author>
<name>Andy McFadden</name>
<email>fadden@android.com</email>
</author>
<published>2010-05-04T22:41:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/LineageOS/android_dalvik/commit/?id=64896a2543ee54e47c586f4cf26f54e7fdb366bd'/>
<id>64896a2543ee54e47c586f4cf26f54e7fdb366bd</id>
<content type='text'>
Implement enh's idea about repeating write() until it fails.  Use it
in the zip expander and dexopt, which have an above-average chance of
failing due to lack of disk space.

Replace a stray DEFAULT_PAGE_SIZE with SYSTEM_PAGE_SIZE.  Apparently I
missed that during the Great Page Size Unification.

Change-Id: Id173cb7669330deebe2f24ae23ece4009a90e3bd
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Implement enh's idea about repeating write() until it fails.  Use it
in the zip expander and dexopt, which have an above-average chance of
failing due to lack of disk space.

Replace a stray DEFAULT_PAGE_SIZE with SYSTEM_PAGE_SIZE.  Apparently I
missed that during the Great Page Size Unification.

Change-Id: Id173cb7669330deebe2f24ae23ece4009a90e3bd
</pre>
</div>
</content>
</entry>
<entry>
<title>Dalvik Zip rewrite.</title>
<updated>2010-04-29T17:34:30+00:00</updated>
<author>
<name>Andy McFadden</name>
<email>fadden@android.com</email>
</author>
<published>2010-04-23T23:34:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/LineageOS/android_dalvik/commit/?id=8911f7a2222124ba724a4a9281555b74d0e098e2'/>
<id>8911f7a2222124ba724a4a9281555b74d0e098e2</id>
<content type='text'>
Change the way zip archives are handled.  This is necessary to deal with
very large (~1GB) APK files, for which our current approach of mapping
the entire file falls over.

We now do the classic scavenger hunt for the End Of Central Directory magic
on a buffer of data read from the file, instead of a memory-mapped section.
We use what we find to create a map that covers the Central Directory only.
For most uses in the VM this is all we really need, since we just want
to check file attributes vs. the optimized DEX to see if we're out of date.

If the caller is interested in unpacking the file contents, we have to
do an additional file read to discover the size of the Local File Header
section so we can skip past it.  We also now do a file-to-file extraction
using read() calls instead of a buffer-to-file extraction on mmap()ed data.
No difference in performance (as measured by first-boot dexopt).

Since this is more of a rewrite than an update, I also took the opportunity
to change buffer size variables from "long" to "size_t", and normalized
return values to int (some were using bool, which is common in the VM but
was mixed in the zip code).  Failure messages are now all LOGW with the
word "Zip" up front (didn't want to change log tag away from "dalvikvm").

Also, removed a not-quite-right check in the "map part of a file" code,
and clarified that the file offset is absolute.

For bug 2620103.

Change-Id: I745fb15abb541376f467969ffe422222676f1e5f
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change the way zip archives are handled.  This is necessary to deal with
very large (~1GB) APK files, for which our current approach of mapping
the entire file falls over.

We now do the classic scavenger hunt for the End Of Central Directory magic
on a buffer of data read from the file, instead of a memory-mapped section.
We use what we find to create a map that covers the Central Directory only.
For most uses in the VM this is all we really need, since we just want
to check file attributes vs. the optimized DEX to see if we're out of date.

If the caller is interested in unpacking the file contents, we have to
do an additional file read to discover the size of the Local File Header
section so we can skip past it.  We also now do a file-to-file extraction
using read() calls instead of a buffer-to-file extraction on mmap()ed data.
No difference in performance (as measured by first-boot dexopt).

Since this is more of a rewrite than an update, I also took the opportunity
to change buffer size variables from "long" to "size_t", and normalized
return values to int (some were using bool, which is common in the VM but
was mixed in the zip code).  Failure messages are now all LOGW with the
word "Zip" up front (didn't want to change log tag away from "dalvikvm").

Also, removed a not-quite-right check in the "map part of a file" code,
and clarified that the file offset is absolute.

For bug 2620103.

Change-Id: I745fb15abb541376f467969ffe422222676f1e5f
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix windows SDK build.</title>
<updated>2009-11-24T00:12:39+00:00</updated>
<author>
<name>Andy McFadden</name>
<email>fadden@android.com</email>
</author>
<published>2009-11-24T00:12:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/LineageOS/android_dalvik/commit/?id=518925b0103405fd0fa03cde1b9e58acf76a6a64'/>
<id>518925b0103405fd0fa03cde1b9e58acf76a6a64</id>
<content type='text'>
Broken by 96516932f1557d8f48a8b2dbbb885af01a11ef6e.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Broken by 96516932f1557d8f48a8b2dbbb885af01a11ef6e.
</pre>
</div>
</content>
</entry>
<entry>
<title>Restore support for DEX on FAT.</title>
<updated>2009-11-17T00:48:09+00:00</updated>
<author>
<name>Andy McFadden</name>
<email>fadden@android.com</email>
</author>
<published>2009-11-17T00:14:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/LineageOS/android_dalvik/commit/?id=b5ebe47515c9750c7347557075d3714ba7671aa9'/>
<id>b5ebe47515c9750c7347557075d3714ba7671aa9</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Change the way breakpoints work.</title>
<updated>2009-11-16T20:37:25+00:00</updated>
<author>
<name>Andy McFadden</name>
<email>fadden@android.com</email>
</author>
<published>2009-10-29T00:39:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/LineageOS/android_dalvik/commit/?id=96516932f1557d8f48a8b2dbbb885af01a11ef6e'/>
<id>96516932f1557d8f48a8b2dbbb885af01a11ef6e</id>
<content type='text'>
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-&gt;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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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-&gt;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.
</pre>
</div>
</content>
</entry>
<entry>
<title>auto import //branches/master/...@140412</title>
<updated>2009-03-19T05:20:24+00:00</updated>
<author>
<name>The Android Open Source Project</name>
<email>initial-contribution@android.com</email>
</author>
<published>2009-03-19T05:20:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/LineageOS/android_dalvik/commit/?id=99409883d9c4c0ffb49b070ce307bb33a9dfe9f1'/>
<id>99409883d9c4c0ffb49b070ce307bb33a9dfe9f1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>auto import from //depot/cupcake/@135843</title>
<updated>2009-03-04T03:28:47+00:00</updated>
<author>
<name>The Android Open Source Project</name>
<email>initial-contribution@android.com</email>
</author>
<published>2009-03-04T03:28:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/LineageOS/android_dalvik/commit/?id=f6c387128427e121477c1b32ad35cdcaa5101ba3'/>
<id>f6c387128427e121477c1b32ad35cdcaa5101ba3</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
