OSDN Git Service
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).
Carl Shapiro [Fri, 12 Nov 2010 01:09:12 +0000 (17:09 -0800)]
Remove unused logging macros.
Change-Id: Ie1a2bb96232677c02e08b6c8f75dc9cdf2c371d8
Carl Shapiro [Fri, 12 Nov 2010 00:39:58 +0000 (16:39 -0800)]
Reset the finger immediately after it becomes no longer useful.
Change-Id: Icdef2bb73289d12e9973898732ef9a17b0123d34
Dan Bornstein [Thu, 11 Nov 2010 20:26:58 +0000 (12:26 -0800)]
Add the new instruction formats.
This just adds new elements to the enum and adds code to InstrUtils
and dexdump which knows how to decode them.
In dexdump, I took advantage of the new index type table to simplify
how all the index-bearing instructions get dumped, to the point where
adding the new formats was really just a matter of picking the right
switch cases to add new labels to.
Change-Id: I9094b0d568e7c71ee237672bbea8c319274c6697
Jing Yu [Thu, 11 Nov 2010 19:48:23 +0000 (11:48 -0800)]
Fix uninitialized variable warning(error).
Change-Id: I10815b033199758976950b28af7cc412f093a7f5
Dan Bornstein [Thu, 11 Nov 2010 18:55:45 +0000 (10:55 -0800)]
Fix Thumb2 codegen.
My local build wasn't doing Thumb2. Unsurprising in retrospect.
Change-Id: I38ab4dc80e1115cf459f6d890c7d0eb2705fa7c9
Dan Bornstein [Thu, 11 Nov 2010 01:34:32 +0000 (17:34 -0800)]
Add a new index type table for instruction decoding.
This is in prep for -- recurring theme here -- adding the new extended
opcode formats. It turns out that we can avoid a lot of duplicated code
if we determine the type of thing referred to in index-bearing instructions
inside the general instruction decoder. To do so straightforwardly, this
means adding a new opcode info table and then passing it into the decoder.
Rather than add another argument to the decoder, I defined a struct to
contain all the info tables together, and a pointer to that can get passed
in.
I simplified the setting up of the info tables, too, so all the
allocation is handled within InstrUtils, rather than being (partially)
duplicated in a couple places. The only downside is that dexdump will
construct one more table than it actually needs, but given that
construction is quick and the table is only 256 bytes (though will
soon be growing to -- gasp! -- 294 bytes), I figure it's not such a
big deal.
Most of the files that changed only had edits for how to refer to these
info tables.
Change-Id: Ia6f1cb25da6e558ac90c6dd3af6bce36b82a6b4d
Dan Bornstein [Wed, 10 Nov 2010 19:26:52 +0000 (11:26 -0800)]
Simplify the instruction decoder.
The decoder for format 35mi was *mostly* identical to the one for
35c/35ms. The one place where it differed was in the allowing (or not)
of a fifth argument. I combined the two blocks and just added an
additional format check in the five-argument case. I ended up
rewriting the stuff to pull arguments into the args array, because
while the original loop at the core of it was attractively simple, the
extra stuff around it just made the code obscure. With this change,
the code just does switch(count) and has a nice little cascade.
While I was in the territory, I did a couple other minor cleanups.
Change-Id: Ib75d47eae92a91571445751789d56feeb4e0ca81
Dan Bornstein [Wed, 10 Nov 2010 01:15:10 +0000 (17:15 -0800)]
Reharmonize the implementation with the spec.
In particular, I altered the naming of some instruction format fields
as well as the names of instruction formats themselves, all in an attempt
to make the implementation be a more straightforward match of the spec.
This patch mostly changes comments to reflect the new harmonized
reality. The only "code-like" change is the renaming of kFmt3inline
and kFmt3rinline to kFmt35mi and kFmt3rmi (respectively), which is
what they're called in the spec.
Bonus: Added the new extended opcode instruction formats to
InstrUtils.h, though I left them commented out for now.
Change-Id: I0109f361c1e9b6f0308c45e8cda5320e9ad3060c
Dan Bornstein [Wed, 10 Nov 2010 01:14:36 +0000 (17:14 -0800)]
Merge "Pro-active pre-harmonization." into dalvik-dev
Dan Bornstein [Wed, 10 Nov 2010 01:04:53 +0000 (17:04 -0800)]
Pro-active pre-harmonization.
This is the same idea as my last change, except with the new
extended opcode formats. I also added a little more explanatory
text.
Change-Id: Iab9d1beb1ed445b94e72a438dfb83ea077c8c35b
Dan Bornstein [Wed, 10 Nov 2010 00:10:10 +0000 (16:10 -0800)]
Merge "Spec/implementation harmony." into dalvik-dev
Dan Bornstein [Tue, 9 Nov 2010 23:21:37 +0000 (15:21 -0800)]
Spec/implementation harmony.
I did two things here: (1) made the lettering for formats 35c and 35ms
match how things are actually implemented; and (2) formally defined
formats 35mi and 3rmi, to correspond to the inline linked formats
actually used in our current implementation.
In neither case does this change the meaning of the spec in any
substantive way. The first case is just about labels, and the second
case is just about (from the standpoint of the spec) a suggestion.
Change-Id: I6a6226a8cdd82ae4dcc43d342a9e9b98582cefd7
Carl Shapiro [Tue, 9 Nov 2010 23:39:07 +0000 (15:39 -0800)]
Merge "Allocate the mark stack as part of heap allocation." into dalvik-dev
jeffhao [Tue, 9 Nov 2010 23:33:22 +0000 (15:33 -0800)]
Merge "Added info for parallel dx switch "num-threads" to help message." into dalvik-dev
Carl Shapiro [Tue, 9 Nov 2010 23:21:07 +0000 (15:21 -0800)]
Merge "Expand away the QUIET_ZYGOTE_MONITOR macro." into dalvik-dev
Carl Shapiro [Tue, 9 Nov 2010 22:30:11 +0000 (14:30 -0800)]
Expand away the QUIET_ZYGOTE_MONITOR macro.
Change-Id: I74eac297597e8e7c9a13d03335f91cf289e060df
Carl Shapiro [Tue, 9 Nov 2010 22:27:02 +0000 (14:27 -0800)]
Allocate the mark stack as part of heap allocation.
Previously, the mark stack would be allocated and freed as part of a
garbage collection. This had two deficiencies. First, allocating the
mark stack requires a file descriptor to open the ashmem device. If
there are file descriptors free at the time of an garbage collection
the runtime is forced to abort. Second, it turns out that ashmem is
slow. I wrote a benchmark that evaluates the speed of various methods
for allocating memory 1e6 times in a tight loop. The results are
summarized below
madvise 2.
279357911
mprotect 3.
451385496
mmap MAP_ANONYMOUS 4.
408111572
mmap /dev/zero 14.
232635436
ashmem 35.
414886504
The madvise algorithm preallocated some virtual memory, advise the
pages needed during a garbage collection, and advised the same pages
not need afterward. It is not clear if this actually causes pages to
be made available to other processes or mappings in between garbage
collections.
The mprotect algorithm reserves some virtual memory and commit its
pages during a garbage collection and then uncommit its pages
afterward. This releases pages and, like all slower methods, runs the
risk of being unable to allocate those pages afterward if physical
pages are unavailable.
The mmap MAP_ANONYMOUS algorithm allocates and frees virtual memory
each iteration. This is surprisingly competitive with the methods
that preallocate memory and an order of magnitude faster than ashmem.
The mmap /dev/zero algorithm is similar to MAP_ANONYMOUS but allocates
anonymous memory through a file mapping. It is substantially more
expensive than MAP_ANONYMOUS.
The ashmem algorithm is what is currently used. It is also the
slowest method to allocate memory.
With this change, the madvise algorithm is used to allocate the mark
stack. Virtual memory for the largest possible mark stack is reserved
at startup. At the start of a garbage collection enough pages are
advised as needed for a mark stack given the current size of the heap.
At the end of a garbage collection, these pages are advised as no longer
needed.
As part of this change the mark stack has been changed to grow upward.
This makes the code simpler when the mark stack is incrementally
consumed. Also, the pushing and popping routines have been separated
into distinct functions.
Change-Id: Ibe4cc025c95451c2e462fbf10885ca85eef2088a
jeffhao [Tue, 9 Nov 2010 22:24:28 +0000 (14:24 -0800)]
Added info for parallel dx switch "num-threads" to help message.
Change-Id: I7fa31ab7160956c135ab95f8411ad359f616403d
Dan Bornstein [Tue, 9 Nov 2010 18:27:05 +0000 (10:27 -0800)]
Merge "Add const-class/jumbo." into dalvik-dev
Andy McFadden [Tue, 9 Nov 2010 04:15:42 +0000 (20:15 -0800)]
Andy McFadden [Tue, 9 Nov 2010 04:00:39 +0000 (20:00 -0800)]
Andy McFadden [Tue, 9 Nov 2010 03:38:19 +0000 (19:38 -0800)]
am
e9503ef8: am
886130bc: (-s ours) Two patches.
* commit '
e9503ef8c460f4818062ecc80a9e0b4f8c6745b8':
Two patches.
Andy McFadden [Tue, 9 Nov 2010 02:13:32 +0000 (18:13 -0800)]
am
886130bc: (-s ours) Two patches.
* commit '
886130bc7ff992940e152636f57072e58c91aa2e':
Two patches.
Dan Bornstein [Tue, 9 Nov 2010 02:03:33 +0000 (18:03 -0800)]
Add const-class/jumbo.
I neglected to include this one in my original list of new opcodes.
Change-Id: Ia59b4b2f21516d851f0398361eb5db1cb413aaab
Dan Bornstein [Tue, 9 Nov 2010 01:36:31 +0000 (17:36 -0800)]
Merge "Add the new jumbo opcodes to dx...almost." into dalvik-dev
Andy McFadden [Tue, 9 Nov 2010 01:05:39 +0000 (17:05 -0800)]
Two patches.
Patch 1a+1b: Set capabilities sooner.
(cherry-pick from gingerbread I22fde728bd5d65774f8fdf1fa45956fe18358c4c)
(hand-pick from gingerbread Ief58bdfff2cb82d7824ef796c2c1031f525f6ee9,
plus minor tweak to avoid altering the API)
Patch 3: If there's an error dropping privileges, abort.
(cherry-pick from gingerbread I85ce12e93cb8c297add756dc3b872b8346eda00b)
Bug
3176774
Change-Id: If8285d7bfd5a466bd77c0f7ffadf1bf96d31db06
Elliott Hughes [Tue, 9 Nov 2010 00:57:12 +0000 (16:57 -0800)]
Merge "Track change in libcore/NativeCode.mk." into dalvik-dev
Elliott Hughes [Tue, 9 Nov 2010 00:54:57 +0000 (16:54 -0800)]
Track change in libcore/NativeCode.mk.
Bug:
2281992
Change-Id: Ibfb877bc78396bc0e947ae2f8f86e484843f07de
Dan Bornstein [Tue, 9 Nov 2010 00:28:33 +0000 (16:28 -0800)]
Add the new jumbo opcodes to dx...almost.
This change adds the new opcodes while simultaneously preventing
them from actually being emitted, the prevention being controlled
by a new flag in InsnFormat.
Empirically speaking, we already have latent demand for the new
opcodes -- specifically because they allow for wider register
references than their wee companions -- and so we can't actually
enable their generation until the VM is prepared to execute them.
If you're wondering why dx without the new opcodes doesn't crap out on
the register references in question, it's because there's code in dx
which will expand an instruction that has non-fitting register
references into a sequence of two or more instructions, where it
shuffles values into and out of usable registers before and/or after
the instruction. When we turn on the jumbo opcodes, at least some
of these register shuffles will immediately get to go away.
Change-Id: I3f921ab07efa4944d7526fa48534d69f508ac249
Dan Bornstein [Mon, 8 Nov 2010 23:55:32 +0000 (15:55 -0800)]
Minor tweaks and clarification.
Change-Id: I861c2d65fea468fd1f085d845981b1cd9d98d3a8
Dan Bornstein [Mon, 8 Nov 2010 21:13:54 +0000 (13:13 -0800)]
Another bit of cleanup.
Making it a little easier to have more than 256 opcodes.
Change-Id: I050050f2b6078407dde4d4f214dec2c1a331000c
Andy McFadden [Thu, 4 Nov 2010 23:31:37 +0000 (16:31 -0700)]
Move some verifier stuff around.
Once upon a time we started down the road of "just in time" register
map generation, which was intended to save flash and RAM storage by
generating register maps for methods as the GC needed them (rather than
doing them all up front, or on first load of a class). This required
a lot of duplication of code, and in the end just wasn't worth it.
This removes the (#ifdefed-out) partial implementation. Some functions
that were moved into VerifySubs to be shared with RegisterMap.c are
moved back to their previous homes.
Some temporary VERIFIER_STATS stuff is also getting checked in (#ifdefed
out).
Added an assert, tweaked a couple of comments. No changes in behavior
are expected.
Change-Id: I20b915992add9906cb3638ac9432c910443a9a47
Dan Bornstein [Thu, 4 Nov 2010 23:42:11 +0000 (16:42 -0700)]
Merge "Use the static opcode chains in dx." into dalvik-dev
Carl Shapiro [Thu, 4 Nov 2010 23:34:33 +0000 (16:34 -0700)]
Merge "Parameterize instance counting to include subclasses." into dalvik-dev
Dan Bornstein [Thu, 4 Nov 2010 22:33:35 +0000 (15:33 -0700)]
Use the static opcode chains in dx.
This removes the need to iterate over all possible opcodes looking for
family/format matches whenever the need arises to rewrite an
instruction with a new opcode. This should speed dx up at least a
little, though I don't know if it will be measurable. It's certainly
cleaner and a bit simpler, though.
Change-Id: I779f19cb1249d30f6886faf76670ae37d5dfc402
Carl Shapiro [Thu, 4 Nov 2010 22:12:09 +0000 (15:12 -0700)]
Parameterize instance counting to include subclasses.
Change-Id: Idf54343a6a587e512833bbacbd0f7290adf8517e
Dan Bornstein [Thu, 4 Nov 2010 21:06:28 +0000 (14:06 -0700)]
Merge "Start including the "next opcode" in Dop instances." into dalvik-dev
Andy McFadden [Thu, 4 Nov 2010 20:29:25 +0000 (13:29 -0700)]
Merge "Fix CloseGuard issue in test 087." into dalvik-dev
Andy McFadden [Thu, 4 Nov 2010 20:09:39 +0000 (13:09 -0700)]
Fix CloseGuard issue in test 087.
Need to explicitly close the DexFile.
Change-Id: I15ec8550d3991cf492fbd20c87cb9408d205dd7f
Andy McFadden [Thu, 4 Nov 2010 20:03:57 +0000 (13:03 -0700)]
Merge "Rename wrap/unwrap --> box/unbox" into dalvik-dev
Andy McFadden [Thu, 4 Nov 2010 19:37:51 +0000 (12:37 -0700)]
Rename wrap/unwrap --> box/unbox
Use the correct term when moving primitive values in and out of
their parallel reference types.
Also, turn off the verifyCount check in dvmInvokeMethod unless
assertions are enabled. The verifier guarantees this.
Change-Id: I47629835784b5e770089ab3ca5410ee1c42820d9
Dan Bornstein [Thu, 4 Nov 2010 18:22:35 +0000 (11:22 -0700)]
Start including the "next opcode" in Dop instances.
Nothing's using it yet, though. Coming soon!
Change-Id: Ide34647fce6ad55fe52c8f6012145b724c134799
Elliott Hughes [Thu, 4 Nov 2010 18:03:57 +0000 (11:03 -0700)]
Merge remote branch 'goog/dalvik-dev' into dalvik-dev-to-master
Dan Bornstein [Thu, 4 Nov 2010 17:49:29 +0000 (10:49 -0700)]
Merge "More prep work for new opcodes." into dalvik-dev
Andy McFadden [Thu, 4 Nov 2010 17:40:27 +0000 (10:40 -0700)]
am
d325011f: Shift register index tests to static pass.
* commit '
d325011fc98e0f1179d467bbc284cccea72f560b':
Shift register index tests to static pass.
Andy McFadden [Wed, 3 Nov 2010 21:32:42 +0000 (14:32 -0700)]
Shift register index tests to static pass.
This rather hefty change moves the range tests on register index values
from the code-flow pass to the earlier static analysis pass. The idea
is to test everything up front so that we don't have to do a bounds
check every time we get or set a register value during verification.
This allowed some simplification in the code-flow pass, since get/set
of a register no longer needs to have the method register count passed
in, and can no longer fail due to bad input.
As part of doing this, some of the static verification code was
cleaned up, e.g. the instruction decoding is now only done in one place.
This had no apparently effect on performance on nexus one -- verify+opt
of the bootstrap classes takes the same amount of time. However, it
does reduce the compiled size of the humongous instruction verification
method by about 10%.
Also, cleaned up some instruction format stuff (e.g. removed 3rfs).
Bug
2534655.
(cherry-pick from dalvik-dev)
Change-Id: I1b220f4e97b1214ed575470695c52e1bd64d5137
Dan Bornstein [Thu, 4 Nov 2010 17:17:14 +0000 (10:17 -0700)]
More prep work for new opcodes.
The opcode-gen script now expects there to be up to 65536 opcodes, and
it generates opcode chain information. The chaining info isn't used
yet, but eventually it will get hooked into the instruction selection
logic in dx, meaning that dx will no longer have to do relatively
slower opcode searches; the right "next" opcode will have been
staticly generated and compiled in.
I also added a helpful generated comment in RopToDop, which indicates
which opcodes are the ones that *won't* be found by chaining, that is,
which ones are the starts of chains. This is left as a comment and not
code, though, since there are lots of quirks with how these get hooked
up. I hope to make this cleaner at some point, but today's not the day
for it.
Change-Id: I11da833cc57b383733743114c0f3e0e64903982d
Dan Bornstein [Thu, 4 Nov 2010 00:17:41 +0000 (17:17 -0700)]
Line width / spacing tweak.
Change-Id: Idf9c4f56b24e2b150c519f8ed140650183b47a88
Andy McFadden [Wed, 3 Nov 2010 19:44:13 +0000 (12:44 -0700)]
Improve JNI failure logging.
Removed a couple of LOGD warnings. Added additional detail to the
corresponding exception messages.
Bug
3158451.
Change-Id: I3d1d4e6188f364f592bf396d23c5e7e6da2fe65f
Andy McFadden [Wed, 3 Nov 2010 22:31:17 +0000 (15:31 -0700)]
Merge "Shift register index tests to static pass." into dalvik-dev
Brian Carlstrom [Wed, 3 Nov 2010 18:05:53 +0000 (11:05 -0700)]
Merge remote branch 'goog/dalvik-dev' into dalvik-dev-to-master
Change-Id: I0731a0f623694d15d311dae1450a50e105905421
Andy McFadden [Wed, 3 Nov 2010 21:32:42 +0000 (14:32 -0700)]
Shift register index tests to static pass.
This rather hefty change moves the range tests on register index values
from the code-flow pass to the earlier static analysis pass. The idea
is to test everything up front so that we don't have to do a bounds
check every time we get or set a register value during verification.
This allowed some simplification in the code-flow pass, since get/set
of a register no longer needs to have the method register count passed
in, and can no longer fail due to bad input.
As part of doing this, some of the static verification code was
cleaned up, e.g. the instruction decoding is now only done in one place.
This had no apparently effect on performance on nexus one -- verify+opt
of the bootstrap classes takes the same amount of time. However, it
does reduce the compiled size of the humongous instruction verification
method by about 10%.
Also, cleaned up some instruction format stuff (e.g. removed 3rfs).
Bug
2534655.
Change-Id: I3c2a5877bca5ddc3d794b61a46b95a7e5a3c233f
Dan Bornstein [Tue, 2 Nov 2010 20:49:24 +0000 (13:49 -0700)]
Merge "Rework the bytecode format file and parser." into dalvik-dev
Dan Bornstein [Tue, 2 Nov 2010 20:31:15 +0000 (13:31 -0700)]
Rework the bytecode format file and parser.
This change adds a set of "format" commands to the bytecode.txt file
and prefixes each bytecode definition with an "op" keyword. The new
parser script understands both commands (though it mostly ignores the
"format" ones) and is now a little less wedded to the idea that there
can only be 256 opcodes.
This all is in preparation for (a) adding new opcodes, and (b) making
the opcode/instruction fitter a little more efficient.
Change-Id: I1b4e7274da06b197536823148d91f426d049ec19
Carl Shapiro [Tue, 2 Nov 2010 00:54:39 +0000 (17:54 -0700)]
Merge "Remove allocation limit checking." into dalvik-dev
Carl Shapiro [Mon, 1 Nov 2010 23:26:46 +0000 (16:26 -0700)]
Remove allocation limit checking.
Change-Id: Ie9a23da2baf201c50cad5ba0d0992cec9bcace54
buzbee [Mon, 1 Nov 2010 23:23:53 +0000 (16:23 -0700)]
Merge "JIT - support for return-void-barrier [Issue
2992352]" into dalvik-dev
Carl Shapiro [Mon, 1 Nov 2010 23:17:11 +0000 (16:17 -0700)]
Merge "HPROF is here to stay, make WITH_HPROF the default." into dalvik-dev
Carl Shapiro [Mon, 1 Nov 2010 22:43:18 +0000 (15:43 -0700)]
HPROF is here to stay, make WITH_HPROF the default.
Change-Id: Ic9947461daa21641fd9d34d52b6c7998716d8ab2
buzbee [Mon, 1 Nov 2010 22:53:27 +0000 (15:53 -0700)]
JIT - support for return-void-barrier [Issue
2992352]
Slight reworking of the memory barrier instruction generation to
generalize it, and then add "dmb st" for the new return-void-barrier
instruction.
Change-Id: Iad95aa5b0ba9b616a17dcbe4c6ca2e3906bb49dc
Dan Bornstein [Mon, 1 Nov 2010 19:58:08 +0000 (12:58 -0700)]
Always dump blocks in label order.
This removes some cases of spurious test failure. Also did some
minor whitespace and commenting cleanup while I was in the territory.
Change-Id: I6b8f6d0c340625c31bde78394e77abf429367af3
Carl Shapiro [Mon, 1 Nov 2010 00:54:04 +0000 (17:54 -0700)]
Merge "Check that the debug registry has been started before visting it." into dalvik-dev
Carl Shapiro [Mon, 1 Nov 2010 00:53:56 +0000 (17:53 -0700)]
Merge "Resume all threads after performing an HPROF dump." into dalvik-dev
Carl Shapiro [Sat, 30 Oct 2010 04:32:52 +0000 (21:32 -0700)]
Check that the debug registry has been started before visting it.
Change-Id: I54605ebcb9a07846bbefc61ea48ba9e148a202fb
Carl Shapiro [Sat, 30 Oct 2010 02:08:57 +0000 (19:08 -0700)]
Resume all threads after performing an HPROF dump.
Change-Id: I83df8359a5d57e6b7cd79d75acc979024e50effb
Dan Bornstein [Sat, 30 Oct 2010 01:35:06 +0000 (18:35 -0700)]
am
79544e58: am
464104bb: am
1fe34326: am
fbe51551: (-s ours) Remove a pointless test, which just tested a test support class.
* commit '
79544e584c5a21c2551051732f7daa0b85afac02':
Remove a pointless test, which just tested a test support class.
Dan Bornstein [Sat, 30 Oct 2010 01:33:04 +0000 (18:33 -0700)]
am
464104bb: am
1fe34326: am
fbe51551: (-s ours) Remove a pointless test, which just tested a test support class.
* commit '
464104bb1bc96949d7638aa79d16431e6ab8da78':
Remove a pointless test, which just tested a test support class.
Dan Bornstein [Sat, 30 Oct 2010 01:30:57 +0000 (18:30 -0700)]
am
1fe34326: am
fbe51551: (-s ours) Remove a pointless test, which just tested a test support class.
* commit '
1fe3432661f96bf57b1e3bd91c3c01bd7564e6ae':
Remove a pointless test, which just tested a test support class.
Dan Bornstein [Sat, 30 Oct 2010 01:29:27 +0000 (18:29 -0700)]
am
fbe51551: (-s ours) Remove a pointless test, which just tested a test support class.
* commit '
fbe515510323ee65ce594b8eda5547c1cbfb8ad9':
Remove a pointless test, which just tested a test support class.
Dan Bornstein [Sat, 30 Oct 2010 01:23:19 +0000 (18:23 -0700)]
Remove a pointless test, which just tested a test support class.
Change-Id: Ia6d47860ad71f013fef5631bcd434c2f6f1d346f
Dan Bornstein [Sat, 30 Oct 2010 00:05:43 +0000 (17:05 -0700)]
am
99bb6ef3: am
32d0157d: am
66b96b42: am
3144eec0: (-s ours) Replace the implementation of this class.
* commit '
99bb6ef3043d4628e6e0da012df9920cd31735ce':
Replace the implementation of this class.
Dan Bornstein [Sat, 30 Oct 2010 00:04:21 +0000 (17:04 -0700)]
am
32d0157d: am
66b96b42: am
3144eec0: (-s ours) Replace the implementation of this class.
* commit '
32d0157dfef33fa48d195d2a467dd511ec7ef347':
Replace the implementation of this class.
Dan Bornstein [Sat, 30 Oct 2010 00:02:39 +0000 (17:02 -0700)]
am
66b96b42: am
3144eec0: (-s ours) Replace the implementation of this class.
* commit '
66b96b42ba1d21027b71ca65821648925c661a78':
Replace the implementation of this class.
Dan Bornstein [Sat, 30 Oct 2010 00:00:32 +0000 (17:00 -0700)]
am
3144eec0: (-s ours) Replace the implementation of this class.
* commit '
3144eec027b6a0de24f024c286e4544b1aca683b':
Replace the implementation of this class.
Carl Shapiro [Fri, 29 Oct 2010 22:35:17 +0000 (15:35 -0700)]
Merge "Reclassify the pin table as a VM internal root. The native stack classification requires an associated thread but are not directly associated with a thread. If we encounter an object in the pin table during an hprof dump hat will fail." into dalvik-dev
Dan Bornstein [Fri, 29 Oct 2010 22:27:54 +0000 (15:27 -0700)]
Replace the implementation of this class.
Use the Apache Harmony version.
Change-Id: Ica3b4c69ccd1cd4c91325c52fad5a71695d58ba4
Carl Shapiro [Fri, 29 Oct 2010 22:14:28 +0000 (15:14 -0700)]
Reclassify the pin table as a VM internal root. The native stack
classification requires an associated thread but are not directly
associated with a thread. If we encounter an object in the pin table
during an hprof dump hat will fail.
Change-Id: I9e49f88cd632584b5818c702cf80f3f96ec5da85
Dan Bornstein [Fri, 29 Oct 2010 20:01:27 +0000 (13:01 -0700)]
A bunch of minor cleanups.
I'm reacquainting myself with this code, and figured I might as well
do some of that nit-picky code convention tweakage while I was there.
The only non-whitespace non-comment changes I made were to change the
scope of a couple of methods to be more appropriate.
Change-Id: I550978ed0f5b9ccec938faef7c00d09532832ee4
Dan Bornstein [Fri, 29 Oct 2010 03:11:53 +0000 (20:11 -0700)]
Fix expected output of dx test 086.
It experienced both innocuous block order shift and changes to
content due to the earlier constant value propagation fix.
Change-Id: If97d9cc82e763e9bbd7c3a8ba834f2d994eb694b
Dan Bornstein [Fri, 29 Oct 2010 03:11:19 +0000 (20:11 -0700)]
Merge "Fix the expected output of dx test 083." into dalvik-dev
Dan Bornstein [Fri, 29 Oct 2010 03:08:00 +0000 (20:08 -0700)]
Fix the expected output of dx test 083.
The recent fix to constant value propagation altered the expected output.
Change-Id: I57a2c1d60f2bc1060e116199d7924944ca1eef43
Carl Shapiro [Wed, 27 Oct 2010 04:07:41 +0000 (21:07 -0700)]
Separate HPROF from the GC.
In the beginning, the only way to traverse the roots and heap was to
piggyback off the garbage collector. As such, HPROF was implemented
by instrumenting the root- and object traversal routines to check a
mode flag and call into HPROF during a GC when the flag was set.
This change moves the HPROF calls out of the GC and into callbacks
invoked through the visitor. Notably, it allows HPROF dumps to be
computed at any point in time without invoking a GC and potentially
destroying evidence relating to the cause of an OOM.
Change-Id: I2b74c4f10f35af3ca33b7c0bbfe470a8b586ff66
Dan Bornstein [Fri, 29 Oct 2010 00:44:06 +0000 (17:44 -0700)]
Fix dx test 087.
This is another case of block rearrangement.
Change-Id: I402d0056f8b6d314cef2efcfea80337777b20a7d