Alexey Tsvetkov
d3fce0d0ec
JS inline return statements after top return
2014-10-03 14:23:55 +04:00
Alexey Tsvetkov
7a8ba9c733
JS backend refactor: refactored LiteralFunctionTranslator after code review
2014-10-03 14:23:55 +04:00
Alexey Tsvetkov
c47732e7eb
JS inline minor: optimized imports
2014-10-03 14:23:55 +04:00
Alexey Tsvetkov
64982aa72e
JS backend minor: made CALL_FUNCTION constant public
2014-10-03 14:23:54 +04:00
Alexey Tsvetkov
d6f8aa6f03
JS backend minor: made undefined expression static field
2014-10-03 14:23:54 +04:00
Alexey Tsvetkov
fb475775c9
JS inline minor: inlined doDirectInline()
2014-10-03 14:23:54 +04:00
Alexey Tsvetkov
6018b103cc
JS inline refactor: splitted Renaming.kt
2014-10-03 14:23:54 +04:00
Alexey Tsvetkov
17a78dd522
JS inline refactor: moved invocation and function utils to separate files
2014-10-03 14:23:54 +04:00
Alexey Tsvetkov
7fbed5ee86
JS inline refactor: extracted flattenStatement() function
2014-10-03 14:23:54 +04:00
Alexey Tsvetkov
80eca3e49e
JS inline refactor: refactored clean utils after code review
2014-10-03 14:23:53 +04:00
Alexey Tsvetkov
1ad090e3a7
JS inline refactor: moved contexts to 'context' package
2014-10-03 14:23:53 +04:00
Alexey Tsvetkov
cd9349deb7
JS inline refactor: moved JS AST collecting utils to 'collectors' package
2014-10-03 14:23:53 +04:00
Alexey Tsvetkov
86c253ef6d
JS inline refactor: moved JS AST modifying utils to 'rewriters' package
2014-10-03 14:23:53 +04:00
Alexey Tsvetkov
d3a8f78a88
JS inline minor: moved JsInliningContext definition to the bottom of JsInliner
2014-10-03 14:23:53 +04:00
Zalim Bashorov
0e075c7d5f
JS backend: added the ability to turn off the inline optimization.
2014-10-03 14:23:53 +04:00
Alexey Tsvetkov
338789664c
JS inline: use inlined function name for inline labels
2014-10-03 14:23:53 +04:00
Alexey Tsvetkov
cbb9e9c40e
JS inline: inline simple-return functions directly
2014-10-03 14:23:52 +04:00
Alexey Tsvetkov
da817e7ed2
JS inline: use dfs processing order, as it is independent of declaration order
2014-10-03 14:23:52 +04:00
Alexey Tsvetkov
a5688440a1
JS inline: added inline recursion exception
2014-10-03 14:23:52 +04:00
Alexey Tsvetkov
5aaa186180
JS inline: remove unused function literals and local functions
2014-10-03 14:23:52 +04:00
Alexey Tsvetkov
ec6108ee05
JS inline: remove unused local function instances
2014-10-03 14:23:52 +04:00
Alexey Tsvetkov
7f98ceb427
JS inline: common reference utilities for cleaning up after inline
2014-10-03 14:23:52 +04:00
Alexey Tsvetkov
ddb3157a58
JS inline: added collections utils
2014-10-03 14:23:52 +04:00
Alexey Tsvetkov
c78169d236
JS inline: support inline local functions
2014-10-03 14:23:51 +04:00
Alexey Tsvetkov
1dafa79eaf
JS inline: prevent inliner from inlining multiple subexpressions at once
2014-10-03 14:23:51 +04:00
Alexey Tsvetkov
87d108e75e
JS inline: default parameter processing for inlined functions
...
When function is inlined initializers
for default parameters can be:
1. removed if argument is not `void 0`
2. expanded otherwise
2014-10-03 14:23:51 +04:00
Alexey Tsvetkov
1f68b43558
JS inline: support inline extension functions
2014-10-03 14:23:51 +04:00
Alexey Tsvetkov
78e7b9c32b
JS inline: replace returns with result variable assignment and break
2014-10-03 14:23:51 +04:00
Alexey Tsvetkov
667a22f84e
JS inline: alias arguments and local variables
2014-10-03 14:23:51 +04:00
Alexey Tsvetkov
49718f143b
JS inline: create JsInliningContext per function processed by JsInliner
2014-10-03 14:23:51 +04:00
Alexey Tsvetkov
0151b7a2d1
JS inline: added inlining context utilities
2014-10-03 14:23:50 +04:00
Alexey Tsvetkov
f29816f19c
JS inline: added invocation utils
2014-10-03 14:23:50 +04:00
Alexey Tsvetkov
1aa55f3e54
JS inline: run JsInliner after AST is built
2014-10-03 14:23:50 +04:00
Alexey Tsvetkov
3c4125c233
JS inline: inline function calls
2014-10-03 14:23:50 +04:00
Alexey Tsvetkov
3c7677e73e
JS inline: collect defined functions
2014-10-03 14:23:50 +04:00
Alexey Tsvetkov
2e38833367
JS inline: save static ref to JsFunction in JsName
2014-10-03 14:23:50 +04:00
Alexey Tsvetkov
e4cd733879
JS inline: added JsInliner
2014-10-03 14:23:50 +04:00
Alexey Tsvetkov
60271201fc
JS inline: added FunctionInlineMutator
2014-10-03 14:23:49 +04:00
Alexey Tsvetkov
2c443532c5
JS inline: added InlineableResult
2014-10-03 14:23:49 +04:00
Alexey Tsvetkov
3cdae252ef
JS inline: save inline status during translation
2014-10-03 14:23:49 +04:00
Alexey Tsvetkov
efac671ae6
JS inline: removed legacy inline logic
2014-10-03 14:23:49 +04:00
Alexey Tsvetkov
f076ab8f54
JS backend: added deepCopy() method to JS AST nodes
2014-10-03 14:23:49 +04:00
Alexey Tsvetkov
b880775de5
JS backend: removed JsBlock toString() truncation
...
Truncation complicates debugging.
Some inline tests depend on functions strings comparison.
2014-10-03 14:23:49 +04:00
Alexey Tsvetkov
28b3ed67c1
JS backend: made JsScope hasOwnName method public
2014-10-03 14:23:48 +04:00
Alexey Tsvetkov
2b6045af0f
JS backend: made JsBlock statements list modifieable
...
Inliner should be able to add statements of inline function to JsBlock
2014-10-03 14:23:48 +04:00
Alexey Tsvetkov
53fe237499
JS backend: made JsInvocation arguments modifieable
2014-10-03 14:23:48 +04:00
Alexey Tsvetkov
96e5985ca9
JS backend: added NotNull annotation
2014-10-03 14:23:48 +04:00
Alexey Tsvetkov
d27b7b793f
JS backend: break label should be JsNameRef, not String
...
The reason is to make it easier to distinguish
between different break labels (that's valid on same level).
JsNameRefs can be distinguished by their JsName.
2014-10-03 14:23:48 +04:00
Alexey Tsvetkov
915f8734c5
JS backend: added visitors with context
2014-10-03 14:23:48 +04:00
Alexey Tsvetkov
15e963de25
JS test: turn rhino optimization off for stdlib tests
2014-10-03 14:23:48 +04:00