Anton Bannykh
b3f1908026
JS_IR: remove stub generator from IrBuiltins
2019-03-26 17:38:44 +03:00
Anton Bannykh
ed440fc060
JS IR: remove obsolete hack from SymbolTable
2019-03-26 17:38:43 +03:00
Anton Bannykh
530804d072
JS_IR: eager IrBuiltins
2019-03-26 17:38:43 +03:00
Anton Bannykh
45f5342911
JS IR: remove obsolete hacks
2019-03-26 17:38:43 +03:00
Anton Bannykh
bba4399910
JS IR: enable IR validation
2019-03-26 17:38:43 +03:00
pyos
ef5e02da84
JVM_IR: handle Nothing and Unit more consistently.
...
* In blocks, discard the result of any statement that has a return
type other than void. This was previously done by wrapping each
statement into an "implicit Unit conversion" that was actually
compiled down to a stack pop instead. If an expression happened to
already have type Unit, however, such a conversion was not inserted,
resulting in a stray reference on the stack. These conversions are
now redundant and should probably be removed.
* In assignments and non-exhaustive conditionals, materialize a Unit
on the stack to avoid depth mismatches that trip up the bytecode
validator. Because such expressions are generally used at block level
(and, indeed, the frontend will reject a non-exhaustive conditional
used as an expression), combined with the above change this results
in no additional GETSTATIC opcodes, as they are immediately removed
by the peephole optimizer.
2019-03-26 13:32:02 +01:00
Steven Schäfer
29b7da7c49
Implement support for KClass fields in annotation classes.
2019-03-26 11:54:16 +01:00
Ting-Yuan Huang
4ff2825de0
Fix an assertion for type parameters
2019-03-26 10:44:06 +03:00
Alexander Udalov
fff22d9372
Remove hack from JvmBuiltinOptimizationLowering related to booleanNotSymbol
2019-03-25 17:49:15 +03:00
Anton Bannykh
a382956c19
IR: use the correct descriptor for the booleanNotSymbol creation
...
NOTE corresponding function now has a dispatch receiver instead of a
single argument
2019-03-25 17:49:15 +03:00
Dmitry Petrov
d4525e19dd
IR: get rid of descriptors in local delegated properties rendering
2019-03-25 11:50:14 +03:00
Dmitry Petrov
12e9943f8f
IR: IrCallableReference now implements IrDeclarationReference
2019-03-25 11:50:14 +03:00
Dmitry Petrov
6ca61cf347
IR: symbol for IrLocalDelegatedProperty
2019-03-25 11:50:14 +03:00
Georgy Bronnikov
7f8cbf5434
JVM_IR: handle new JVM targets in AdditionalClassAnnotationsLowering
2019-03-25 02:18:57 +03:00
Georgy Bronnikov
0a2450bcd5
Remove duplicate definitions
2019-03-23 19:04:36 +03:00
Georgy Bronnikov
451cda79de
Rewrite AnnotationCodegen for IR, removing descriptors
2019-03-23 19:04:36 +03:00
Alexander Gorshenev
a3b1d3ff62
Allow forward declarations bring additional IR dependencies
...
for modules present in metadata.
2019-03-22 16:47:08 +03:00
Alexander Gorshenev
674580fdef
File annotation deserialization is triggered by the first file use
2019-03-22 16:47:08 +03:00
Alexander Gorshenev
215da10687
A little refactoring of deserializer in preparation for the next commit.
2019-03-22 16:47:08 +03:00
Alexander Gorshenev
3bc4616a17
Eliminated global state in IR deserializer.
2019-03-22 16:47:08 +03:00
Georgy Bronnikov
fae003866b
Use CLI compiler arguments directly in PhaseConfig creation
2019-03-21 23:32:25 +03:00
Georgy Bronnikov
40079f7cae
Use default argument values in PhaseConfig constructor
2019-03-21 23:32:25 +03:00
Alexander Udalov
0fb444a5d1
Move createPhaseConfig to module cli
...
To use things like MessageCollector to report errors/warnings related to
incorrect phase configuration flags
2019-03-21 23:32:25 +03:00
Alexander Udalov
2995be8bd2
Move usages of createPhaseConfig up to cli & test modules
2019-03-21 23:32:25 +03:00
Alexander Udalov
ddad3034da
Extract createPhaseConfig from PhaseConfig
...
To remove dependency of PhaseConfig on CLI-dependent concepts such as
CompilerConfiguration
2019-03-21 23:32:25 +03:00
Roman Artemev
538512fa2a
[JS IR BE] Fix unbound symbols after deserialization
...
* restore broken psi2ir invariant
2019-03-21 16:26:51 +03:00
Dmitry Petrov
f9119c001e
JVM_IR: generate file class without members if it has metadata
2019-03-21 11:23:51 +03:00
Dmitry Petrov
a5c95275f0
IR: get rid of descriptors in DumpIrTree
2019-03-21 11:23:51 +03:00
Dmitry Petrov
9a82f926a1
IR: descriptor-less rendering of IR elements (work in progress)
2019-03-21 11:23:51 +03:00
Dmitry Petrov
cd138bc022
IR: IrSymbolVisitor
2019-03-21 11:23:51 +03:00
Dmitry Petrov
110a15d395
IR: drop IrFile.fileAnnotations (it already has annotations anyway)
2019-03-21 11:23:51 +03:00
Dmitry Petrov
b42aa39033
IR: drop IrTypeAlias
2019-03-21 11:23:51 +03:00
Dmitry Petrov
e49eae528c
IR: don't use descriptors in rendering (work in progress)
...
There's some descriptor-based code remaining. Need some more work on IR.
2019-03-21 11:23:51 +03:00
Roman Artemev
698594b14d
[IR] Fix classifier equality for Local classes
2019-03-20 23:45:03 +03:00
Ting-Yuan Huang
79fcaae991
Implement constant folding in the IR backend for JVM
...
The newly added pass folds the set of constant functions of the
current backend, plus IrBuiltIns.
2019-03-20 21:02:55 +01:00
Ting-Yuan Huang
f352a4dcd4
IrBuiltIns: factoring out operator names
...
so that they can be used in other contexts.
2019-03-20 21:02:55 +01:00
Dmitry Petrov
21dbe2e7e7
IR: symbolName mangling for IrTypeParameter
...
(original author: Alexander Gorshenev)
2019-03-20 11:57:57 +03:00
Roman Artemev
206e5d30d9
Regenerate protobuf
2019-03-20 11:57:57 +03:00
romanart
5b5f3a7468
[IR] Fix classes TypeParameter [de]serialization
2019-03-20 11:57:57 +03:00
Dmitry Petrov
9f48695dde
psi2ir: no unbound field symbols in delegated property references
...
#KT-30323 Fixed
2019-03-20 11:57:57 +03:00
Dmitry Petrov
15918fc475
IR: deprecations
2019-03-20 11:57:57 +03:00
Dmitry Petrov
bd9c5645cd
IR: fix property reference symbol binding for generic properties
2019-03-20 11:57:57 +03:00
Dmitry Petrov
8b4dab7c25
JS_IR: fix property name generation
2019-03-20 11:57:57 +03:00
Dmitry Petrov
04fad012a0
IR: IrPropertySymbol introduced, some code cleaned up
...
#KT-30304
2019-03-20 11:57:57 +03:00
Ting-Yuan Huang
f6cf434650
when: emit switch for String if possible
...
Effectively, the following when structure:
when (s) {
s1, s2 -> e1,
s3 -> e2,
s4 -> e3,
...
else -> e
}
is implemented as:
when (s.hashCode()) {
h1 -> {
if (s == s1)
e1
else if (s == s2)
e1
else if (s == s3)
e2
else
e
}
h2 -> if (s == s3) e2 else e,
...
else -> e
}
where s1.hashCode() == s2.hashCode() == s3.hashCode() == h1,
s4.hashCode() == h2.
A tableswitch or lookupswitch is used for the hash code lookup.
Change-Id: I087bf623dbb4a41d3cc64399a1b42342a50757a6
2019-03-20 09:13:51 +01:00
Roman Artemev
2ed29d8869
[IR BE] Use pure IrType instead of KotlinType
...
* clean up code
2019-03-19 20:09:07 +03:00
pyos
39adfcced1
Add more comments to PropertyReferenceLowering
2019-03-19 12:00:29 +01:00
pyos
6c68474489
JVM_IR: use correct signatures for local delegated property references
...
Which is `<v#N>` where N is the index of that property in the containing
class.
2019-03-19 12:00:29 +01:00
pyos
330c4648cb
Implement property references in JVM_IR
2019-03-19 12:00:29 +01:00
pyos
82ccf81da8
Fix this remapping in inner class constructors
...
Inner class constructors should use the argument instead of reading
outer `this` from a field because if such an access happens before a
delegating constructor call, e.g. when evaluating an argument, a JVM
bytecode validation error will be thrown. (The only operation on `this`
allowed before a delegating constructor call is SETFIELD, and only if
the field in question is declared in the same class.)
2019-03-19 09:20:41 +01:00