ab35b50311951feea3782151dd5422ee944685c2 |
05-Jan-2012 |
Elliott Hughes <enh@google.com> |
Remove unsupported experimental opcodes. External developers were starting to try to get themselves into trouble with this stuff... Change-Id: I2b03bfeaa8c98b6a994bc7924fc8dcf4e4d4f6cb
ytecode.txt
pcode-gen.awk
|
26a6b7fb02bf6c8d555f6e392ad9322609e20add |
19-Apr-2011 |
Dan Bornstein <danfuzz@android.com> |
Tweaks for C++ compilation. Change-Id: I6ac0ffe4941c6d655025a0738413b60b636400a9
egen-all
|
3475f9cdb47a6d6f8ad2ce49bbc3af46bca92f09 |
21-Mar-2011 |
Carl Shapiro <cshapiro@google.com> |
Move finalization out of the VM. This change introduces a new reference class whose referent points to instances requiring finalization. This makes the finalization of objects possible using a reference queue and a dedicated thread which removes objects from the queue. Change-Id: I0ff6dd272f00ca08c6ed3aa667bf766a039a944e
ytecode.txt
|
24bd4c50bb3ea13be4f049710967961f0546fb2c |
10-Mar-2011 |
Andy McFadden <fadden@android.com> |
Add volatile/jumbo opcodes This adds 12 dexopt-generated "volatile/jumbo" instructions, to be used for replacing appropriate get/put ops, plus a jumbo replacement for invoke-object-init/range. The new instructions are defined but not yet used. For x86 and x86-atom, C stubs are selected. Also, guarded macro args used in arithmetic expressions in header.S. Bug 3403118 Change-Id: I283cea053d1cee1d70c3715df3e71177e8b8d3b2
ytecode.txt
|
0346e9dcddccd449c731e42ef83708ff6d8f0976 |
02-Mar-2011 |
Andy McFadden <fadden@android.com> |
Change invoke-object-init to /range form The invoke-object-init instruction pretends to be a regular invoke that only knows how to call Object.<init>. As such it always takes one argument, and if we use the /range version we can specify the "this" register with 16 bits instead of only 4. Bug 3486699 Change-Id: I9ee4700c6935beee1dcbaa583b57befd33641414
ytecode.txt
|
750d110b62cef538e193b6f91f5239b0c4b63ef1 |
12-Feb-2011 |
Andy McFadden <fadden@android.com> |
Rename invoke-direct-empty to invoke-object-init The invoke-direct-empty instruction was introduced to remove the overhead of calling the empty Object constructor. We now need it to do some extra work on behalf of object construction, so it's appropriate to change the instruction name to match the role it fills rather than the more general role it was hoped to fill. No functional changes. Bug 3342343 Change-Id: I65dd6a2c00c99581c9a19b16fe193b70642c8fbb
ytecode.txt
|
f67b6afce08a6b9b5daf7d4d69e132fda07bc78f |
02-Feb-2011 |
Dan Bornstein <danfuzz@android.com> |
CodeReader visitor dispatch now uses OpcodeInfo. This gets rid of the per-opcode Instruction array and just does a simple switch. If it turns out that the switch has poor performance, we can push the visitor abstraction down into IndexType. The big change to OpcodeInfo is to make every Info instance always have a non-null IndexType, exactly so it could be reliably switch()ed on without having to do an explicit null check. Change-Id: Iee8289f8766ce41c5043eec7212b2133ec71e682
pcode-gen.awk
|
a754fbb1555f9ac2d14de0ffd0046c780732da5a |
02-Feb-2011 |
Dan Bornstein <danfuzz@android.com> |
Move opcode names into OpcodeInfo. This also allowed me to remove the Instruction argument from the CodeReader visitor methods. Per previous discussion, this also gets rid of the redundant argument output in FindUsages. I can clean up CodeReader some more in a follow-up. Change-Id: I7a65e8d74498e201fd169cddde0d1f19d6f33f81
pcode-gen.awk
|
7ba91291bb6ce64691398a8751656207e8e3e98d |
30-Jan-2011 |
Dan Bornstein <danfuzz@android.com> |
Move dx.dex.code.DalvOps -> dx.io.Opcodes. This breaks a nascent circular dependency, keeping dx.io the lower layer. Bonus: While I was in the territory, I clarified the data payload opcodes, including adding explicit constants for them. Change-Id: I8655064ebc3b5713cbb4a6c83bcc90984393701f
pcode-gen.awk
egen-all
|
3c5df37a2df7368eb274eb097e9cfa2ccc7fffb6 |
26-Jan-2011 |
Dan Bornstein <danfuzz@android.com> |
Basic facility to read/write bytecode. These classes are meant for reading and writing bytecode at the lowest possible level, in particular without layering any interpretation of the instructions beyond understanding the instruction formats. (For example, constant indices remain numbers and aren't tied to objects representing constants.) This patch represents a work-in-progress that compiles but is as yet not hooked up to anything else. Hooking it all up will happen in one or more follow-on patches. Change-Id: Ifd3b3ff0925dc9dc3d82e507dc1be83cb560031d
pcode-gen.awk
egen-all
|
71eee1f0c2eb514585fdbee16730c9c2209e8f68 |
04-Jan-2011 |
jeffhao <jeffhao@google.com> |
Added vm support for new jumbo opcodes. This enables jumbo opcodes by default, and they will get used by the current build without modification. Support has been added for arm, x86, and the portable interpreter. x86-atom support is on the TODO list. This commit also includes a test for the new jumbo opcodes. Change-Id: Ic3f1b41b51645861c5196f76aaf0e96e727ea537
pcode-gen.awk
|
9ac2199331bdee44504c0328c2d4e99fdd545416 |
11-Dec-2010 |
Dan Bornstein <danfuzz@android.com> |
New jumbo verification error opcode. I'll regenerate the vm code for this in a follow-up change. Change-Id: I59a0a91d39fd539f1b3a25f1f2889618fa484b96
ytecode.txt
|
9dc57d3f402abcaacae2943cb374f46d48cceae7 |
04-Dec-2010 |
Dan Bornstein <danfuzz@android.com> |
Minor simplification. Change-Id: Ie17ba83ead45028a8b7b32c1cc5763f9dd6d684c
pcode-gen.awk
|
29d5b5d82e7582d85d00e01a2c462fd9ba8108ae |
04-Dec-2010 |
Dan Bornstein <danfuzz@android.com> |
Fix stupid copy-paste error. Change-Id: I1ad1e8c26ec47b9b148fc6a4292afa2ee25e58e2
pcode-gen.awk
|
ccaab18ae6d203108445fef7682065dfbb007657 |
04-Dec-2010 |
Dan Bornstein <danfuzz@android.com> |
Another clarifying rename and a bit more automation. kNumDalvikInstructions is now kNumPackedOpcodes, there is a new kMaxOpcodeValue, and both are generated by opcode-gen. Change-Id: Ic46f1f52d2d21382452c8e777024f4a985ad31d3 Bonus: Reworded the switch and array data comment for clarity.
pcode-gen.awk
|
a277f14c3702a474e18a9981f23845d7d7521163 |
04-Dec-2010 |
Dan Bornstein <danfuzz@android.com> |
Regular-expression compatibility. The most compatible way of indicating that a dash is part of a character range is to put a single dash at the end of the range expression. Change-Id: I1e118038dfacffbc004c97be0ae1c3dfe97e861d
pcode-gen.awk
|
21f322dcd405fddc45a91e4b7d64a2e3d7ebfd15 |
03-Dec-2010 |
Dan Bornstein <danfuzz@android.com> |
Small fixes. I had unpackOpcode() slightly wrong, and I made the libcore opcode numbers always be four hex digits. Change-Id: I4f988b8794b4b6c48ef91698a8e567fa46b96dac
pcode-gen.awk
|
973171bb01a052a302e8674b5f617383bac0647a |
03-Dec-2010 |
Dan Bornstein <danfuzz@android.com> |
Clean up the opcode-gen script. There was way too much string duplication, and it needed at least a bit more commenting. Change-Id: Id31ee1fd260db6f4afe301764c60de7c63b3f729
pcode-gen
pcode-gen.awk
|
3c4dc3bc03f87e181c06f633c4c085341faeee92 |
03-Dec-2010 |
Dan Bornstein <danfuzz@android.com> |
Inching closer to having extended opcodes in the vm. Change-Id: If6578a0686ac8fe5e6d1a26509d8a5c748bed179
pcode-gen.awk
|
d12de172a5e18f3bef8a98e3f43a14565266451b |
03-Dec-2010 |
Dan Bornstein <danfuzz@android.com> |
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
pcode-gen
pcode-gen.awk
|
5befcb64d815614a855199e19a0236ec3a01091c |
02-Dec-2010 |
Dan Bornstein <danfuzz@android.com> |
Rename OpCodeNames.c -> DexOpcodes.c. Change-Id: I9e22543740129f4a8fd50ff246a165d6358ed9b5
egen-all
|
df4daaf8f41e3dcaa8221f54273338160dd43138 |
01-Dec-2010 |
Dan Bornstein <danfuzz@android.com> |
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
pcode-gen
egen-all
|
111221644c5b7b1d4f426d02786aeebf1addc8f6 |
01-Dec-2010 |
Dan Bornstein <danfuzz@android.com> |
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
pcode-gen
|
3c6c8c7f3b5af796fc59d47876d488a716e32d51 |
01-Dec-2010 |
Dan Bornstein <danfuzz@android.com> |
Bring 00x and 20bc into the fold. Change-Id: I12fde7eb665c9f3b75684018457f9464b0990156
ytecode.txt
|
74b28b07eeb53ee8f5b6e1afe1c35bdf2d45c0f1 |
01-Dec-2010 |
Dan Bornstein <danfuzz@android.com> |
Explain a bit. Change-Id: I845f34924249b6c5f34ad9ef7b9ebd3bc44f1aac
ytecode.txt
|
0759f52f2dd8497cc489b889a25e91d48ea10751 |
30-Nov-2010 |
Dan Bornstein <danfuzz@android.com> |
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
ytecode.txt
|
758a6733f7d1a525aa1530e008cab8a912e7a084 |
30-Nov-2010 |
Dan Bornstein <danfuzz@android.com> |
Clean up the opcode maintenance instructions. Change-Id: Ic9d7fcfd234116099ef510e4339a9af0bc3fcb1d
EADME.txt
|
caf4e5afde99eda3226643c9a28d1e38b83714fe |
30-Nov-2010 |
Dan Bornstein <danfuzz@android.com> |
Code to generate libcore's Dalvik opcode code. That was a mouthful. Change-Id: I49152fdacbfa9593e7a95f5c120fea023b06d03b
pcode-gen
egen-all
|
8424432a87c784547e4510bca538eaedc312e40d |
17-Nov-2010 |
Dan Bornstein <danfuzz@android.com> |
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
ytecode.txt
pcode-gen
egen-all
|
d03baafc41fe04167d0a8ba01d8cbc9bcbed8195 |
17-Nov-2010 |
Dan Bornstein <danfuzz@android.com> |
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
ytecode.txt
pcode-gen
egen-all
|
11a4a79b09a2be2bd7a7141ce112de3ad0432e53 |
16-Nov-2010 |
Dan Bornstein <danfuzz@android.com> |
Generate most of OpCode.h using opcode-gen. This was the easiest bit to tackle in libdex. More to come! Change-Id: I3f79039ce98951d694d2c896ee1c7a60b417bc49
pcode-gen
egen-all
|
82dbe1c22c6a1088f73f1e11e5cacbdd492ca79d |
16-Nov-2010 |
Dan Bornstein <danfuzz@android.com> |
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
ytecode.txt
pcode-gen
egen-all
|