Commit Graph

259 Commits

Author SHA1 Message Date
4610bfd7a9 Add FiveRegisterInstruction and RegisterRangeInstruction interfaces
Implement new interfaces on appropriate Instruction classes

git-svn-id: https://smali.googlecode.com/svn/trunk@549 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-12 07:13:09 +00:00
4238ac2dd1 Add missing interfaces to a couple of Instruction classes
git-svn-id: https://smali.googlecode.com/svn/trunk@548 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-12 07:12:55 +00:00
0f78b15cd7 Change the enum name of the execute-inline instruction from INVOKE_EXECUTE_INLINE to EXECUTE_INLINE
git-svn-id: https://smali.googlecode.com/svn/trunk@546 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-01 22:36:09 +00:00
1c6b6d7591 whitespace change
git-svn-id: https://smali.googlecode.com/svn/trunk@545 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-01 22:36:01 +00:00
be2472d6d7 Add support for the upcoming execute-inline/range odexed instruction
git-svn-id: https://smali.googlecode.com/svn/trunk@544 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-01 22:35:54 +00:00
c043c35800 Add execute-inline to the list of instructions that can throw an exception
git-svn-id: https://smali.googlecode.com/svn/trunk@543 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-01 22:35:42 +00:00
c9c2ec3d48 Add "support" for odexed instructions using Format3rms
Also, change the name of the invoke-*-range-quick opcodes to invoke-*-quick/range,
to be consistent with the naming scheme of non-odexed opcodes

git-svn-id: https://smali.googlecode.com/svn/trunk@542 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-01 22:35:35 +00:00
da3b7b1150 change execute_inline to execute-inline, for consistency
git-svn-id: https://smali.googlecode.com/svn/trunk@538 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-31 22:34:37 +00:00
f29d8ae0b1 fix spelling of propogateRegisters method
git-svn-id: https://smali.googlecode.com/svn/trunk@529 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-25 23:06:09 +00:00
37885c5f82 Fix possible NPE
git-svn-id: https://smali.googlecode.com/svn/trunk@528 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-25 23:06:03 +00:00
64c389570e Resolve inline methods lazily, to prevent issues when types for unused inline methods aren't present in the odex file
git-svn-id: https://smali.googlecode.com/svn/trunk@527 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-25 23:05:57 +00:00
f7c84c8c41 return the correct format for Instruction35s
git-svn-id: https://smali.googlecode.com/svn/trunk@526 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-25 23:05:50 +00:00
6325930f67 read in the field offset for Instruction22cs
git-svn-id: https://smali.googlecode.com/svn/trunk@525 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-25 23:05:43 +00:00
ba04c98bce Whitespace fixes
git-svn-id: https://smali.googlecode.com/svn/trunk@523 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-25 23:05:28 +00:00
3ce2b6fcee remove unneeded TODO
git-svn-id: https://smali.googlecode.com/svn/trunk@521 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-24 08:08:23 +00:00
5f758b60b4 fix an issue that occurs when a switch statement is the first instruction in a method
git-svn-id: https://smali.googlecode.com/svn/trunk@520 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-24 08:08:14 +00:00
b145895c49 remove an invalid assert
git-svn-id: https://smali.googlecode.com/svn/trunk@519 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-24 08:08:02 +00:00
146fbfd33a Throw an error if a switch data pseudo-instruction is encountered when auto-fixing a method.
git-svn-id: https://smali.googlecode.com/svn/trunk@518 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-24 08:07:44 +00:00
a8ca776c1d Remove unneeded TODO
git-svn-id: https://smali.googlecode.com/svn/trunk@517 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-24 08:07:33 +00:00
2e52e0e6e4 remove unneeded TODO: and added a new one
git-svn-id: https://smali.googlecode.com/svn/trunk@516 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-24 08:07:23 +00:00
2904f40603 Fix an issue when the current address immediatly after an AdvancePC debug instruction doesn't point to an instruction
git-svn-id: https://smali.googlecode.com/svn/trunk@515 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 23:46:18 +00:00
2ededb89b9 Don't set the encoded debug info when nothing needed to be changed
git-svn-id: https://smali.googlecode.com/svn/trunk@514 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 23:46:12 +00:00
e266117407 Add the offset past the end of the last instruction to the sparse arrays that translate between the new and old offsets
git-svn-id: https://smali.googlecode.com/svn/trunk@513 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 23:46:06 +00:00
01318cded8 use decodeHighUnsignedNibble instead of decodeHighSignedNibble for regB in Instruction22t
git-svn-id: https://smali.googlecode.com/svn/trunk@512 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 05:28:28 +00:00
311ee79fab Complete and fix-up the implementation of autofixing instructions
git-svn-id: https://smali.googlecode.com/svn/trunk@511 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 05:28:21 +00:00
404816815f use out.toByteArray() instead of out.getArray(), so we get a correctly sized array instead of the oversized internal buffer
git-svn-id: https://smali.googlecode.com/svn/trunk@509 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 05:27:49 +00:00
4433deb7dc Use an int to store the 'base' value, when decoding a special debug opcode, to prevent an incorrect negative value
git-svn-id: https://smali.googlecode.com/svn/trunk@508 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 05:27:42 +00:00
91aa1ef2fa Use the correct comparison for the keys, when writing out a sparse switch data pseudo-instruction
git-svn-id: https://smali.googlecode.com/svn/trunk@507 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 05:27:36 +00:00
526d617e05 When writing an Instruction31t opcode, align the offset to the switch/array data
git-svn-id: https://smali.googlecode.com/svn/trunk@506 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 05:27:30 +00:00
7570fe0382 Fix the way offsets are handled in Instruction21t and Instruction22t
Use a short internally for the offset, and validate the value in updateOffset()

