OSDN Git Service
Dan Bornstein [Fri, 3 Dec 2010 01:07:38 +0000 (17:07 -0800)]
Merge "Make opcode 00ff be called "dispatch-ff"." into dalvik-dev
Dan Bornstein [Fri, 3 Dec 2010 01:07:04 +0000 (17:07 -0800)]
Merge "Inching closer to having extended opcodes in the vm." into dalvik-dev
Carl Shapiro [Fri, 3 Dec 2010 00:59:54 +0000 (16:59 -0800)]
Merge "Drive all root scanning by the root visitor." into dalvik-dev
Dan Bornstein [Fri, 3 Dec 2010 00:46:25 +0000 (16:46 -0800)]
Make opcode 00ff be called "dispatch-ff".
With this change, it's still implemented as an unused opcode, but
it's now ready for its new life!
Change-Id: Ic70d311704925067e47d87b657d133a792144e65
buzbee [Fri, 3 Dec 2010 00:24:14 +0000 (16:24 -0800)]
Merge "Replace dalvik test local mode with new host mode" into dalvik-dev
Dan Bornstein [Fri, 3 Dec 2010 00:05:51 +0000 (16:05 -0800)]
Inching closer to having extended opcodes in the vm.
Change-Id: If6578a0686ac8fe5e6d1a26509d8a5c748bed179
Carl Shapiro [Fri, 3 Dec 2010 00:16:01 +0000 (16:16 -0800)]
Drive all root scanning by the root visitor.
The root visitor has been used by the concurrent collector during the
re-mark phase. This change makes both the initial mark use the same
visitor routine and obsoletes all of the one-off markers scattered
throughout the runtime sources.
Change-Id: I08ea86d875f235cc628754240ad30ea5dfe2ce70
buzbee [Thu, 2 Dec 2010 23:37:06 +0000 (15:37 -0800)]
Replace dalvik test local mode with new host mode
To run the dalvik tests with host mode:
1. build with WITH_HOST_DALVIK=true
2. run-all-tests --host, or run-test <num> --host
Change-Id: Ic20df0b0720571b5a4ae11b5a1f6ce760d921d4b
Dan Bornstein [Thu, 2 Dec 2010 23:21:59 +0000 (15:21 -0800)]
Give the awk script its own file.
The embedded awk script totally dwarfed the shell script driver. It
was getting pretty ridiculous. (Ok ok, maybe the fact that this uses
awk in the first place is itself ridiculous.)
Change-Id: Ia53dbbff636eab7aeb44ff24013c62494ef86da0
Dan Bornstein [Thu, 2 Dec 2010 23:15:54 +0000 (15:15 -0800)]
Merge "Extremely minor cleanup." into dalvik-dev
Dan Bornstein [Thu, 2 Dec 2010 23:15:21 +0000 (15:15 -0800)]
Extremely minor cleanup.
Change-Id: Ia302597d27773aa72f675509e9b4f844db65cc85
buzbee [Thu, 2 Dec 2010 23:14:51 +0000 (15:14 -0800)]
Merge "x86-mterp bug fix; support host mode in tests" into dalvik-dev
Dan Bornstein [Thu, 2 Dec 2010 20:45:00 +0000 (12:45 -0800)]
Rename some instruction/opcode types and utilities.
A lot of this is more about properties of opcodes as opposed to
inspecting instructions per se, and the new naming attempts to
make it clear what is being queried and what sort of data is being
returned.
Change-Id: Ice6f9f2ebf4f1cfa8c99597419aa13d1134a33b2
Andy McFadden [Thu, 2 Dec 2010 22:49:30 +0000 (14:49 -0800)]
Merge "Fix monitor verification." into dalvik-dev
buzbee [Thu, 2 Dec 2010 22:29:16 +0000 (14:29 -0800)]
x86-mterp bug fix; support host mode in tests
A recent x86 housecleaning change introduced a bug in OP_FILLED_ARRAY.
Fixed that, plus hacked up dalvik test scripts to support host
mode operation (with --host)
Change-Id: Iaf8b1ab753f93fa344e64f984a3c4696433ec9aa
Carl Shapiro [Thu, 2 Dec 2010 22:04:22 +0000 (14:04 -0800)]
Get rid of QUIET_ZYGOTE_GC and make it the default.
Change-Id: Ib9af028cfa46ca6041d716085ed3a78ef591bbc8
Carl Shapiro [Thu, 2 Dec 2010 21:36:58 +0000 (13:36 -0800)]
Move a stray forward declaration of HeapSource to where it's needed.
Change-Id: I10dcc065c90ce40685b20a362470a32e213bf28f
Andy McFadden [Thu, 2 Dec 2010 21:13:22 +0000 (13:13 -0800)]
Fix monitor verification.
An earlier change inadvertently disabled the basic register type check
when the fancier checks were disabled. This restores the type check,
and replaces a "TODO: add an assert" with an actual assert.
Bug
3246598.
Change-Id: I842c392e1e3aa8525235d873726c840f39703ff3
Dan Bornstein [Thu, 2 Dec 2010 20:31:20 +0000 (12:31 -0800)]
Merge "Make the enums typedeffed as such." into dalvik-dev
Dan Bornstein [Thu, 2 Dec 2010 18:35:48 +0000 (10:35 -0800)]
Make the enums typedeffed as such.
This makes these definitions C++-friendly. I also tried to clean up
and generally improve the documentation in this area. (Maybe you can
guess what's coming next.)
Change-Id: I76ab3087dcde5cc255288a993ec7b2963f2b733b
Elliott Hughes [Thu, 2 Dec 2010 18:32:19 +0000 (10:32 -0800)]
am
f0badd23: Merge "Fix dvmHumanReadableDescriptor("B")."
* commit '
f0badd239ba1d4a65adebcf2df100ec7e1e54786':
Fix dvmHumanReadableDescriptor("B").
Elliott Hughes [Thu, 2 Dec 2010 18:26:57 +0000 (10:26 -0800)]
Merge "Fix dvmHumanReadableDescriptor("B")."
Elliott Hughes [Thu, 2 Dec 2010 00:59:21 +0000 (16:59 -0800)]
Fix dvmHumanReadableDescriptor("B").
dvmHumanReadableDescriptor was failing for primitive scalars in
libdvm_assert.so --- there was an assertion that wasn't true,
because we wouldn't have copied the ';' into the result (in the
other cases, we'd copy the ';' and then overwrite it).
This patch rewrites dvmHumanReadableDescriptor to be a little
less tasteless, removes the asserts, behave better when out of
memory, and to include unit tests (currently only runnable on
the device).
Bug:
3245572
Change-Id: I57b06c774a5bc61c2d374cce6285553c3c5f388b
Carl Shapiro [Thu, 2 Dec 2010 03:51:36 +0000 (19:51 -0800)]
Fix the typing of the assert macro as required by C++.
Change-Id: Iff70db8bf4f1ae8d1c4abbe565fa7993b0fe0df9
Carl Shapiro [Thu, 2 Dec 2010 03:32:05 +0000 (19:32 -0800)]
Move reference processing next to its implementation.
With this change, all of the reference processing now happens in the
same module. As such, we can make all of the implementation routines
static.
Change-Id: If3f1ff2e48f49b57b75cfc9d0af61ad892435c47
Carl Shapiro [Thu, 2 Dec 2010 03:33:11 +0000 (19:33 -0800)]
Merge "Return the value at the top of the mark stack straight away." into dalvik-dev
Carl Shapiro [Thu, 2 Dec 2010 02:54:19 +0000 (18:54 -0800)]
Return the value at the top of the mark stack straight away.
Change-Id: I9ce87b1e72bb3e8a0b876ab9ba05569260cd93e8
Dan Bornstein [Thu, 2 Dec 2010 01:02:26 +0000 (17:02 -0800)]
It's "opcode" not "opCode".
Similarly "Opcode" not "OpCode".
This appears to be the general worldwide consensus on the matter. Other
residents of my office didn't seem to mind one way or the other how it's
spelled in our code, but for whatever reason, it really bugged me.
Change-Id: Ia0b73d19c54aefc0f543a9c9451dda22ee876a59
Dan Bornstein [Thu, 2 Dec 2010 00:34:22 +0000 (16:34 -0800)]
Rename OpCodeNames.c -> DexOpcodes.c.
Change-Id: I9e22543740129f4a8fd50ff246a165d6358ed9b5
Dan Bornstein [Thu, 2 Dec 2010 00:28:49 +0000 (16:28 -0800)]
Clarify the spec slightly.
And, importantly, fix a lingering naming issue.
Change-Id: I2b0d2008aae32679430910dfe5fa58a86f0a59df
Andy McFadden [Thu, 2 Dec 2010 00:17:24 +0000 (16:17 -0800)]
Merge "Minor tweaks." into dalvik-dev
Dan Bornstein [Thu, 2 Dec 2010 00:17:12 +0000 (16:17 -0800)]
Merge "Rename OpCode.h -> DexOpcodes.h." into dalvik-dev
Dan Bornstein [Wed, 1 Dec 2010 22:23:44 +0000 (14:23 -0800)]
Rename OpCode.h -> DexOpcodes.h.
Also incorporate the former contents of OpCodeNames.h. This is a small
attempt to increase naming consistency in libdex. There will be a bit
more to come, in a follow-up.
Change-Id: Ia7ab06042dde2e19eda02ef1fee72fb4260e899d
Andy McFadden [Mon, 29 Nov 2010 15:38:01 +0000 (07:38 -0800)]
Minor tweaks.
Use dexOpCodeFromCodeUnit instead of (*insns & 0xff). (Not strictly
necessary in its current incarnation, but the code will soon be checking
opcode flags.)
Mark some local functions "static".
Make instruction widths >= 65536 a warning rather than an error. I
don't think you can get there with converted Java bytecode because of
the method size limit, but it's possible in directly-generated DEX.
Change-Id: Ic9714b855c606f8b5c618793b271436e1c2cdc44
Brian Carlstrom [Wed, 1 Dec 2010 22:04:47 +0000 (14:04 -0800)]
am
33dab964: Improve "No new threads in -Xzygote mode" message to include thread name.
* commit '
33dab964ac38c05472b734a2d36f6a2aacf9b731':
Improve "No new threads in -Xzygote mode" message to include thread name.
Brian Carlstrom [Wed, 1 Dec 2010 21:46:50 +0000 (13:46 -0800)]
Improve "No new threads in -Xzygote mode" message to include thread name.
Change-Id: I5335d86dc1e4cd3f7fd4270ff1f10cdc70f87e92
Dan Bornstein [Wed, 1 Dec 2010 20:30:21 +0000 (12:30 -0800)]
Add more "extended opcode" structure to libdex.
Although we don't yet generate any of the extended opcodes, this
change makes it a bit easier to add them.
In particular, we now differentiate between the raw opcode in a code
unit and an associated "packed opcode number." The packed opcode space
is densely populated in the range 0x000-0x1ff (though there will still
be a few unused slots), whereas the raw opcode values are sparse
throughout the range 0x0000-0xffff.
The OpCode enum is redefined/clarified to have packed, not sparse,
opcode values.
Change-Id: Ie3208a258648fbf044d344646f66c49ad24c31b2
buzbee [Wed, 1 Dec 2010 11:43:41 +0000 (03:43 -0800)]
am
94a6213f: am
b83b4c88: am
ebcd8646: Fix for Issue
3161543 - Remove stray line of code in JIT
* commit '
94a6213f5693c3cd994f9734c6a085003692a5ba':
Fix for Issue
3161543 - Remove stray line of code in JIT
buzbee [Wed, 1 Dec 2010 11:36:44 +0000 (03:36 -0800)]
am
b83b4c88: am
ebcd8646: Fix for Issue
3161543 - Remove stray line of code in JIT
* commit '
b83b4c8876262cac96cf65c4cc27f83174b5bd00':
Fix for Issue
3161543 - Remove stray line of code in JIT
Brian Carlstrom [Wed, 1 Dec 2010 06:29:11 +0000 (22:29 -0800)]
am
a1d0e5ed: Merge remote branch \'goog/dalvik-dev\' into dalvik-dev-to-master
* commit '
a1d0e5ed9c6879d29382d0bdb287c9a9a2234127':
Dan Bornstein [Wed, 1 Dec 2010 06:14:50 +0000 (22:14 -0800)]
Add a link to the dex-format doc.
For ease of clicking around when browsing and easier discoverability
in general.
Change-Id: Ia50507df454dd65526e99ef14194c310bb11edb1
Carl Shapiro [Wed, 1 Dec 2010 05:19:01 +0000 (21:19 -0800)]
Merge "Remove excess generality from the bitmap sweep walking routine." into dalvik-dev
Carl Shapiro [Wed, 1 Dec 2010 04:55:32 +0000 (20:55 -0800)]
Remove excess generality from the bitmap sweep walking routine.
The bitmaps that are passed to the sweep walking routine always have
the same base, bitsLen, and max values. As such, there is no need to
account for situations where these values may be different. This is
guarnateed because bitmaps being swept are actually private copies of
the global bitmaps which are initialized with common parameters.
Furthermore, the sweep callback does not change the max values, so we
do not need a clean-up loop to accomodate changes to max. The sweep
routine operates on garbage objects and therefore has no need to set
bits in a bitmap and, by extension, update the max value.
Also eliminated was an obsolete TODO regarding the unrolling of a
loop. We will leave that class of optimization to the compiler.
Change-Id: Iff6ede3d0ac68f88d381a06911fb6bd9cada926d
Brian Carlstrom [Wed, 1 Dec 2010 01:25:51 +0000 (17:25 -0800)]
Merge remote branch 'goog/dalvik-dev' into dalvik-dev-to-master
Dan Bornstein [Wed, 1 Dec 2010 00:46:20 +0000 (16:46 -0800)]
Bring 00x and 20bc into the fold.
Change-Id: I12fde7eb665c9f3b75684018457f9464b0990156
Dan Bornstein [Wed, 1 Dec 2010 00:29:42 +0000 (16:29 -0800)]
Explain a bit.
Change-Id: I845f34924249b6c5f34ad9ef7b9ebd3bc44f1aac
Dan Bornstein [Tue, 30 Nov 2010 22:58:53 +0000 (14:58 -0800)]
invoke-direct-empty doesn't actually invoke anything.
Update bytecode.txt as well as a couple bits in the JIT in recognition
of this fact.
Change-Id: I989556d39b40a879021eaf841404e015076073be
Dan Bornstein [Tue, 30 Nov 2010 22:31:07 +0000 (14:31 -0800)]
Merge "Punch opcode info access from libcore to the vm." into dalvik-dev
Andy McFadden [Tue, 30 Nov 2010 21:55:44 +0000 (13:55 -0800)]
Merge "Fix DexFile cookie check." into dalvik-dev
Dan Bornstein [Tue, 30 Nov 2010 20:21:28 +0000 (12:21 -0800)]
Punch opcode info access from libcore to the vm.
I looked at doing this as a native file in libcore, but that seemed to
pull in too many dependencies.
Change-Id: I1753b9b78bc593b9467a877a5fea0ba5d5161cfe
Andy McFadden [Tue, 30 Nov 2010 19:29:51 +0000 (11:29 -0800)]
Fix DexFile cookie check.
We use a "cookie" rather than just accepting a raw pointer so that the
VM doesn't crash if something weird gets passed in. Unfortunately the
cookie verify function was dereferencing the cookie to compute a value
for the hash table lookup, defeating the purpose. Since we don't deal
with opening the same DEX file in a constructive way, we can just take
the low part of the pointer itself and use that as the hash. (Hashing
isn't really necessary given the number of DEX files we expect to have
open; mostly it's just a convenient synchronized data structure.)
Bug
3238298
Change-Id: I1a545d4154b58159acdc21809b55b098c1419644
buzbee [Tue, 30 Nov 2010 19:48:56 +0000 (11:48 -0800)]
am
ebcd8646: Fix for Issue
3161543 - Remove stray line of code in JIT
* commit '
ebcd86461f9d61a1a5f25a8f6dde5a9ded5ba275':
Fix for Issue
3161543 - Remove stray line of code in JIT
buzbee [Wed, 3 Nov 2010 17:44:15 +0000 (10:44 -0700)]
Fix for Issue
3161543 - Remove stray line of code in JIT
During Change 22370 "Thumb/Thumb2 instruction selection rework"
line 1689 of Codegen.c was inadvertently duplicated and deposited
in the unrelated function genPuntToInterp() at line 1732.
genPuntToInterp() is rarely used and half of the time (if the
roll-back Dalvik PC was word-aligned) the error would have been
benign. However, if the Dalvik PC is not word-aligned, the result
would be a seg fault.
The fix is to remove the line of code.
Change-Id: Ib2ffb80059a639923c342a36797eb6c4995c5218
Dan Bornstein [Tue, 30 Nov 2010 18:45:02 +0000 (10:45 -0800)]
Clean up the opcode maintenance instructions.
Change-Id: Ic9d7fcfd234116099ef510e4339a9af0bc3fcb1d
Carl Shapiro [Tue, 30 Nov 2010 04:05:40 +0000 (20:05 -0800)]
Merge "Make the scan and the visit routines look more alike." into dalvik-dev
Carl Shapiro [Tue, 30 Nov 2010 01:24:50 +0000 (17:24 -0800)]
Make the scan and the visit routines look more alike.
This code shares a common origin but the implementations eventually
diverged. Alas, a forthcoming change may cause the scan routines to
permanently diverge from the visitor. Until that happens, we should
try to keep these routines as similar as possible.
Change-Id: Icf95b3bb4db704c8c7b4ab5aab84d9e091675bab
Dan Bornstein [Tue, 30 Nov 2010 00:54:40 +0000 (16:54 -0800)]
Merge "Code to generate libcore's Dalvik opcode code." into dalvik-dev
Dan Bornstein [Tue, 30 Nov 2010 00:47:09 +0000 (16:47 -0800)]
Code to generate libcore's Dalvik opcode code.
That was a mouthful.
Change-Id: I49152fdacbfa9593e7a95f5c120fea023b06d03b
Andy McFadden [Mon, 29 Nov 2010 22:35:48 +0000 (14:35 -0800)]
Merge "Verifier doc addendum." into dalvik-dev
Andy McFadden [Mon, 29 Nov 2010 22:23:46 +0000 (14:23 -0800)]
Verifier doc addendum.
Added note about hand-over-hand locking.
Change-Id: I9912e87f2585c3d225b93e037c04f9bf7e2cff14
jeffhao [Mon, 29 Nov 2010 18:47:28 +0000 (10:47 -0800)]
Merge "Fixed identification of objects in the Constant Collector." into dalvik-dev
jeffhao [Mon, 22 Nov 2010 19:53:41 +0000 (11:53 -0800)]
Fixed identification of objects in the Constant Collector.
The constant collector was improperly identifying constant objects,
keying off the move-result-pseudo instruction that gets the result
instead of the const-string/class instruction that generates the
result. The new code fixes this, so that the following block of code
detects that the const-string/class instruction can throw and will
properly ignore objects. Before, since move-result-pseudo can't throw,
it would skip past that block and try to collect the object anyway.
Change-Id: Ia0a8b07cbe5ece8f586581b86e8507d29a2b9e02
Andy McFadden [Wed, 24 Nov 2010 19:04:36 +0000 (11:04 -0800)]
CPU errata workaround.
Added #ifdefs to avoid the use of conditional loads on certain CPUs.
Bug
3216139
Change-Id: Ic014daf9de59a5697d68ac092724e17b2bcb0f42
Andy McFadden [Tue, 23 Nov 2010 22:42:55 +0000 (14:42 -0800)]
Merge "Check monitors during bytecode verification" into dalvik-dev
Ben Cheng [Tue, 23 Nov 2010 21:16:22 +0000 (13:16 -0800)]
am
abf3ef82: Fix off-by-1 bug in expandable bit vectors.
* commit '
abf3ef8206de388c7fc5f529f3ee05419475b651':
Fix off-by-1 bug in expandable bit vectors.
Andy McFadden [Sat, 13 Nov 2010 00:55:21 +0000 (16:55 -0800)]
Check monitors during bytecode verification
This adds tracking of monitor-enter and monitor-exit instructions
to the bytecode verifier. The idea is to guarantee that all lock
operations in a method are paired with unlock operations, whether
the method completes normally or abnormally.
Because of an issue in "dx", the code only verifies that the operation
stack has the right size at all times. We do not yet confirm that
the correct monitor is being unlocked by monitor-exit (the code is
present but ifdefed out). Also, when monitor verification is enabled,
we do not add the "can throw" path from monitor-exit to the work list,
potentially causing some "dead code" warnings. (Not coincidentally,
"dead code" checking is now only enabled in libdvm_assert.so.)
Overall increase in bootstrap verification time is about 9%, dropping
to 6% when the new checks are disabled.
The feature is currently disabled by default. -Xverifyopt:checkmon
enables it.
Bug
2534655
Change-Id: I0eac54ce2623fb1d48cc80889fcdb4fd69de3231
Ben Cheng [Tue, 23 Nov 2010 19:55:16 +0000 (11:55 -0800)]
Fix off-by-1 bug in expandable bit vectors.
Bug:
3224068
Change-Id: I6e5e956da380262e65cb1da9bcc51ba31f5b0d14
Elliott Hughes [Mon, 22 Nov 2010 21:14:23 +0000 (13:14 -0800)]
Add dvmHumanReadableDescriptor function, and use it.
We were abusing the fact that dvmDescriptorToDot, which is actually meant
for the class loading machinery, produces more readable output than a
regular descriptor. This patch adds a dvmHumanReadableDescriptor function,
switches all the relevant callers over to it, and and reuses the code that
was already in HprodClass.c.
This means we now say "java.lang.String[]" instead of "[Ljava.lang.String;".
Note that the old hprof code would have left "I" unchanged; I modified it
to translate "I" to "int" (et cetera). This was probably an oversight because
primitive scalars can't appear on the heap, so hprof had no need to format
those types (just arrays of primitives, which it got right).
Bug:
3216276
Change-Id: I63f32a2b020674dfa62ce198ff2699ec01857540
Dan Bornstein [Sat, 20 Nov 2010 01:27:18 +0000 (17:27 -0800)]
Merge "Protect against bogus arrays." into dalvik-dev
Elliott Hughes [Sat, 20 Nov 2010 01:25:57 +0000 (17:25 -0800)]
Merge "Better ArrayStoreException detail messages." into dalvik-dev
Dan Bornstein [Sat, 20 Nov 2010 01:13:13 +0000 (17:13 -0800)]
Protect against bogus arrays.
VMDebug.getInstructionCount() used to rely on the fact that its
argument would be passed in as non-null and be of an appropriate
length. Now, it's paranoid.
Change-Id: I8abb3d50227073cdd43007a7708987865651ec48
Elliott Hughes [Sat, 20 Nov 2010 00:35:05 +0000 (16:35 -0800)]
Better ArrayStoreException detail messages.
This fixes the portable interpreter, ARM, and x86. System.arraycopy was already
doing the right thing.
Bug:
3216051
Change-Id: I8a675eb62d6e7fd53a009f53ce8e34f93799b18c
Dan Bornstein [Sat, 20 Nov 2010 00:01:25 +0000 (16:01 -0800)]
Say kNumDalvikInstructions when appropriate.
In particular, use it instead of just saying 256, and similarly for
255. The number of opcodes will be changing soon.
Change-Id: Icc77120c2673968dddd6b4003f717245d46e4159
Dan Bornstein [Fri, 19 Nov 2010 22:15:17 +0000 (14:15 -0800)]
Kill off InsnFormat.nextUp().
This method used to be used during instruction selection, but hasn't
been used since the bytecode.txt file got updated to include format
chains.
Change-Id: Iee827c8b8008a88d56326aecf249299fe92101e1
Dan Bornstein [Fri, 19 Nov 2010 21:54:00 +0000 (13:54 -0800)]
Verification no longer requires startup/shutdown.
Change-Id: I634f8712295b8ed500092310a2f5bcdc9ff39112
Dan Bornstein [Fri, 19 Nov 2010 20:36:19 +0000 (12:36 -0800)]
Get rid of the copies of the opcode table pointers.
This inclduded fixing all the accessor functions to refer to the
global ones defined in InstrUtils.[ch] instead of taking separate
"table pointer" arguments.
This did end up adding a few more truly global references to some of
the code paths, particularly when performing dex optimization, so I
went ahead and measured the time to do a cold first-boot both before
and after the change (on real hardware). The times were identical (to
one-second granularity), so I'm reasonably comfortable making this
change.
Change-Id: I604d9f7882bad4245bb11371218d13b06c3a5375
Dan Bornstein [Fri, 19 Nov 2010 18:29:14 +0000 (10:29 -0800)]
Merge "Use the generated opcode info tables." into dalvik-dev
Elliott Hughes [Thu, 18 Nov 2010 23:23:49 +0000 (15:23 -0800)]
Better ClassCastException detail messages for x86.
Bug:
3210374
Change-Id: I5b6ff68b611f56276ef6e519511ed4dee22b0136
Elliott Hughes [Thu, 18 Nov 2010 20:21:10 +0000 (12:21 -0800)]
Merge "Include both types in ClassCastException detail messages." into dalvik-dev
Elliott Hughes [Thu, 18 Nov 2010 19:49:04 +0000 (11:49 -0800)]
Include both types in ClassCastException detail messages.
Along the lines of "java.lang.Exception cannot be cast to java.lang.String".
This is ARM and portable interpreter only. x86 will come later.
Bug:
3210374
Change-Id: I48719dbdb569bbc3be2a31d0e5507b8dc42101b3
Dan Bornstein [Wed, 17 Nov 2010 22:16:56 +0000 (14:16 -0800)]
Use the generated opcode info tables.
This is, once again, an intermediate step. Soon, I'm going to try to
remove need to keep and pass copies of the opcode info pointers all
over the place.
Change-Id: Ic6af849310b22ca604a7f2d18c78ff8d112459b4
Dan Bornstein [Wed, 17 Nov 2010 20:05:04 +0000 (12:05 -0800)]
Generate the tables in InstrUtils.c...almost.
This patch adds code to opcode-gen to generate the opcode info tables
currently built at vm start time, but they are left commented out for
now. I wanted to separate the work of getting these tables generated
from the work of getting those new tables hooked up, and this seemed
like a reasonable way to cut through the larger effort.
To be clear, I've already verified that the data in the new
pregenerated tables matches what's in the status quo.
Change-Id: Ie73dc6c6a5721e8f714f845c97b5338141995770
Dan Bornstein [Tue, 16 Nov 2010 23:54:10 +0000 (15:54 -0800)]
Generate the contents of OpCodeNames.c.
This was another one that was pretty easy to add to opcode-gen. I did
end up tweaking opcode-gen to make it obvious that the two forms of
name are different by more than just upper vs. lower case, especially
because I duplicated the original distinction of the optimized opcodes
having extra prefix characters in their human-oriented names but not
in the names when used as programming constants.
Change-Id: I5062442540d26318914964bd2722cc32380b19ca
Dan Bornstein [Tue, 16 Nov 2010 23:07:38 +0000 (15:07 -0800)]
Merge "Generate most of OpCode.h using opcode-gen." into dalvik-dev
Elliott Hughes [Tue, 16 Nov 2010 22:01:41 +0000 (14:01 -0800)]
Merge "Improve error messages for bad modified UTF-8 strings passed to JNI functions." into dalvik-dev
Elliott Hughes [Tue, 16 Nov 2010 19:46:50 +0000 (11:46 -0800)]
Improve error messages for bad modified UTF-8 strings passed to JNI functions.
Bug:
2567771
Change-Id: I8b67d13aaf0127f7eafffd69beb6f3b63729182f
Dan Bornstein [Tue, 16 Nov 2010 21:09:45 +0000 (13:09 -0800)]
Generate most of OpCode.h using opcode-gen.
This was the easiest bit to tackle in libdex. More to come!
Change-Id: I3f79039ce98951d694d2c896ee1c7a60b417bc49
Dan Bornstein [Tue, 16 Nov 2010 20:21:50 +0000 (12:21 -0800)]
Promote opcode-gen to the dalvik directory.
This tool will soon be used to generate code in libdex, so it
doesn't make sense for it to live in the dx directory.
Change-Id: I63ff7ccceac08fbe314fb0782dc8f2b5d75d155a
Dan Bornstein [Sat, 13 Nov 2010 01:47:43 +0000 (17:47 -0800)]
Add all the optimized / runtime-only opcodes.
With this patch, the opcodes all have lines in bytecode.txt, but
it's still the case that nothing is being done to use the info in the
vm.
Change-Id: Icf25e0b3b5328bc4c034602fb1ec21741f86c6d5
Dan Bornstein [Sat, 13 Nov 2010 00:07:16 +0000 (16:07 -0800)]
Get rid of kInstrUnconditional.
Replace its use with an inline function dexIsGoto(flags), which uses
the existing flag bits kInstrCanBranch and kInstrCanContinue.
Change-Id: I84f533f619434ad0ad2831c147b50f6dc79b9928
Dan Bornstein [Fri, 12 Nov 2010 23:24:57 +0000 (15:24 -0800)]
Merge "Be more prepared for InstrUtils code generation." into dalvik-dev
Dan Bornstein [Fri, 12 Nov 2010 22:56:12 +0000 (14:56 -0800)]
Be more prepared for InstrUtils code generation.
This patch removes "unconditional" as a flag (related change coming soon
to the vm code), and it prevents the dx codegen paths from doing anything
with optimized opcodes.
Change-Id: I0391d69d7956a564f3019f54d69a5522b8984ca0
Andy McFadden [Fri, 12 Nov 2010 22:32:29 +0000 (14:32 -0800)]
Merge "Progress toward structured lock checks" into dalvik-dev
Andy McFadden [Wed, 10 Nov 2010 15:55:14 +0000 (07:55 -0800)]
Progress toward structured lock checks
This change replaces the old array-of-arrays with an array of structs
that have a pointer to the register array. The struct will soon also
hold the additional data required to perform structured lock checks,
which confirm that every monitor-enter instruction is paired with
a monitor-exit. (Prototype fields have been added but are currently
unused.)
No change in behavior is expected, although verification of the
bootstrap classes does take about 5% longer now.
Bug
2534655
Change-Id: Idf25f9a72c5e6cdefe201eebe7c3f5a37064ffca
Dan Bornstein [Fri, 12 Nov 2010 20:51:35 +0000 (12:51 -0800)]
TypeRef, not ClassRef.
Old habits die hard. The things in question have been called TypeRefs
for quite a while now.
Change-Id: I77b0066a67c63b8e801ec62eb613f18a4812585a
Dan Bornstein [Fri, 12 Nov 2010 20:46:16 +0000 (12:46 -0800)]
Merge "Add info to the bytecode.txt file." into dalvik-dev
Dan Bornstein [Fri, 12 Nov 2010 20:15:46 +0000 (12:15 -0800)]
Add info to the bytecode.txt file.
This additional info should be enough to start generating the
tables used by InstrUtils, though this patch doesn't do anything
more than check the syntax of the new data.
Change-Id: Id823518d5a2edaea3397561a53070cc605ad4bf1
Andy McFadden [Fri, 12 Nov 2010 00:49:22 +0000 (16:49 -0800)]
Stop reporting negative widths.
At one point, returning a negative width for dexopt output was useful.
That stopped being the case a long time ago.
This also removes a bad assert that went into my previous checkin.
Change-Id: I18880c2316f5499a09dc479d271ca70b2a5be259
Carl Shapiro [Fri, 12 Nov 2010 01:21:37 +0000 (17:21 -0800)]
Merge "Remove unused logging macros." into dalvik-dev
Jing Yu [Fri, 12 Nov 2010 01:11:28 +0000 (17:11 -0800)]
am
72ef412b: Fix uninitialized variable warning(error).
* commit '
72ef412b56becfbdd54f239ea672a48b163ff1d2':
Fix uninitialized variable warning(error).