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
|
375fb116bcb817b37509ab579dbd55cdbb765cbf |
|
15-Jun-2011 |
Carl Shapiro <cshapiro@google.com> |
Normalize the include guard style. An leading underscore followed by a capital letter is a reserved name space in C and C++. This change also moves any #include directives within the include guard in some of the compiler/codegen/arm header files. Change-Id: I9715e2c5301699d31886e61d0fe6e29483555a2a
|
bfc9799b1a53fd6f6136d07e6278d4538cf70f13 |
|
27-Apr-2011 |
Carl Shapiro <cshapiro@google.com> |
Make libdex structures tool friendly. Previously, the struct name and its typedef name were identical. This confuses emacs and etags. This change eliminates the typedef names and removes the extern "C" wrapping the libdex header files. To support this change the transitive C dependencies have been made to compile as C++ instead. Change-Id: I7065f32d61d776f9b09c7b461adf2502268d852f
|
db0c9549818d9f6e508d26e45ff9d886802aa1da |
|
13-Apr-2011 |
Carl Shapiro <cshapiro@google.com> |
Convert the internal and in-line natives to C++. Change-Id: I2ece682bc3b4d3b55ab27c60fd84a0b3243d7ca6
|
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
|
44209fab6f9a58368809ca278f04e5c9384e7515 |
|
04-Dec-2010 |
Dan Bornstein <danfuzz@android.com> |
These asserts are no longer pointless. Change-Id: I32cfd2334de344156a41d1c2d7c10a8d96e970c4
|
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.
|
0f737c5778b9661bdb0b978f4bd29ccbcd73b5fb |
|
03-Dec-2010 |
Dan Bornstein <danfuzz@android.com> |
Extremely minor cleanup. Change-Id: Ia302597d27773aa72f675509e9b4f844db65cc85
|
e485276c6ba778cafa373b3b5c867f84e91b0bfd |
|
02-Dec-2010 |
Dan Bornstein <danfuzz@android.com> |
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
|
4b6e9baa06c39376496a1860972a68924c8d4440 |
|
02-Dec-2010 |
Dan Bornstein <danfuzz@android.com> |
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
|
9a1f81699cc05b58378ffb9aadb4e97677943791 |
|
02-Dec-2010 |
Dan Bornstein <danfuzz@android.com> |
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
|
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
|
758a6733f7d1a525aa1530e008cab8a912e7a084 |
|
30-Nov-2010 |
Dan Bornstein <danfuzz@android.com> |
Clean up the opcode maintenance instructions. Change-Id: Ic9d7fcfd234116099ef510e4339a9af0bc3fcb1d
|
41e286c0623dcb4efc6243c94ba14e7febed4b25 |
|
19-Nov-2010 |
Dan Bornstein <danfuzz@android.com> |
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
|
543223954993a19fa96670692bc7aa55d851966b |
|
17-Nov-2010 |
Dan Bornstein <danfuzz@android.com> |
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
|
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
|
c2b486fe6e49555c3a5df0702d04c20b6d6a33c4 |
|
13-Nov-2010 |
Dan Bornstein <danfuzz@android.com> |
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
|
1530c3e6952581aa20ac1e06562a49b9d70bc2b6 |
|
12-Nov-2010 |
Dan Bornstein <danfuzz@android.com> |
TypeRef, not ClassRef. Old habits die hard. The things in question have been called TypeRefs for quite a while now. Change-Id: I77b0066a67c63b8e801ec62eb613f18a4812585a
|
a0929372ae4996cde3aece52f98128a957166ffc |
|
12-Nov-2010 |
Andy McFadden <fadden@android.com> |
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
|
4a6b4825a5d3ac267e359897a5fb4d132a82c935 |
|
11-Nov-2010 |
Dan Bornstein <danfuzz@android.com> |
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
|
44a38f4a6a1cde0490e78b7de3b27906c6c81078 |
|
11-Nov-2010 |
Dan Bornstein <danfuzz@android.com> |
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
|
7b3e9b0886f2b716b004f0377866988ae39a136e |
|
10-Nov-2010 |
Dan Bornstein <danfuzz@android.com> |
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
|
d325011fc98e0f1179d467bbc284cccea72f560b |
|
03-Nov-2010 |
Andy McFadden <fadden@android.com> |
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
|
6989a1e1106e401d4f8fa8dee361de7a643af739 |
|
03-Nov-2010 |
Andy McFadden <fadden@android.com> |
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
|
228a6b01918304f2cd1213c722e028a6e25252bb |
|
05-May-2010 |
Andy McFadden <fadden@android.com> |
Forward progress on verifier. Promoted VerifierData to a more prominent role in passing state around. This will (a) allow us to pass fewer explicit arguments around in the core of the verifier, and (b) make it easier to maintain some fancier data structures that we will need shortly. Made use of dexGetInstrOrTableWidthAbs() in a couple of places where we were still explicitly calculating the sizes of NOP data chunks. Converted some things from int to size_t. Change-Id: I206f588bf1fc116a9d1f50fb631a9af33479b291
|
de75089fb7216d19e9c22cce4dc62a49513477d3 |
|
09-Jun-2010 |
Carl Shapiro <cshapiro@google.com> |
Remove trailing whitespace. Change-Id: I95534bb2b88eaf48f2329282041118cd034c812b
|
fbdcfb9ea9e2a78f295834424c3f24986ea45dac |
|
29-May-2010 |
Brian Carlstrom <bdc@google.com> |
Merge remote branch 'goog/dalvik-dev' into dalvik-dev-to-master Change-Id: I0c0edb3ebf0d5e040d6bbbf60269fab0deb70ef9
|
2e1ee50a08cc3dd07ce4e956b925c1f0f28cf329 |
|
24-Mar-2010 |
Andy McFadden <fadden@android.com> |
Rearrange some things. This splits DexOptimize into DexPrepare (which deals with file shuffling and fork/exec) and Optimize (which does the actual quickening of instructions). The Optimize functions are now effectively private to the "analysis" directory. Twiddled some comments. No substantive code changes. Change-Id: Ia51865b259fb32822132e2373997866e360ca86a
|
861b33855aff080278ea5125e4372a2d4bf8aef5 |
|
06-Mar-2010 |
Andy McFadden <fadden@android.com> |
Make wide-volatile loads and stores atomic. This implements the four wide-volatile instructions added in a previous change, and modifies the verifier to substitute the opcodes into the instruction stream when appropriate. For mterp, the ARM wide get/put instructions now have conditional code that replaces ldrd/strd with a call to the quasiatomic functions. The C version does essentially the same thing. ARMv4T lacks ldrd/stdrd, and uses separate implementations for the wide field accesses, so those were updated as well. x86 will just use stubs. The JIT should punt these to the interpreter. Change-Id: Ife88559ed1a698c3267d43c454896f6b12081c0f Also: - We don't seem to be using the negative widths in the instruction table. Not sure they're useful anymore. - Tabs -> spaces in x86-atom throw-verification-error impl.
|
b0a0541b59d1126ff77c88de742b4a74579fe296 |
|
19-Nov-2009 |
Andy McFadden <fadden@android.com> |
Add execute-inline/range instruction. Like "execute-inline", this is an instruction generated by dexopt that replaces a method invoke instruction. It's useful for small, frequently called methods in the core libs. As with execute-inline, we allow at most 4 arguments, but with /range we're no longer limited to the low 16 registers. Also: marked execute-inline as being able to throw an exception. Needed: native x86 implementation; support in JIT. For bug 2268232.
|
72e93344b4d1ffc71e9c832ec23de0657e5b04a5 |
|
13-Nov-2009 |
Jean-Baptiste Queru <jbq@google.com> |
eclair snapshot
|
50a6bf2f01efba0acbff9bb03e7ee09688553e08 |
|
08-Jul-2009 |
Bill Buzbee <buzbee@google.com> |
Inline-execute for Java.Lang.Math routines, jit codegen restructure, various bug fixes.
|
ba4fc8bfc1bccae048403bd1cea3b869dca61dd7 |
|
01-Jun-2009 |
Ben Cheng <bccheng@android.com> |
Initial port of the Dalvik JIT enging to the internal repository. Fixed files with trailing spaces. Addressed review comments from Dan. Addressed review comments from fadden. Addressed review comments from Dan x 2. Addressed review comments from Dan x 3.
|
3a1aedbc9777eab6275a360b93b81b079464238e |
|
07-May-2009 |
Andy McFadden <fadden@android.com> |
Added throw-verification-error instruction. This is for the deferred verifier error reporting. It replaces OP_UNUSED_ED. The instructions aren't actually used yet, which is good since the x86 version hasn't been written yet. The mterp regen also pushed out some recent-ish changes that hadn't propagated to the armv4t sources.
|
f6c387128427e121477c1b32ad35cdcaa5101ba3 |
|
04-Mar-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //depot/cupcake/@135843
|
f72d5de56a522ac3be03873bdde26f23a5eeeb3c |
|
04-Mar-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //depot/cupcake/@135843
|
89c1feb0a69a7707b271086e749975b3f7acacf7 |
|
18-Dec-2008 |
The Android Open Source Project <initial-contribution@android.com> |
Code drop from //branches/cupcake/...@124589
|
2ad60cfc28e14ee8f0bb038720836a4696c478ad |
|
21-Oct-2008 |
The Android Open Source Project <initial-contribution@android.com> |
Initial Contribution
|