git-svn-id: https://smali.googlecode.com/svn/trunk@505 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 05:27:23 +00:00
f6c7706102 ensure the string index is <= 0xFFFF before writing a string-const instruction
git-svn-id: https://smali.googlecode.com/svn/trunk@504 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 05:27:14 +00:00
fda2e631ac Refactor instructions to store individual pieces of data instead of just using an offset into a buffer
Also included is a partial implementation of the logic needed to automatically fix various types of issues

git-svn-id: https://smali.googlecode.com/svn/trunk@502 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 05:26:59 +00:00
9ab2b45ec8 whitespace fixes
git-svn-id: https://smali.googlecode.com/svn/trunk@501 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 05:26:13 +00:00
5867263eb5 line ending and trailing whitespace cleanup
git-svn-id: https://smali.googlecode.com/svn/trunk@500 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 05:25:59 +00:00
b6ce091ae3 fix an issue reading the string index for indexes >16bits, for the const-string/jumbo opcode
git-svn-id: https://smali.googlecode.com/svn/trunk@495 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-09 09:56:13 +00:00
b09920f24f Use the shorter form of decodeUnsignedShort
git-svn-id: https://smali.googlecode.com/svn/trunk@479 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-09-19 03:34:03 +00:00
29f49465ca Use a SparseArray instead of a HashMap, and add get*Count methods to AnnotationDirectoryItem so we can initialize the SparseArrays with the correct capacity
git-svn-id: https://smali.googlecode.com/svn/trunk@478 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-09-19 03:18:35 +00:00
cd5d4c0385 Use proper hygiene. Close those files/streams!
git-svn-id: https://smali.googlecode.com/svn/trunk@477 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-09-14 02:37:26 +00:00
c8d83493d1 Add support for reading a classes.dex file from an apk/jar
git-svn-id: https://smali.googlecode.com/svn/trunk@470 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-09-13 21:55:24 +00:00
4080fe659d Improve handling of the dex and odex magic values
git-svn-id: https://smali.googlecode.com/svn/trunk@469 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-09-13 19:57:25 +00:00
343848c849 Include the first 8 bytes of the file when reporting a bad magic value
git-svn-id: https://smali.googlecode.com/svn/trunk@468 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-09-13 19:45:54 +00:00
dbaa44be6c wasn't propogating deadness in all cases
git-svn-id: https://smali.googlecode.com/svn/trunk@462 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-09-11 03:14:40 +00:00
a948461964 Check for null when looking up a superclass
git-svn-id: https://smali.googlecode.com/svn/trunk@460 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-09-11 01:45:28 +00:00
c65a8d8b5f Added better support for the case when an optimized instruction can't be resolved due to the object register always being null. It should comment out any dead code following the unresolved instruction (to prevent verification issues, due to the changed method call)
git-svn-id: https://smali.googlecode.com/svn/trunk@455 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-09-10 06:40:58 +00:00
ddc8655d10 Fix some null checking logic
git-svn-id: https://smali.googlecode.com/svn/trunk@454 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-09-10 02:01:38 +00:00
61eedba1ab Fix a bug when creating a dex file that has a blank section for one of the indexed item types
git-svn-id: https://smali.googlecode.com/svn/trunk@452 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-09-09 06:58:50 +00:00
a6bf1ed0fe store types as strings, to allow for intermediate types that don't exist in the dex file
git-svn-id: https://smali.googlecode.com/svn/trunk@451 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-09-09 06:38:01 +00:00
e942607e1a delete TODO
git-svn-id: https://smali.googlecode.com/svn/trunk@449 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-09-09 05:09:45 +00:00
726d88404d Handle a rare case where deodexing an instruction invalidates a previously deodexed instruction somewhere else because of the new register information available
git-svn-id: https://smali.googlecode.com/svn/trunk@448 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-09-09 04:21:20 +00:00
8b260a1d81 Changed the instruction map to a Sparse array, plus various cleanup
git-svn-id: https://smali.googlecode.com/svn/trunk@447 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-09-09 03:40:31 +00:00