• Home
  • History
  • Annotate
  • only in /external/turbine/java/com/google/turbine/bytecode/
History log of /external/turbine/java/com/google/turbine/bytecode/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
28fc0ccb690cad787da840572c73fd3e3311047d 03-Oct-2017 cushon <cushon@google.com> Don't reject v53 class files

MOE_MIGRATED_REVID=170776303
lassReader.java
33b30eb88e4724f61d7ea86b0a6564cb702e6615 07-Aug-2017 cushon <cushon@google.com> Fix a constant pool reading bug

Handle > Short.MAX_VALUE constant pool entries by storing unsigned
shorts as ints instead of signed shorts.

I noticed this testing with the full implementation jar for a very large
proto; apparently we've never hit this limit for ijar/hjars.

MOE_MIGRATED_REVID=164506910
nnotationWriter.java
lassWriter.java
onstantPool.java
onstantPoolReader.java
2a8197d78edb2eedbf60d6b2f0544e1e0760a488 14-Apr-2017 cushon <cushon@google.com> Break turbine integration test dependency on javap

MOE_MIGRATED_REVID=153125370
yteReader.java
onstantPoolReader.java
4a9a664dd17b17d4ca4641f6267a59f644f20a07 01-Feb-2017 cushon <cushon@google.com> Fix handling of unnamed inner classes

The InnerClass attributes for anonymous classes have a null class name,
which turbine shouldn't try to read. This fixes a NPE when repackaging
supertypes loaded from implementation jars; turbine itself doesn't write
InnerClass attributes for anonymous classes.

MOE_MIGRATED_REVID=146268069
lassFile.java
lassReader.java
d1509927c68b994ecb9eb95a8ae8478da9f04ed4 26-Jan-2017 cushon <cushon@google.com> Repackage supertypes of compiled classes in the output jar

so header compilations can be performed without transitive dependencies
on the classpath.

MOE_MIGRATED_REVID=145636768
lassReader.java
43e3d0488f0e37357480462a88de3b36a3220d1e 17-Jan-2017 cushon <cushon@google.com> Make an assertion more useful

MOE_MIGRATED_REVID=144728052
ig/SigWriter.java
7700e365dd9cd14b9a03bda4cf10bc9f7dc1d8d4 20-Dec-2016 cushon <cushon@google.com> Fix a class reading bug

CONSTANT_Utf8_info lengths were incorrectly being read as signed shorts,
instead of unsigned shorts.

MOE_MIGRATED_REVID=142568161
yteReader.java
lassReader.java
onstantPoolReader.java
9278ff215c8a8c45c054ca71599df4cdff738666 29-Nov-2016 cushon <cushon@google.com> Resume emitting deprecated attributes

46527d994f4cd68a857a907abebe69559baf57eb was a mistake: javac only emits
warnings if the attribute is present, the annotation is not sufficient.

This doesn't change the decision to ignore @deprecated javadoc tags.

MOE_MIGRATED_REVID=140423585
ttribute.java
ttributeWriter.java
owerAttributes.java
3d2df35d983a31bc7a68e1d76b7c71956f477871 17-Nov-2016 cushon <cushon@google.com> Emit MethodParameters attributes

MOE_MIGRATED_REVID=139397608
ttribute.java
ttributeWriter.java
lassFile.java
lassReader.java
owerAttributes.java
46527d994f4cd68a857a907abebe69559baf57eb 16-Nov-2016 cushon <cushon@google.com> Stop emitting Deprecated attributes

These have been obsolete since 1.5, and implementing them properly would
require parsing @deprecated javadoc tags.

MOE_MIGRATED_REVID=139261687
ttribute.java
ttributeWriter.java
owerAttributes.java
86eb6f1c5b02fc461b47602de67551361f9d695f 03-Nov-2016 cushon <cushon@google.com> Support repeatable annotations

Also consolidate handling of annotation meta-information (target,
retention, and now repeatable).

MOE_MIGRATED_REVID=138010789
lassReader.java
cb5c2b23fe5c5adda2085043425e882009c456eb 01-Nov-2016 cushon <cushon@google.com> Set type_argument_index to zero for non-type argument type_path_kinds

as required by JVMS 4.7.20.2.

MOE_MIGRATED_REVID=137770084
lassFile.java
ecb791c15008191f75be7a7e747bb387530d16d2 31-Oct-2016 cushon <cushon@google.com> Disambiguate type annotations on fields, parameters, and methods

Given a declaration like `private @A int x;` or `@A private int x;`,
there are three possibilities:

* `@A` is a declaration annotation on the field
* `@A` is a `TYPE_USE` annotation on the type
* `@A` sets `TYPE_USE` _and_ `FIELD` targets, and appears in the
bytecode as both a declaration annotation and as a type annotation

This can't be determined syntactically -- note that the presence of
other modifiers before or after the annotation has no bearing on whether
the annotation targets the type or the declaration.

So, we wait until constant binding is done, read the `@Target`
meta-annotation for each ambiguous annotation, and move it to the
appropriate location.

MOE_MIGRATED_REVID=137749757
lassReader.java
3e5b0c401c8d93182e9f0ce6f0de81f7574f5aca 29-Oct-2016 cushon <cushon@google.com> Initial type annotation support

