511 Commits

Author SHA1 Message Date
Ben Gruver
c8e896b984 Add default dependencies for Android N 2016-10-17 16:19:15 -07:00
Ben Gruver
cb14aa7074 Remove obsolete TODO 2016-10-17 16:16:28 -07:00
Ben Gruver
8fa96e2fcd Resolve odex dependencies to jar files when needed 2016-10-17 16:15:17 -07:00
Ben Gruver
16d4b5656b Use a BufferedInputStream in ZipDexContainer.isDex 2016-10-16 13:46:42 -07:00
Ben Gruver
a6593575e7 Be more precise about narrowing after an instance-of
Only do the additional narrowing when all predecessors of the instance-of
are equivalent move instructions.
2016-10-16 13:45:30 -07:00
Albert Gorski
e75f2b230a Ensure the ZipFile is closed in isZipFile() of ZipDexContainer
When calling isZipFile() in ZipDexContainer, the ZipFile would remain open if
the file was in fact a zip file but the ZipFile object would then go out of
scope thus creating a resource leak. This ensures that the ZipFile is closed
by adding a finally clause containing a close call at the end of the try catch
block.
2016-10-15 21:12:23 -07:00
Ben Gruver
5189797292 Unify how sections are referenced in DexPool and DexBuilder 2016-10-15 20:58:19 -07:00
Ben Gruver
4eefe294e4 Add a public utility method for verifying dex/odex headers 2016-10-15 15:07:32 -07:00
Ben Gruver
145bc820d3 Add a ClassPath(Iterable<ClassProvider>) constructor 2016-10-15 10:27:10 -07:00
Narayan Kamath
55c33ebb09 Add a placeholder ART version number / api level for aosp/master.
Also make invoke-polymorphic conditional on this new art version.

This also fixes a bug where the version was being selected incorrectly
due to a parameter name that shadowed a local variable.
2016-10-07 15:06:07 +01:00
Ben Gruver
615d383320 Make ZipDexContainer more subclass-friendly 2016-10-04 23:05:47 -07:00
Ben Gruver
2996766649 Add MultiDexContainer.getOpcodes() 2016-10-04 23:03:38 -07:00
Ben Gruver
2d0f6254b1 Merge branch 'v2.2_WIP' 2016-10-02 16:41:52 -07:00
Ben Gruver
384161e060 Detect and ignore out-of-range debug info offsets 2016-10-02 16:34:41 -07:00
Ben Gruver
219bdff2d1 Properly implement the art <-> api version map 2016-10-02 16:05:22 -07:00
Ben Gruver
59256149f1 Add functionality for efficient multi-dex writing with DexPool
This adds support to DexPool for mark()/reset(), which can be used to
"rollback" the last added class in case it caused a constant pool overflow.

