|
Authored by: indyandy on Sunday, May 20 2012 @ 03:19 PM EDT |
[Ed<br>
1 This appears to be weekly activity reports from Andy
McFadden from the day he joined Google until May 5 2008.<br>
2.
pdftotext and copy/paste from Evince both introduce many typos (sometimes 'd'
becomes 'c', 'J' becomes ']', some words disappear altogether...
<br>
I have tried to correct all these but if anything looks wrong the
error is probably mine.<br>
3. The reason for entering this into
evidence is probably this line:<br>
<br>
- Removed various
incarnations of the "J word" from the
SDK.<br>
<br>
]<br>
<br>
<br>
<br>
<br>
May 5, 2008<br>
<br>
Last
week:<br>
<br>
- Worked on Dalvik
VM:<br>
- Changed a bunch of labels in mterp so
gdb can unravel the stack<br>
when an instruction
breaks.<br>
- Fixed throw of incorrect exception
when trying to use a class that<br>
failed to initialize. Spent some
time chasing after the
class<br>
(PhoneUtils).<br>
-
Added an alternative form of assert() that is visible on the
device.<br>
- Added a DDM message that keeps the
DDMS thread list in sync when<br>
thread names
change.<br>
- Added additional JNI checks, for
static vs. virtual calling.<br>
- Cleaned up
dexlist output.<br>
- Chased down a bug in JDWP
exposed by IntelliJ 7.<br>
- Wrote up some notes about the Dalvik
bytecode verifier.<br>
- Three interviews (two phone screens, one
on-site).<br>
<br>
This week:<br>
<br>
-
Continuing with the misc fixes.<br>
<br>
Apr 28,
2008<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Finished up the
"circular buffer with last N allocations"
feature.<br>
Over to xav for UI
work.<br>
- Fixed some issues found by security
team.<br>
- Moved VM's Zip implementation into libdex to
remove dependencies<br>
on C++ and libutils.<br>
-
Various minor fixes.<br>
-Tracked down a problem with stat() in
wrapsim that, for some reason,<br>
only surfaced now.<br>
-
Spent a day as the chairperson of a slotting/promotion
committee.<br>
<br>
This
week:<br>
<br>
-Mise features/bugs.<br>
-
Interviews.<br>
<br>
Apr 21,
2008<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Got part of the
"circular buffer with last N allocations" feature
working.<br>
- Changed the "backward
branch" test a few times to deal with<br>
trivial infinite
loops. (The trick was to get correct behavior<br>
without reducing
performance.)<br>
- Spent a bunch of time figuring out how
to get gdb backtraces to<br>
work correctly with the asm interpreter.
Largely succeeded.<br>
- Tried to do something clever with
DEX-truncation bus errors;<br>
failed due to limitations in
debuggerd.<br>
- Fixed a race condition in the simulator's system
property handling.<br>
- Prepped for promotion/slotting
committee.<br>
<br>
This week:<br>
-
Promotion/slotting committee (chairperson)<br>
- Finish up
"last N allocations" feature.<br>
<br>
Apr
14, 2008<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Fixed some JNI issues (tighten
arg checking in CheckJNI, ensure<br>
class init for alloc calls)
.<br>
- Corrected mterp {float,double}-to-int behavior for
inf/-inf/NaN.<br>
- Fixed some bugs in
"mterp" that danfuzz found when he
split<br>
HelloWorld into regression tests.<br>
-
Added "-Xdexopt:none" mode.<br>
- Added
threadCpuTimeNanos for Noser performance evaluations.<br>
-
Various minor fixes (simplify "interrupt should throw",
ignore<br>
HeapWorker watchdog when debugger attached, follow
execution-mode<br>
property in TouchDex, etc) .<br>
- Helped
various people track down various bugs.<br>
<br>
This
week:<br>
<br>
-Work on "recent allocation
display" feature.<br>
<br>
Apr 7,
2008<br>
Last week:<br>
- Worked on Dalvik
VM:<br>
- Finished up deadlock predictor. Announced
availability.<br>
- Added validation of UTF-8 strings to
CheckJNI.<br>
- Worked on an array annotation
bug.<br>
- Investigated app native heap usage (for
jparks).<br>
- Worked on performance
reviews.<br>
<br>
This week:<br>
<br>
-
Fix bugs.<br>
- Cause trouble.<br>
<br>
Mar 31,
2008<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- More code reviews and performance
checking for DEX format changes.<br>
- Spent a bunch of time
helping others track down bugs. Filed a few.<br>
- Worked
on deadlock prediction.<br>
- Fixed a long-standing bug in
JNI field access.<br>
- Corrected bytecode verifier's
register merge code.<br>
- One
interview.<br>
<br>
This
week:<br>
<br>
- Finish up bytecode
verifier.<br>
<br>
Mar 24,
2008<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Spent a couple of days keeping
pace with danfuzz' changes to the<br>
VM. Wrote additional
performance and correctness tests.<br>
- Enabled allocation
limit feature. Added a global allocation limit<br>
feature for
regression tests.<br>
- Made a little progress on the
deadlock prediction feature.<br>
- Explored the relationship between
memory access patterns and<br>
benchmark
inconsistency.<br>
- (Away on vacation
Friday)<br>
<br>
This week:<br>
<br>
-
Continue with deadlock prediction.<br>
<br>
Mar 17,
2008<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Added a DDM message that
retrieves the stack trace of an arbitrary thread.<br>
-
Hunted down an issue involving relative paths in the bootstrap class
path.<br>
- Fixed thread safety issues in
Java.lang.Thread<br>
- Tracked down and fixed a bunch of
minor bugs (annotation lookups<br>
on generated classes, improper
throw of InterruptedException,<br>
HeapWorker thread release, non-EABI
long handling, verification of<br>
null array references, ...
).<br>
- Worked with danfuzz on DEX format
changes.<br>
- Helped track down a library loading
issue.<br>
<br>
This week:<br>
<br>
-
(End cf M6, start of SC1.)<br>
- Work on deadlock
detector.<br>
<br>
Mar 10,
2008<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Added range checks to DEX code to
help prevent malicious crashes.<br>
- Worked with danfuzz on
method prototype representation changes.<br>
- Rewrote JNI
call bridge to work with danfuzz's "proto"
changes.<br>
- Updated a few forms of
"invoke" to perform a null reference
check.<br>
- Corrected Thread.sleep() behavior for
multi-year durations.<br>
- Worked around a TouchDex
issue.<br>
- (Out Friday)<br>
<br>
This
week:<br>
<br>
- Wrap up
M6.<br>
<br>
Mar 3, 2008<br>
<br>
Last
week:<br>
<br>
- Worked on Dalvik
VM:<br>
- Implemented various fundamental reflection calls
using "system" annotations.<br>
- Examined
finalizer activity.<br>
- Fixed a couple of surprisingly
long-lived debugger issues.<br>
- Made JNI global reference
limit concigurable.<br>
- Added per-thread allocation count
limits for regression testing.<br>
- Added a JNI stack
check.<br>
- Cleaned up android.os.SystemProperties.<br>
-
Added offset and size range checks to Zip archive code.<br>
- One
phone screen.<br>
<br>
This
week:<br>
<br>
-Continue with M6 bugs and feature
requests.<br>
<br>
Feb 25,
2008<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Enabled
"mterp" as the default
interpreter.<br>
- Finished implementing
annotations.<br>
- Started working on class
attribute reflection, e.g. method exception
lists.<br>
- Updated specs and source comments to
reflect change to 5-arg invoke.<br>
- Tracked down
a bug that would cause a VM crash if you tried to<br>
allocate huge
arrays with specific size values.<br>
- Wrote more
tests for annotations and class attributes.<br>
- (Monday was
holiday)<br>
<br>
This week:<br>
<br>
-
Finish class attribute reflection.<br>
- Continue Dalvik feature
creep.<br>
<br>
Feb 19,
2008<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Got a chunk of annotations
working.<br>
- Changed Android runtime to get bootclasspath from env,
removlng a<br>
bad hack in the process.<br>
- Chased after
some system bugs, notably the "ascii crash" failure
and<br>
the "gdb frame base" issue.<br>
-
One interview and one phone screen.<br>
<br>
This
week:<br>
<br>
-Finish
annotations.<br>
<br>
Feb 11,
2008<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Integrated Dalvik
instruction changes from the vacationing danfuzz<br>
into the main
branch.<br>
-Updated "mterp" to
handle new/removed instructions. Spent some<br>
time making the
entry/exit code faster.<br>
- Finished the last
bit of C->asm conversions for mterp. Announced<br>
mterp to
the group, encouraging everyone to try it.<br>
-
Fixed an interface class merge bug in the verifier.<br>
- Created some
Java annotation test classes.<br>
- Spent a few hours chasing the
"ascii crash" bug.<br>
<br>
This
week:<br>
<br>
- Implement
annotations.<br>
<br>
Feb 4,
2008<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Checked in mterp and the Dalvik
"exerciser". Ran performance
comparisons.<br>
- Altered Thread.interrupt() handling to
avoid inappropriate exceptions.<br>
- Added feature allowing
test code to enumerate classes in a DEX file.<br>
- Added
workaround for Eclipse debugger flaw.<br>
<br>
This
week:<br>
<br>
- Update mterp to track recent changes in
DEX.<br>
- Start on annotations.<br>
<br>
Jan 28,
2008<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Fixed a race condition between
System and ClassLoader.<br>
- Worked on
mterp.<br>
- Select JDWP transport based on build
configuration.<br>
- Two interviews.<br>
- (Monday was
holiday)<br>
<br>
This week:<br>
<br>
-
Wrap up mterp.<br>
<br>
Jan 22,
2008<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Implemented VM portion of
Java.lang.reflect.Proxy.<br>
- Implemented Harmony-style
VMStack.getClasses() and Class .getStackClasses().<br>
-
Fiddled with asm interp.<br>
- Two
interviews.<br>
<br>
This
week:<br>
<br>
- Fix up stuff for
M5.<br>
<br>
Jan 14, 2008<br>
<br>
Last
week:<br>
<br>
- Worked on Dalvik
VM:<br>
- Rearranged the way profiling is handled. Made
instruction<br>
counting always available.<br>
-
Worked with veenstra to get Java methods listed ln emulator
traces.<br>
- Checked in some Dalvik
VM<br>
- Added official Android copyright notices to all of
the VM code.<br>
- Fixed implementation of
"not-long", one of our instructions that<br>
has
apparently never, ever been executed.<br>
- Added for
multiple JDWP transports, paving the way
for<br>
dt_android_adb.<br>
- Fixed a couple of bugs in
simulator wrapper.<br>
<br>
This
week:<br>
<br>
- Implement
Java.lang.reflect.Proxy.<br>
- Update
OKRs.<br>
<br>
Jan 7,
2008<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik mterp.<br>
- One interview.<br>
- (Short
week due to New Year holiday)<br>
<br>
This
week:<br>
<br>
- Continue work on mterp.<br>
-
Work with veenstra to finish up Java/native profiling
integration.<br>
<br>
Jan 2,
2008<br>
<br>
Last week:<br>
<br>
-
(Holiday vacation)<br>
<br>
This
week:<br>
<br>
- Work on
mterp.<br>
<br>
Dec 27,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Worked on
"mterp".<br>
- Corrected reflection access
check on protected fields.<br>
- Did some more directory
renaming.<br>
- One interview candidate
lunch.<br>
<br>
This week:<br>
<br>
-
(Christmas holiday + two vacation days)<br>
<br>
Dec 17,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Split DEX file access code out
into a static library. Shifted<br>
lots of code
around.<br>
- Added ability to run
"dexdump" on a Jar/apk/zip with
"classes.dex" inside.<br>
- Added
"dexlist" utility to list methods found in a DEX
archive.<br>
- Added API for Dalvik-level instruction
counting.<br>
- Changed internal exception throws to use
"descriptor" form of class name.<br>
-
Added additional access check on protected field access through
reflection.<br>
- Stripped out some more simulator
cruft.<br>
- Started learning
Python.<br>
<br>
This week:<br>
<br>
-
Work on asm version of interpreter.<br>
<br>
Dec 10,
2007<br>
<br>
Last week:<br>
<br>
-
Finished up filename remapping in simulator.<br>
- Added
"fake" device entry for /sys/android_power
entries.<br>
- Removed last bit of sim-specific stuff in
libhardware.<br>
- Added touch-screen support to
simulator.<br>
- Added system property to enable Java language
assertions in Dalvik.<br>
Added support for class/package name in
-ea/-da.<br>
- Fixed a bug in Dalvik that could try to execute code in
an<br>
uninitialized class when throwing an exception from
JNI.<br>
- Started on Dalvik instruction count
reporting<br>
<br>
This week:<br>
<br>
-
Finish up instruction count mechanism.<br>
- Start on asm interpreter
for Dalvik?<br>
<br>
Dec 3,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Fixed a bug with
multiple re-initializations of a class that fails to
load.<br>
- Fixed a bug with null references in
reflection code.<br>
- Corrected float-to-int
conversions.<br>
- Investigated "can't
create 764 threads" issue.<br>
- Created an alternative
implementation of system properties for simulator.<br>
- Worked on
transparent filename remapping in simulator.<br>
- Renamed a couple of
maJor directories in the source tree.<br>
- (one
interview)<br>
<br>
This
week:<br>
<br>
- Finish sim filename
remapping.<br>
- Work on Dalvik
stuff.<br>
<br>
Nov 26,
2007<br>
<br>
Last week:<br>
<br>
- Got
basic set of fake drivers (display, input, logging) working
with<br>
simulater. Also implemented "vibrating
notification mechanism".<br>
- Removed a bunch of
sim-specific code.<br>
- Fixed a bug in JNI local
references<br>
- Chased down an incorrect exception thrown from native
code when<br>
''inflate'' sees bad data.<br>
- (Out
Thursday/Friday for Thanksgiving)<br>
<br>
This
week:<br>
<br>
- Continue work on sim, notably system
properties and filename remapping.<br>
<br>
Nov 19,
2007<br>
<br>
Last week:<br>
<br>
-
Celebrated the public launch of the Android SDK.<br>
- Read an
unhealthy number of blogs, news articles, and press releases.<br>
-
Worked on simulator evolution:<br>
- Moved simulator
communication channel out of runtime and into preload
lib.<br>
- Got ''fake device'' infrastructure
working.<br>
- Got most of /dev/graphics/fbO, /dev/ttyO, and
/dev/input/eventsO working.<br>
- Chased after the "Binder
thread explosion" bug.<br>
<br>
This
week:<br>
<br>
- Finish up
/dev/input/eventsO.<br>
- Write /dev/log/*.<br>
- Start on
filename substitution.<br>
<br>
Nov 12,
2007<br>
<br>
Last week:<br>
<br>
-
Reviewed patent application.<br>
- Removed various incarnations of the
"J word" from the SDK.<br>
- Began simulator
overhaul: launch runtime in separate xterm, with<br>
LD PRELOAD
wrapper. Removed "ui-hardware" classes and
interfaces.<br>
- Fixed ''ls -R'' behavior.<br>
- Fixed bug
in dmtrace (nee jtrace) profiling.<br>
- Various minor changes to prep
for SDK launch.<br>
<br>
This
week:<br>
<br>
- Continue simulator
work.<br>
<br>
Nov 5,
2007<br>
<br>
Last week:<br>
<br>
-
Spent some time configuring a MacPro as a Linux build machine.<br>
-
Worked with ]parks and mathias to get the Linux simulator working
agaln.<br>
- Stripped out some simulator cruft.<br>
-
Started fiddling around with planned simulator updates.<br>
-
Last-minute stuff for M3.<br>
<br>
This
week:<br>
<br>
- Continue work on simulator
evolution.<br>
- Read lots of news
articles.<br>
<br>
Oct 29,
2007<br>
<br>
Last week:<br>
<br>
-
Added binary event log output to "logcat". Fixed the binary
logging<br>
implementation. Added a log tag map.<br>
-
Worked on Dalvik VM:<br>
- Reduced overhead when calling
into the interpreter.<br>
- Rearranged EXPORT_PC handling so
we do less work.<br>
- Made the main VM thread more generic,
so that it's possible for<br>
other threads to join() on the maln
thread.<br>
- Fixed bytecode verification when finding the
best superclass of<br>
two array classes.<br>
-
Show more detail when a finalizer throws an uncaught
exception.<br>
- Ensure existing processes blow up if you
replace one of the core<br>
Java classes.<br>
- Added
bytecode disassembly to "dexdump"
tool.<br>
<br>
This week:<br>
<br>
-
Continue with Dalvik stuff.<br>
- Look into making the simulator build
more device-like.<br>
<br>
Oct 22,
2007<br>
<br>
Last week:<br>
<br>
-
Resurrected stand-alone benchmark test app.<br>
- Worked on Dalvik
VM:<br>
- Improved verification of invoke-super. Removes
need for a runtime test.<br>
- Changed verification to
switch off of a propery, rather than an #ifdef.<br>
-
Reduced thread-local storage lookups by passing a pointer
around<br>
in performance-critical areas. Sped up JNI and
synchronized blocks.<br>
- Pushed for (and got) a decision on how
we're fixing our IPC mechanism.<br>
- Participated in a promotion
& slotting committee (29 candidates).<br>
<br>
This
week:<br>
<br>
- Continue Dalvik performance &
correctness changes.<br>
<br>
Oct 15,
2007<br>
<br>
Last week:<br>
<br>
-
Wrote up proposal for Binder driver replacement. Discussed with a few
people.<br>
- Helped track down some JNI global reference
leaks.<br>
- Pursued the "slow classloader" problem
(identified, partially<br>
addressed with a ZipEntry change,
redirected to core Java lib) .<br>
- Purused the "uncaught
exceptions don't work" problem (identified,<br>
redirected to
framework) .<br>
- Worked on Dalvik VM:<br>
-
Refactored the ''instanceof'' cache into a more general
mechanism.<br>
- Used the cache to speed up interface
calls.<br>
- Correctly handle virtual calls to abstract
methods (for<br>
out-of-sync Jar files).<br>
- Updated some
developer docs.<br>
<br>
This
week:<br>
<br>
- Promotion/slotting
committee.<br>
- Continue with Dalvik stuff.<br>
- Get IPC
replacement figured out.<br>
<br>
Oct 8,
2007<br>
<br>
Last week:<br>
<br>
-
Added feature in VM that copies stdout/stderr to log file.<br>
- Made
a couple minor changes to help others debug problems.<br>
- Switched
to IPC rewrite full time.<br>
- Wrote some code for the
previous design (not checked in) .<br>
- Became concerned
about scheduling and started thinking about<br>
alternate
plans.<br>
<br>
This week:<br>
<br>
-
Finalize what we're doing with IPC.<br>
<br>
Oct 1,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Added some static tests to Java
verifier. Rearranged failure<br>
logging to reduce output
size.<br>
- Enabled the Java bytecode
verifier.<br>
- Generalized the reference table mechanism.
Use the "expandable"<br>
mode for JNI global refs
and some GC heap stuff.<br>
- On thread detach, release all
monitors entered via the JNI<br>
MonitorEnter
function.<br>
- For JNI compliance, fail if somebody tries
to detach a thread with<br>
Java frames on the
stack.<br>
- Added JNI GetObJectRefType method. We should
be JNI 1. 6 compliant now.<br>
- Followed up on digit's TCP_NODELAY
discovery by running some<br>
experiments and then disabling Nagle in
DDMS and VM JDWP.<br>
- Spent some time with crazybob talking about
the IPC implementation.<br>
- Helped some people figure out issues
uncovered with -Xcheck:Jni.<br>
- Followed up on a couple of pioneer
issues ("bad" APK hosing boot<br>
process,
ServerSocket not closing properly).<br>
- Finished peer
reviews.<br>
<br>
This week:<br>
<br>
-
Investigate interface call speedup.<br>
- Clean up some stuff in the
VM.<br>
- Help out with memory leak
issues.<br>
<br>
Sep 24,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Implemented some slower but
EABI-correct register-access<br>
primitives in
interpreter.<br>
- Implemented a "fast
path" in the AR11 native JNI call bridge to<br>
make things
faster under EABI.<br>
- Fixed initialization of
Java.lang.Class.<br>
- Tweaked thread dumps to help with
system debugging.<br>
-Fixed some minor stuff in Java
libs.<br>
- Forced "check JNI" to be enabled. Dealt
with the ensulng hilarity.<br>
- Chased after a couple of memory
leaks.<br>
- Read through some "new IPC" stuff from
crazybob.<br>
- Worked on performance peer reviews
(six).<br>
- Mentor for Andy Stadler.<br>
- (Got caught up
after vacation)<br>
<br>
This
week:<br>
<br>
- Finish peer revlews.<br>
- Work
with crazybob on "new IPC".<br>
- Deal with whatever
comes up.<br>
<br>
Sep 17,
2007<br>
<br>
Last week:<br>
<br>
- (out
on vacation)<br>
<br>
This
week:<br>
<br>
- Get caught up on current
events.<br>
- Enable verification.<br>
- Write static
verification tests.<br>
- Work on perf review
stuff.<br>
<br>
Sep 10, 2007<br>
Add
snippet<br>
<br>
No snippet submitted<br>
Sep 4,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Made
"-Xverify:{none,remote,all}" do what they should.
Got<br>
verification working end-to-end.<br>
-
Rearranged optimization to respect "-Xdexopt:
{all,verified}".<br>
- Added some code to force
optimization+verification of class files<br>
when the system first
boots. This reduces the delay seen on first
app<br>
launch.<br>
- Worked on performance
revlew.<br>
- (Out Friday)<br>
<br>
This
week:<br>
<br>
- Monday was holiday, in Tuesday, away
Wednesday-Friday. Mostly<br>
trying not to break
things.<br>
- Out all next week too.<br>
<br>
Aug
27, 2007<br>
<br>
Last
week:<br>
<br>
- Worked on Dalvik
VM:<br>
- Rearranged class loading to perform verification
on<br>
non-pre-verified classes.<br>
- Enabled
"lite" verification; code flow analysis still too
slow.<br>
- Corrected handling of package-scope access
checks during opt/verify.<br>
- Added page access guards on
LinearAlloc regions to help track down<br>
an EABI memory corruption
bug.<br>
- Expanded set of JNI calls you're allowed to make
with an exception<br>
pending (1.6 spec).<br>
-
Updated Jni.h to remove some fancy new warnings.<br>
- Added
flags to disable signal catching.<br>
- Partially restored the
stand-alone performance tests.<br>
- Took some measurements with and
without mkf's SSA optimizations.<br>
- Spent some time examining the
performance of JDWP to the device and emulator.<br>
- Attended the
Android coming-out tech talk.<br>
<br>
This
week:<br>
- Work on performance revlew.<br>
- Improve
performance of verified code flow analysis.<br>
- Add some static
verification tests.<br>
<br>
Aug 20,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Finished development on bytecode
structural verifier. Added more<br>
detailed checks on short
integers. Corrected common superclass <br>
determination. Reduced
memory usage and improved speed.<br>
- Blocked optimization
and pre-verification of classes defined ln<br>
multiple DEX
files.<br>
- Eliminated VMThrowable class, folding it into
Throwable.<br>
- Added logging of exceptions thrown from
finalizers.<br>
- Added printLoadedClasses to help with
Zygote performance examination.<br>
- Fixed a bug that would
cause Eclipse to break on caught exceptions<br>
that straddled a
native call.<br>
<br>
This
week:<br>
<br>
- Continue static verification work.
Enable (warn-only mode) in live system.<br>
<br>
Aug 13,
2007<br>
<br>
Last week:<br>
<br>
-
(away on vacation)<br>
<br>
This
week:<br>
<br>
- Get caught up.<br>
- Finish
bytecode verification.<br>
- Address some memory profiling analysis
needs.<br>
<br>
Aug 6,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Continued work on verifier.
Code-flow analysis is complete, but<br>
we've decided to extend it
slightly beyond what the spec requires.<br>
- Fiddled with
exception logging to help track down excessive<br>
exception
activity.<br>
- Aligned array objects for
EABI.<br>
<br>
This week:<br>
<br>
-
Out on vacation all week.<br>
<br>
Jul 30,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Made good progress on bytecode
verifier.<br>
- Moved uncaught exception handling for the
main thread into the<br>
thread-detach code.<br>
-
Fixed Class.newinstance to do access checks properly
(Noser).<br>
- Fixed some reflection exception handling
problems exposed by jython.<br>
- One phone
screen.<br>
<br>
This week:<br>
<br>
-
Continuing on with the verifier.<br>
<br>
Jul 23,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Worked on bytecode
verifier.<br>
- Changed the way internal exceptions are
initialized to match<br>
expected behavior.<br>
-
Added JNI vfprintf() and abort() hooks.<br>
- Fixed up some
stuff from the Noser integration.<br>
- Filed several bugs on improper
use of JNI NewGlobalRef in our sources.<br>
- One
interview.<br>
<br>
This
week:<br>
<br>
- Continue work on
verifier.<br>
<br>
Jul 16,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Continued work on Java bytecode
verifier<br>
- Found last week's heisenbug (gcc-4.2.0
bug)<br>
- Worked with others to chase mise bugs (cheese-scrolling
throw-fest,<br>
spinning Spinner, Bitmap heap trasher, sluggish Mac
sim, nuance<br>
DetachCurrentThread)<br>
- (away on vacation
Friday)<br>
<br>
This week:<br>
<br>
-
Continue Java bytecode verifier<br>
<br>
Jul 9,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Worked on some classfile
verification stuff.<br>
- Added -Xverify
option.<br>
- Changed thread startup from spin-wait to
condition wait. Took<br>
some thread startup
timings.<br>
- Enabled __ memcmp16() and fixed some bugs in
String.compareTo()<br>
- Removed JamVM from the build.<br>
-
Spent a bunch of time chasing a Heisenbug (771329).<br>
- (Wednesday
was a holiday)<br>
<br>
This
week:<br>
<br>
- Continue chasing the
Heisenbug.<br>
- Work on Java class
verification.<br>
<br>
Jul 2,
2007<br>
<br>
Last week:<br>
<br>
-
Dalvik VM:<br>
- Various improvements to JDWP debug support
(simplified startup, "server~n")<br>
-
Fixed a bug in stack overflow exception handling.<br>
-
Changed frame depth calculation to improve single-step
execution<br>
performance.<br>
- Added some
additional tests to -Xcheck:jni.<br>
- Fixed a stall in DDM
initialization.<br>
-Fiddled with LD_ASSUME KERNEL for our goobuntu
systems.<br>
- Worked on my OKRs.<br>
<br>
This
week:<br>
<br>
- Start work on Java classfile
verifier.<br>
<br>
Jun 25,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Finished EABI-compliant JNI call
bridge (in ARM assembly).<br>
- Aligned long/double fields
on 64-bit boundaries by reshuffling field order.<br>
- Wrote
replacement 64-bit arg decoder for internal natives.<br>
-
Fixed a rare bug that hit when a debugger attached at the wrong
moment.<br>
- Fixed a bug that could lock up a VM if DDMS
was left connected for too long.<br>
- Reduced class
lookup-by-name calls by caching a reference to [Foo in
Foo.<br>
- Experimented with a JDWP speed improvement (which
didn't work).<br>
- Fixed an fd leak in DDMS.<br>
- One
interview.<br>
<br>
This
week:<br>
<br>
- Work on Dalvik.<br>
- Figure out
some OKRs.<br>
<br>
Jun 18,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
-Reduce native heap usage in Zip
archive support.<br>
- Fixed some VM startup ordering issues
that were blocking Noser.<br>
- Wrote a simple linear
allocator to hold bits and pieces of class files<br>
- Made
the VM-internal hash table load factor adJustable, and<br>
tweaked it
for better performance.<br>
- Allocate Java thread stacks
with mmap () instead of malloc () .<br>
- Started work on
ARM EABI support.<br>
- Chased down some JNI problems for Nuance that
turned out to be a bug<br>
in our dynamic linker.<br>
- One
interview.<br>
<br>
This
week:<br>
<br>
- Finish ARM EABI support in
Dalvik.<br>
<br>
Jun 11,
2007<br>
<br>
Last week:<br>
<br>
-
Added ZipFileRO, an extremely memory-conscious Zip archive access
class.<br>
- Replaced all device-side usage of ZipFile/ZipEntry
classes with ZipFileRO.<br>
- Evaluated correctness &
performance of mathias' __ memcpy16.<br>
- Remove system class loader
from app loader call sequence.<br>
- Worked on Dalvik
VM:<br>
-Implemented
Java.lang.reflect.Method.getExceptionTypes(), now that<br>
we have
exception lists in DEX.<br>
- One phone screen.<br>
- (Out
Thursday/Friday on vacation)<br>
<br>
This
week:<br>
<br>
-Continue with some Dalvik memory footprint
reduction and performance stuff.<br>
<br>
Jun 4,
2007<br>
<br>
Last week:<br>
<br>
-Moved
to a new office.<br>
- Worked on Dalvik VM:<br>
-
Improved spin-on-suspend handling.<br>
- Added support for
Java thread priorities. Added missing pieces
of<br>
Thread/ThreadGroup.<br>
- Added
AccessController and ProtectionDomain features, notably
the<br>
getStackDomains() method, for Noser security
work.<br>
- Explored alternative stack allocation
methods.<br>
- Fixed a JDWP bug.<br>
- Two
interviews (one cancelled shortly before it started) .<br>
- (Monday
was holiday)<br>
<br>
This
week:<br>
<br>
- Work on reduced-heap Zip
support.<br>
- (On vacation
Thursday/Friday)<br>
<br>
May 29,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on DalvikVM:<br>
- Sped up native
calls.<br>
- Wrote inline versions of
String.equals() and String.compareTo()<br>
(6-40x faster
than Java).<br>
- Changed DEX file section
alignment to 64-bit for pending EABI
changes.<br>
- Added "-Xss"
flag, use it to set default stack sizes.<br>
-
Rearranged the wait-for-suspend code.<br>
- Added TRACE_ALLOC_COUNTS
flag to jtrace. If set, the allocation<br>
counters are written into
the key file.<br>
- Added some misc fields (total calls, syscall
benchmark) to jtrace key header.<br>
- Met with patent
lawyers.<br>
- One interview.<br>
<br>
This
week:<br>
<br>
- Dalvik VM performance &
correctness.<br>
<br>
May 21,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Experimented with fixed register
assignments in interpreter core.<br>
- Tracked down and
fixed a bug in debugger method invocation.<br>
- Added
Java.lang.Thread constructor that takes a stack s1ze.<br>
Corrected
size bounds in VM.<br>
- In DEX optimizer, replace calls to
ObJect.<init> with instructions<br>
that are treated as
no-ops in standard interpreter.<br>
- Added an
"inline implementation" instruction. Wrote
inline<br>
versions of String.length() and
String.charAt().<br>
-Substantially rewrote
"efficient Java" document. Reformatted
entire<br>
document, edited existing sections, added new
material.<br>
<br>
This week:<br>
<br>
-
Continue performance work.<br>
<br>
May 14,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Enabled instruction rewriting in
the DEX optimizer. Improves the<br>
speed of virtual method calls and
accesses to instance fields.<br>
- Wrote a cache for the
results of ''instanceof'' and ''checkcast''<br>
operations.
Iterated until useful.<br>
- Moved DEX class name lookup
from a heap-allocated hash table to<br>
shared-memory
storage.<br>
- Changed a large number of functions from
"JValue blah ( ... ) to<br>
"void blah ( ... ,
JValue* pResult). This works out better on ARM, and<br>
improves the
performance of native methods returning void (of which we<br>
have
many) .<br>
- Added some JNI performance and correctness
tests.<br>
- Replaced the JNI native call bridge with a
hand-coded ARM assembly version.<br>
- Continued the quest for Java
readability.<br>
- One phone screen.<br>
<br>
This
week:<br>
<br>
- Jury duty. Assuming I'm not called
up:<br>
- Continue Dalvik<br>
- Add some
instrumentation features requested by
jparks/veenstra/etc.<br>
<br>
May 7,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Completed work on optimization of
virtual fields and instance methods.<br>
- Reworked
optimization mechanism to use fork+exec instead of just
fork.<br>
- Added exception-wrapping to
Java.lang.reflect.Method.invoke implementation.<br>
- Added
an instruction counter to get a sense for which instructions<br>
are
popular and which are going unused.<br>
- Made some minor
performance tweaks.<br>
<br>
This
week:<br>
<br>
- Continue Dalvik performance
work.<br>
- Finish Java readability review
work.<br>
<br>
Apr 30,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Reorganized DEX file loading so
that generation and caching of the<br>
byte-swapped version happens
generally (i.e. not merely as a<br>
side-effect of Jar extraction)
.<br>
- Compute and store inter-DEX dependency information.
Re-optimize<br>
files when a dependency
changes.<br>
- Examined VM loaded-classes hash table
performance.<br>
- Fixed a problem with debugger-initiated
method invocations that<br>
throw exceptions.<br>
- Worked
on DDMS:<br>
- Warp client selection when a VM is waiting
for a debugger.<br>
<br>
This
week:<br>
<br>
- Finish up Dalvik field/method access
optimizations.<br>
<br>
Apr 23,
2007<br>
<br>
- Worked on Dalvik
VM:<br>
- Removed most of the overhead associated with
debugger support from<br>
the interpreter core, resulting in a ~30%
speedup.<br>
- Made miscellaneous minor speedups
(strict-aliasing, interpreter<br>
size recuction)
.<br>
- Tried some performance enhancements that didn't
work.<br>
- Made some improvements to the performance
tests.<br>
- Worked on Dalvik VM: - Removed most of the overhead
associated with debugger support from the interpreter<br>
core,
resulting in a ~30% speedup. - Made miscellaneous minor speedups
(strict-aliasing, interpreter size<br>
reduction). - Tried some
performance enhancements that didn't work. -Made some improvements to the
performance<br>
tests.<br>
Apr 16,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
Spent a bunch
of time fiddling with the performance tests to try<br>
to get a
consistent set of meaningful numbers.<br>
- Improved
performance by inlining part of
class/field/method/string<br>
resolution.<br>
-
Moved some low-use values out of the Method struct. Reduced
heap<br>
usage by 12 bytes per method.<br>
-
Reduced the situations in which we initialize a class to
those<br>
specified in the VM spec.<br>
-
Reshuffled VM source tree, moving headers next to
sources.<br>
- Show debug info breakdown in
"dexdump -S".<br>
- Fixed a bug that
prevented strings in Object arrays from<br>
displaying nicely in the
debugger.<br>
- Worked on DDMS:<br>
- Changed
"Halt" button to call Runtime.halt() instead
of<br>
Runtime.exit (). Bypasses some of the exit
processing.<br>
- Cleaned up some code for a readability
review.<br>
- Wrote up OKRs.<br>
<br>
This
week:<br>
<br>
- Continue Dalvik VM performance
work.<br>
<br>
Apr 9,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Rewrote DEX file loading to
maximize use of shared memory,<br>
reducing native heap
requirements.<br>
- Fix a spin-on-suspend when a GC happens
while a profiled thread lS<br>
waiting to exit.<br>
- Worked
on DDMS:<br>
- Cosmetic touch-ups on heap
stats.<br>
- Added a "cause GC"
button.<br>
- Added space for native heap
info.<br>
- Provided a work-around for slow log window performance
under Mac OS.<br>
- Wrote a command-line Java performance measurement
tool.<br>
- Attended daily "aardvark" release
meetings.<br>
<br>
This week;<br>
<br>
-
Continue performance improvements,focusing on DEX file optimization
work.<br>
<br>
Apr 2,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Added "inflate"
support to classes.dex loading.<br>
- Investigated debugger
performance issues.<br>
- Corrected VM internal hash table
implementation.<br>
- Quick-reJect debugger connection
attempts when one is already connected.<br>
- When waiting
for a debugger, return after it has connected and<br>
been idle for a
set period (to allow it a chance to set breakpoints).<br>
- Worked on
DDMS:<br>
- Show tid, status, utime, and stime in the
"threads" panel.
Update<br>
periodically.<br>
- Chased after some
adb-related problems.<br>
- Reviewed and updated developer
documentation.<br>
Participated in
"aardvark" status meetings.<br>
- One phone
screen.<br>
<br>
This week:<br>
<br>
-
Work on Dalvik VM<br>
<br>
Mar 26,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on "ddms"<br>
- Finished hooking up
"preferences" items.<br>
- Added a color
key to the heap map.<br>
- Don't try to scan the device if
it's in the boot loader.<br>
- Started work on retrieving
per-thread CPU usage stats.<br>
- Worked on Dalvik
VM<br>
- Prefer new pthread_cond_timedwait_monotonic() for
ObJect.wait()<br>
- Allow global references table to
expand.<br>
- Implemented JNI direct byte buffer
calls.<br>
- Reduced the VM's debug-level log
output.<br>
- Implemented Java.lang.reflect.Field get/set
calls.<br>
- Fiddled with some VM options after the first
ever Dalvik<br>
performance review. Toned down paranoia on
''release'' builds to<br>
improve device
performance.<br>
<br>
Dalvik is now the default on
devices.<br>
<br>
This week:<br>
<br>
-
Finish per-thread CPU stats in ddms.<br>
- Dalvik VM performance
work.<br>
<br>
Mar 19,
2007<br>
<br>
Last week:<br>
<br>
- Work
on DDMS<br>
- Added preferences screens with JFace.
Implemented most of them.<br>
- Improved the network
I/0.<br>
- Refactored client list. Added "waiting
for debugger" icon.<br>
- Send the app name up when
it changes.<br>
- Fixed some ordering issues when running
Dalvik on the device.<br>
- Spent a day hunting down edge cases
exposed by attaching "Jdb" and<br>
letting the
system run.<br>
<br>
This
week:<br>
<br>
- Finish wiring up the DDMS
preferences.<br>
- Work on Dalvik VM (monotonic clock waits, global
ref table) .<br>
<br>
Mar 12,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on DDMS:<br>
- Added it to the build. Got it
working on Macs.<br>
- Added "debug selected
VM" feature.<br>
- Added skeletal heap panel UI for
dbort.<br>
- Changed reply routing to allow for generic
"fail" packet.<br>
- Added device screen
shot feature.<br>
- Added device command output capture;
used with
"dumpstate",<br>
"dumpsys",and
"logcat".<br>
- Fixed lots of little
things in the UI.<br>
- Added Java "assert"
statement support to both VMs.<br>
- In Dalvik VM: ignore breakpoints
and other events while executing<br>
code on behalf of the
debugger.<br>
- In Dalvik VM: treat JNI warnings as fatal errors (with
a to-be-added<br>
command-line option to mellow them out) Made
"Check JNI" the<br>
simulator
default.<br>
- Spent some time at the "Android boot
camp" dry run.<br>
- One
interview.<br>
<br>
This
week:<br>
<br>
- Continue work on
DDMS.<br>
<br>
Mar 5,
2007<br>
<br>
Last week:<br>
<br>
-
Added thread creation/death notifications to DDM.<br>
- Started work
on DDM server user interface. Spent most of the week on this.<br>
-
Added an "is debugger connected?" feature and a
"change JDWP listen<br>
port" feature to both
VMs.<br>
-Participated in ''client team sourcing
event''.<br>
- One interview.<br>
<br>
This
week:<br>
<br>
- Contine work on
DDM.<br>
<br>
Feb 26, 2007<br>
<br>
Last
week:<br>
<br>
- Worked on DDM:<br>
-
Got enough working to register Java "hello" message handlers
on<br>
both sides and exchange data.<br>
- Updated
debugger pass-through to recycle client connection when<br>
debugger
drops.<br>
- Added DDMS support to JDWP
code.<br>
- Added a couple of calls to our NIO
implementation.<br>
- Helped reed/abliss chase after some resource
leaks that presented as<br>
global reference table
overflows.<br>
- One phone screen<br>
- (Monday was
holiday)<br>
<br>
This week:<br>
<br>
-
Continue with DDM server and client.<br>
<br>
Feb 20,
2007<br>
<br>
Last week:<br>
<br>
-
Fixed a number of bugs in Dalvik and JamVM.<br>
- Added file info to
"jtrace" output.<br>
- Worked on DDMS. Currently
shuffling packets around with NIO.<br>
- One phone
screen.<br>
<br>
This week:<br>
<br>
-
Continue work on DDMS.<br>
<br>
Feb 12,
2007<br>
<br>
Last week:<br>
<br>
-
Implemented per-thread and default uncaught exception handlers
(in<br>
both JamVM and Dalvik VM) .<br>
- Worked on Dalvik
VM:<br>
- Added support for -Xrunjdwp/-agentlib:jdwp-
options.<br>
- Rearranged JDWP startup to allow
"suspend=y".<br>
- Worked on Dalvik Debug Monitor
design doc.<br>
- Started on Dalvik Debug Monitor server (ddms). Added
SWT to main build.<br>
<br>
This
week:<br>
<br>
-Continue work on
ddms.<br>
<br>
Feb 5,
2007<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Fixed bug in libffi that only
manifested on Linux/x86 with<br>
optimizations
enabled.<br>
- Implemented parts of
ClassLoader.getResource().<br>
- Added DEX-in-Jar support to
user-defined class loaders.<br>
- Corrected JNI
AttachCurrentThread behavior.<br>
- Corrected JNI FindClass
behavior to use system class loader rather<br>
than bootstrap. This
allows CLASSPATH to be used for the
initial<br>
class.<br>
- Check method return types
in -Xcheck:jni.<br>
- Chased after misc bugs people found
now that Dalvik is more widely used.<br>
- Added a few
things that the "mauve" test suite
wanted.<br>
<br>
This week:<br>
<br>
-
Implement "-Xrunjdwp" args.<br>
-Get
ClassLoader.getResource() working.<br>
- Continue to address Dalvik
issues as they arlse.<br>
<br>
Jan 29,
2007<br>
<br>
Last week:<br>
<br>
- Work
on Dalvik VM:<br>
- Added support for loading DEX files from
Zip archives to bootstrap<br>
class loader.<br>
-
Added local-reference abuse checking to -Xcheck:Jni. Fixed
a<br>
couple of problems it found, reported
others.<br>
- Added libffi, so we can use PowerPC
macs.<br>
- Announced general availability of Dalvik at group
meeting.<br>
- (Out sick most of
Friday)<br>
<br>
This week:<br>
<br>
-
Work on Dalvik VM.<br>
- Work on resource
loading.<br>
<br>
Jan 22,
2007<br>
<br>
Last week:<br>
<br>
-
Dalvik VM:<br>
- Finished work on initating class loaders in
Dalvik.<br>
- Replaced the hold-all "u8"
type with a union throughout the code.<br>
- Corrected some bugs in
the JDWP implementation in both VMs. Added<br>
some missing features
that IntelliJ required.<br>
- Spent most of Tuesday with visitors crom
Korea.<br>
- (Monday was holiday)<br>
<br>
This
week:<br>
<br>
-Roll Dalvik VM out to the soon-to-be adoring
masses.<br>
<br>
Jan 16,
2007<br>
<br>
Last week:<br>
<br>
-
Wrote a JNI calling convention converter. Ran it against
our<br>
sources, which used C-style JNI calls in C++
code.<br>
- Dalvik VM:<br>
- Reworked some VM
class loader innards.<br>
- Did most of the work required to
support initating class loaders.<br>
- Perf: write peer
revlews.<br>
- One interview.<br>
<br>
This
week:<br>
<br>
- Finish initiating class
loaders<br>
- Meet with some Java people.<br>
- Work on
Dalvik.<br>
<br>
Jan 8,
2007<br>
<br>
Last week:<br>
<br>
- More
jni.h tweaks, mostly to make JNIHelp.h work with either C or
C++.<br>
- Changed JamVM's RegisterNatives method to link methods
immediately,<br>
rather than on first use.<br>
- Override
the class loader in JNI FindClass while handling
JNI_OnLoad.<br>
-Fixed a couple of bugs in the JDWP
support.<br>
- Work on Dalvik VM:<br>
- Added
basic class loader support to VM. Added DEX file loading to<br>
Java
ClassLoader.<br>
- Added "lazy" JNI native
method binding by signature.<br>
- Hooked up local variable
table support for the debugger.<br>
- Improved debugger
object registry (fewer registrations, more<br>
appropriate data
structure).<br>
- One interview.<br>
- (four day
week)<br>
<br>
This week:<br>
<br>
-
Performance revlews.<br>
- Work on Dalvik
VM.<br>
<br>
Jan 2, 2007<br>
<br>
Two
weeks ago:<br>
<br>
- Enabled dynamic library loading in
JamVM and Dalvik VM. Corrected<br>
ClassLoader handling in JamVM per
spec.<br>
- Fixed some warnings found by -Xcheck:jni that I got tired
of looking at.<br>
- Created C++ inline version of JNI calls. The
thrill ride of the season.<br>
- (Friday was
holiday)<br>
<br>
<br>
One week
ago:<br>
<br>
- (off for entire
week)<br>
<br>
<br>
This
week:<br>
<br>
- Continue C++ JNI stuff.<br>
-
Continue System.loadLibrary work.<br>
- Continue ClassLoader work in
DalvikVM<br>
Two weeks ago: - Enabled dynamic library loading in JamVM
and Dalvik VM. Corrected ClassLoader handling in JamVM<br>
per spec. -
Fixed some warnings found by -Xcheck:jni that I got tired of looking at. -
Created C++ inline<br>
version of JNI calls. The thrill ride of the
season. - (Friday was holiday) One week ago: - (off for
entire<br>
week) This week: - Continue C++ JNI stuff. - Continue
System.loadLibrary work. - Continue ClassLoader work
in<br>
DalvikVM.<br>
Dec 27, 2006<br>
Add
snippet<br>
<br>
No snippet submitted<br>
Dec 18,
2006<br>
<br>
Last week:<br>
<br>
-
Worked on Dalvik VM:<br>
- Got basic shared library loading
working.<br>
- Reduced DEX file memory requirements by
deferring some pieces to<br>
load on demand.<br>
-
Added initialization of static final string constants, and
some<br>
reflection code needed to test it.<br>
-
Cleaned up strict-aliasing issues.<br>
- Ran some
performance evaluations to see how we were doing.<br>
-
Added more tests to -Xcheck:jni mode.<br>
- Updated jtrace code to
stall thread exits when a trace is running.<br>
This way we get thread
names and don't re-use thread IDs.<br>
- Switched system from using
Jam's "jni.h" to Dalvik's. Fixed the<br>
ensuing
C++ type clashes.<br>
- Wrote self-review.<br>
- One
interview.<br>
<br>
This
week:<br>
<br>
- Finish up shared library loading (both VMs
need work) .<br>
<br>
Dec 11,
2006<br>
<br>
Last week:<br>
<br>
-
Dalvik VM:<br>
- Reworked some mutex stuff to avoid GC race
conditions.<br>
- Reduced memory usage by loading Positions,
Locals, and Exceptions<br>
on demand only.<br>
-
Added a threaded-execution mode to the interpreter.<br>
-
Reserve some stack space so we can correctly handle
StackOverflowError.<br>
- Added internal obJect tracking to
ensure we don't GC obJects<br>
created by native VM
code.<br>
- Enabled threaded execution in JamVM.<br>
- One
interview.<br>
<br>
This
week:<br>
<br>
- Performance self-review.<br>
-
Continue work on Dalvik VM.<br>
<br>
Dec 4,
2006<br>
<br>
Last week:<br>
<br>
- Work
on Dalvik VM:<br>
- Added public/protected/package/private
access checks on method<br>
calls and field
accesses.<br>
- Added JNI local/global reference
tracking.<br>
- Added JNI
Push/PopLocalFrame.<br>
- Added debugger obJect
registry.<br>
- Chased after a spin-on-suspend
issue.<br>
- Added VM selection pop-up menu and a "check
JNI" checkbox to simulator.<br>
- One
interview.<br>
<br>
This
week:<br>
<br>
- Continue work on Dalvik
VM.<br>
<br>
Nov 27, 2006<br>
<br>
Last
week:<br>
<br>
- Dalvik VM:<br>
- Added
support for ''-Xcheck:jni'' and ''-verbose:jni''.<br>
-
Check JNI thread affinity, verify field type in Set*Field
calls,<br>
and watch for inappropriate activity between
"critical" calls.<br>
- Added
GetStringRegion/GetStringUTFRegion.<br>
- Spent a day digging into
Wonka.<br>
- (Out Thursday/Friday for
Thanksgiving)<br>
<br>
This
week:<br>
<br>
- Add JNI local/global reference tracking to
Dalvik VM.<br>
- Improve Dalvik debugger
support.<br>
<br>
Nov 20,
2006<br>
<br>
Last week:<br>
<br>
-
Spent some quality time with some newly-GPLed source code.<br>
-
Performance profiling (JamVM + Dalvik VM) :<br>
- Updated
jtrace to show class loader overhead.<br>
- Added memory
allocation counting.<br>
- Added wall-clock elapsed time to
jtrace "key" file.<br>
- Disabled
clock_gettime() on Linux desktop -- doesn't really work<br>
on
goobuntu.<br>
- Implemented a JDWP command that IntelliJ IDEA
required.<br>
- [ Reply to This | Parent | # ]
|
|
|
|
|