Handle binding of type annotations, evaluation of type annotation
arguments, and lowering to bytecode for all type annotations kinds that
can appears in headers.

Currently type annotations are identified syntactically, we need to read
@Target to deal with ambiguous declarations on fields and method return
types (e.g. `@A int x;` could be `TYPE_USE` or `FIELD` or both).

MOE_MIGRATED_REVID=137566512
nnotationWriter.java
ttribute.java
ttributeWriter.java
lassFile.java
lassReader.java
owerAttributes.java
ig/Sig.java
ig/SigParser.java
ig/SigWriter.java
d8ea288afe5a7df01f74a0c5b55e489b0dc62349 25-Oct-2016 cushon <cushon@google.com> Don't crash when compiling java.lang.Object

MOE_MIGRATED_REVID=137196464
lassWriter.java
onstantPool.java
4b69277c912bf7ab6f9915f407ec5cb207566747 25-Oct-2016 cushon <cushon@google.com> Fix type canonicalization of recursive types, and wildcards

Instantiate types recursively; previously [T/e]A<T> worked but
[T/e]A<B<T>> didn't.

Also handle instantiating arrays with parametric element types, which
can't appear as top-level types during canonicalization but can appear
as type arguments (e.g. [T/e]A<T[]> -> A<e[]>).

The array instantiation case is interesting because it allows the
creation of arrays with wildcard element types. The JVMS signature
grammar [1] doesn't actually allow that, but both javac and ecj can be
coerced into emitting it:

class A<X> { class I {} }
class Test {
class B<Y> extends A<Y[]> {}
B<?>.I i; // LA<[*>.I;
}

To support this, restructure the type and signature models to make
wildcards first-class types, instead of only allowing them as top-level
type arguments.

[1] https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.9.1

MOE_MIGRATED_REVID=137101539
ig/Sig.java
ig/SigParser.java
ig/SigWriter.java
3088f83b806b82d866d119e344da274105f42821 11-Oct-2016 cushon <cushon@google.com> Full JLS 7 annotation handling

Support all annotation values including nested annotations and array
initializers, and all declaration annotation sites including parameters
and methods.

MOE_MIGRATED_REVID=135837401
nnotationWriter.java
ttribute.java
ttributeWriter.java
lassFile.java
lassReader.java
owerAttributes.java
4d51bb2c21dffcb267e9b3a3538117adc6009e57 08-Oct-2016 cushon <cushon@google.com> Initial annotation binding and writing

Includes declaration annotations on fields and classes, and handling of
annotation declarations and retentions.

Declaration annotations on methods and parameters, as well as class
literal and nested annotation values, are not yet supported.

MOE_MIGRATED_REVID=135531109
nnotationWriter.java
ttribute.java
ttributeWriter.java
lassFile.java
owerAttributes.java
bd2b29bb7fd05aed8481ef8342c09c4e88492c88 07-Oct-2016 cushon <cushon@google.com> Constant fields

Initial constant field handling. Currently only literal values and
references to other fields are supported, constant expression evaluation
will be added later. Includes class file writing support for additional
literal kinds.

MOE_MIGRATED_REVID=135506016
ttribute.java
ttributeWriter.java
lassWriter.java
onstantPool.java
owerAttributes.java
d1a195115e72855d8928c07ff4a166759546ed23 04-Oct-2016 cushon <cushon@google.com> Bound nodes with types, and initial lowering to bytecode

Add the model used by all remaining binding phases, and lowering from
that model to bytecode.

MOE_MIGRATED_REVID=135135482
onstantPool.java
owerAttributes.java
783f80f37ad70eba7fd4b5e11a34854724227bf6 19-Sep-2016 cushon <cushon@google.com> Class file writing

Constant field initializers, annotations, and a bunch of constant pool
entry kinds are absent, we won't need them for a bit.

MOE_MIGRATED_REVID=133635333
ttribute.java
ttributeWriter.java
lassReader.java
lassWriter.java
onstantPool.java
owerAttributes.java
38a11c000aff3774567d354577cea2d2af65aaa7 19-Sep-2016 cushon <cushon@google.com> JVMS 4.3.4 signature parsing and output

The next phase of header compilation will perform type analysis, and it needs
to be able to reason about types in bytecode. This is a step towards exposing
type information in BytecodeBoundClass. Writing signatures back to strings
won't be needed until lowering is implemented, but it makes this easier to test.

MOE_MIGRATED_REVID=133627571
ig/Sig.java
ig/SigParser.java
ig/SigWriter.java
d01fe55c0e5007580f441eb336a14473e00b8f54 19-Sep-2016 cushon <cushon@google.com> Consolidate ClassFile model types as members of ClassFile

This frees up some space in the top-level namespace for other types.

MOE_MIGRATED_REVID=133626943
nnotationInfo.java
lassFile.java
lassReader.java
ieldInfo.java
nnerClass.java
ethodInfo.java
fe7450192ce5268d73f19b404ca8d454023b3569 14-Sep-2016 cushon <cushon@google.com> Class file reading

The is the first half of supporting classpaths in analysis. The data
model is going to be shared by the code that eventually lowers the
classes being compiled to bytecode.

MOE_MIGRATED_REVID=133150966
nnotationInfo.java
yteReader.java
lassFile.java
lassReader.java
onstantPoolReader.java
ieldInfo.java
nnerClass.java
ethodInfo.java