This also adds a "DexWriter.hasOverflowed()" helper method to determine if
any of the size-constrained pools have overflowed.
2016-10-02 12:18:52 -07:00
Ben Gruver
af8a063472 Set the minimum oat version for the fixed post-default-method vtable to 87 2016-10-02 12:18:52 -07:00
Ben Gruver
67171366db Reparent interface methods in a vtable
These are now reparented at the point where a invoke-virtual/quick
is being resolved, if needed
2016-10-02 12:18:52 -07:00
Ben Gruver
dbd9db303a Tweak ZipDexContainer so it doesn't keep an open ZipFile 2016-10-02 12:18:51 -07:00
Ben Gruver
ab20c37fd0 Fix up the post-default interface generation 2016-10-01 17:07:18 -07:00
Ben Gruver
37f5436932 Allow interning classes into a DexPool externally 2016-10-01 17:07:18 -07:00
Ben Gruver
9c039ef1de Implement ReflectionUtils.dexToJavaName 2016-10-01 17:07:18 -07:00
Ben Gruver
8f27f45fb1 Add Opcodes.getDefault
This replace various uses of hardcoded Opcodes.forApi() with
Opcodes.getDefault() or other alternatives as applicable
2016-10-01 17:07:18 -07:00
Ben Gruver
0de5ef0ce7 Add support for the buggy post-default method vtable generation
This replicates the buggy vtable generation logic for Android 7.0
2016-10-01 17:07:17 -07:00
Ben Gruver
a54523e080 More default method vtable fixes 2016-09-24 18:16:55 -07:00
Ben Gruver
8081311d30 Implement toString for Method/Field/Proto references 2016-09-24 18:15:07 -07:00
Ben Gruver
17054d5c3d Load oat dependencies by default, if present 2016-09-24 18:11:50 -07:00
Ben Gruver
dcc7a2b806 Remove OatDexFile.getOatFile in favor of getContainer 2016-09-24 18:07:26 -07:00
Albert Gorski
8b309d62f4 Use guava's 'Joiner' instead of 'String.join'
This replaces the usage of the Java 8 'String.join' method with guava's
'Joiner' which is Java 6 compatible.
2016-09-22 23:25:11 -07:00
Ben Gruver
bb062e9336 Fix ReflectionUtils.javaToDexName
Fixes the conversion for primitive and array types
2016-09-22 19:50:27 -07:00
Ben Gruver
1aa9df3867 Fix the ordering of methods in the post-default-method vtable calculation 2016-09-22 19:49:29 -07:00
Ben Gruver
ecd89816b3 Fix up some minor issues with --normalize-virtual-methods 2016-09-19 09:08:54 -07:00
Ben Gruver
815f023e4e Use a class reference for interface methods in the vtable 2016-09-19 09:08:54 -07:00
Ben Gruver
41ba26d00a Improve the canNarrowAfterInstanceOf check when using an empty bootclasspath
If the types in question can't be resolved, we just assume that the
narrowing can't happen.
2016-09-19 09:08:54 -07:00
Ben Gruver
31ad2bc100 Refactor how classpath loading works 2016-09-19 09:08:53 -07:00
Ben Gruver
4c77ad7617 Minor fixes to OatVersions.txt 2016-09-19 09:08:53 -07:00
Ben Gruver
5544281ed6 Clean up some lint in ClassPath/ClassProto 2016-09-19 09:08:53 -07:00
Ben Gruver
db9f86dfdd Make getRegisterType throw AnalysisException instead of ExceptionWithContext
This will cause MethodAnalyzer to print more information when this occurs
2016-09-19 09:08:53 -07:00
Ben Gruver
26a4f1e603 Fix an issue with instance-of type inference
We should only infer the register type after an if-eqz/nez if it has a
single predecessor that is the instance-of instruction.
2016-09-19 09:08:53 -07:00
Ben Gruver
9ec379a561 Add support for vtable generation for post-default method ART
The interfaces are iterated over in a different order when populating the
vtable
2016-09-19 09:08:53 -07:00
Ben Gruver
d13be24e27 Don't propagate a non-narrowing conversion through a move 2016-09-17 21:30:28 -07:00
Ben Gruver
fbfe388e40 The list dex command should generate an error when used on a non-zip/oat file 2016-09-17 21:30:28 -07:00
Ben Gruver
d7d995cc2d Remove the now-unused experimental opcodes flag/functionality 2016-09-17 21:30:28 -07:00
Ben Gruver
e7e58a6996 Fix reading a dex file from a zip file 2016-09-04 14:00:01 -07:00
Ben Gruver
fdfb6d10f4 Update OatVersions.txt to version 86 2016-09-04 11:47:04 -07:00
Ben Gruver
22a2807101 Implement DexFileFactory.loadAllDexFiles 2016-08-30 22:36:15 -07:00
Ben Gruver
3587c6f2a6 Refactor DexFileFactory and implement new syntax for dex entries 2016-08-30 22:36:15 -07:00
Ben Gruver
41a5b4953c Fix the dump command to work with dex files in an oat file 2016-08-30 22:16:16 -07:00
Ben Gruver
4254a2073a Use a java 6-friendly string joiner 2016-08-27 12:01:35 -07:00
Ben Gruver
3735d4778f Merge branch 'master' into v2.2_WIP 2016-08-27 12:01:22 -07:00