History log of /dalvik/opcode-gen/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
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