Ivan Kylchik
0400a62014
Improve receivers search in data pool
2020-06-24 16:12:50 +03:00
Ivan Kylchik
b6cf17af1b
Save context of inline and local functions
2020-06-24 16:12:50 +03:00
Ivan Kylchik
28d6752315
Change usages of IrFunctionImpl to more common IrSimpleFunction
2020-06-24 16:12:50 +03:00
Ivan Kylchik
c45993b2b1
Implement interpretation for return statements with labels
2020-06-24 16:12:50 +03:00
Ivan Kylchik
5c845da18a
Implement interpretation for unsigned numbers
2020-06-24 16:12:50 +03:00
Ivan Kylchik
b175f46315
Implement interpretation of Char and Long classes from js stdlib
2020-06-24 16:12:50 +03:00
Ivan Kylchik
2310a04e4e
Add toString, hashCode and equals primitives methods in ir builtin map
2020-06-24 16:12:49 +03:00
Ivan Kylchik
00366197f8
Implement interpretation of Enum class hashCode method
2020-06-24 16:12:49 +03:00
Ivan Kylchik
6a9f4cf8b7
Change interpretCall to be able to interpret data class copy method
2020-06-24 16:12:49 +03:00
Ivan Kylchik
bab4407c0a
Implement interpretation for destructing declaration
2020-06-24 16:12:49 +03:00
Ivan Kylchik
ff6e06aa14
Implement regular expression interpretation
2020-06-24 16:12:49 +03:00
Ivan Kylchik
4d80d17b23
Implement interpretation for expect enum class
2020-06-24 16:12:49 +03:00
Ivan Kylchik
731fb9bc70
Make ir interpreter to work with minimal dependence on ir lowerings
2020-06-24 16:12:48 +03:00
Ivan Kylchik
4c1727b82e
Move intrinsic handling inside IrInterpreter class
2020-06-24 16:12:48 +03:00
Ivan Kylchik
27e2faa778
Implement enum interpretation
2020-06-24 16:12:48 +03:00
Ivan Kylchik
d6a45dfe75
Implement instance of check in compile time
2020-06-24 16:12:48 +03:00
Ivan Kylchik
0a70277240
Make stack trace from exceptions more precise
...
Additional information is retrieved from original stack trace when
exception happened during wrapper invocation.
2020-06-24 16:12:48 +03:00
Ivan Kylchik
18d29f7d98
Make possible to create arrays with their constructors
2020-06-24 16:12:47 +03:00
Ivan Kylchik
aca889a95b
Add inc, dec methods in ir builtins map and remove toString and equals
2020-06-24 16:12:47 +03:00
Ivan Kylchik
169a2f361c
Add support for cause field in exceptions
2020-06-24 16:12:47 +03:00
Ivan Kylchik
6af47ad7b3
Implement basic stack trace reporting if unhandled exception appear
2020-06-24 16:12:47 +03:00
Ivan Kylchik
66dbd1af34
Mark all IrInterpreter methods as suspend
...
This change is used to get rid of unhandled StackOverflowError and
to be able to manually throw it.
2020-06-24 16:12:47 +03:00
Ivan Kylchik
2985e8bcd3
Clean up code of ir builtins map generator
2020-06-24 16:12:47 +03:00
Ivan Kylchik
cbc9c19faf
Add methods for message and clause from Throwable in ir builtins map
2020-06-24 16:12:46 +03:00
Ivan Kylchik
d9279bff73
Introduce ExceptionState class responsible for all kind of exceptions
2020-06-24 16:12:46 +03:00
Ivan Kylchik
be3eb98fbd
Introduce new Common state that represent common object
...
This is a replacement for Complex, that are now an abstract class.
2020-06-24 16:12:46 +03:00
Ivan Kylchik
4345294ac1
Add all methods from Any class in ir builtins map
2020-06-24 16:12:46 +03:00
Ivan Kylchik
d03937cdb6
Pop return value after implicit coercion to unit
2020-06-24 16:12:46 +03:00
Ivan Kylchik
792ae8d272
Get rid of dynamic cast interpretation
2020-06-24 16:12:46 +03:00
Ivan Kylchik
3ccf542b38
Rework object and companion object interpretation
...
For now object value or fun can be interpreter only if they are
marked explicitly. Annotation for all object is restricted and if
whole class is marked with CompileTimeAnnotation this doesn't
mean that companion object is computable.
2020-06-24 16:12:46 +03:00
Ivan Kylchik
0ef34dcf53
Implement class cast interpretation
2020-06-24 16:12:45 +03:00
Ivan Kylchik
a25896bf6a
Implement string concatenation interpretation
2020-06-24 16:12:45 +03:00
Ivan Kylchik
0839e7afdc
Describe default behaviour for Any class methods
...
We are talking about such methods as equals, hashCode and toString.
2020-06-24 16:12:45 +03:00
Ivan Kylchik
a6cc7cdc23
Rewrite exception handler to catch null pointer exception in js ir
...
For now null check works as !! operator called in jvm.
So it throw KotlinNullPointerException, but js ir require
NullPointerException
2020-06-24 16:12:45 +03:00
Ivan Kylchik
5209f4a9c0
Add not null (!!) operator in ir builtins map
2020-06-24 16:12:45 +03:00
Ivan Kylchik
bb119280be
Interpret basic interpretation for try catch block
2020-06-24 16:12:45 +03:00
Ivan Kylchik
b5778e6de5
Implement interpretation for lambdas and anonymous functions
2020-06-24 16:12:45 +03:00
Ivan Kylchik
4fdfdb9b4c
Implement StringBuilder interpretation
2020-06-24 16:12:44 +03:00
Ivan Kylchik
06ee4ac21f
Implement List and MutableList interpretation
2020-06-24 16:12:44 +03:00
Ivan Kylchik
9555497d5d
Implement arrayOf symbols interpretation
2020-06-24 16:12:44 +03:00
Ivan Kylchik
4dc1e587b4
Implement vararg interpretation
2020-06-24 16:12:44 +03:00
Ivan Kylchik
45555d681d
Add methods from arrays classes in ir builtins map
2020-06-24 16:12:44 +03:00
Ivan Kylchik
3ab7c263d0
Implement continue statement interpretation
2020-06-24 16:12:44 +03:00
Ivan Kylchik
c4cc858b84
Extract ir function interpretation in separate method
...
This modification will be used to get exception stack trace
2020-06-24 16:12:44 +03:00
Ivan Kylchik
f99829ce5e
Implement trim function interpretation in compile time
2020-06-24 16:12:43 +03:00
Ivan Kylchik
178b2a07ae
Move all interpreter methods inside IrInterpreter class
2020-06-24 16:12:43 +03:00
Ivan Kylchik
f8cb637712
Change IrInterpreter to modify tree structure into the flat one
...
This modification is necessary to implement right control flow
2020-06-24 16:12:43 +03:00
Ivan Kylchik
0a76da99cf
Implement equalTo function for descriptors
2020-06-24 16:12:43 +03:00
Ivan Kylchik
dd93deddd7
Add while loop support in interpreter
2020-06-24 16:12:43 +03:00
Ivan Kylchik
c2a70b4e57
Add rangeTo entry in builtins map
2020-06-24 16:12:43 +03:00