or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
Intensive Prior Research on Escape Analysis
Prior Researches
Format:
(JVM) Escape Analysis in the Context of Dynamic Compilation and Deoptimization
Institute for System Software
Johannes Kepler University Linz
Linz, Austria
Institute for System Software
Johannes Kepler University Linz
Linz, Austria
what ?
what is the point of the idea ?
how is it interesting compared to prior works ?
how is it validated ?
is there any remaining discussion ?
How they limit the lattice of field escapes (since its size isn't limited) ?# of SSA statements is finite, and # of allocations is finite, thus field states is also finitewhat's next to read ?
escape analysis. In Proceedings of the ACM SIGPLAN
Conference on Programming Language Design and
Implementation, pages 35–46, Snowbird, June 2001.
(JVM) Partial Escape Analysis and Scalar Replacement for Java
Johannes Kepler University
Linz, Austria
Oracle Labs
Johannes Kepler University
Linz, Austria
Merge
node: merge control-flowslightweight dynamic analysis and removal of object
churn. In Proceedings of the ACM SIGPLAN
Conference on Object-Oriented Programming Systems,
Languages, and Applications, pages 127–142. ACM
Press, 2008.
of objects in the CACAO virtual machine. In
Proceedings of the International Conference on the
Principles and Practice of Programming in Java,
pages 153–161. ACM Press, 2009
Notes:
(JVM) Current state of EA and its uses in the JVM
This talk summarizes the status of escape analysis and related optimizations in Java community:
e.g. motivating example:
9432
lines of C++ code(LuaJIT) Allocation Sinking Optimization
(JavaScript) Escape Analysis in V8
(LLVM) Alias Analysis
alias
methodgetModRefInfo(CS1, CS2)
: memory effect test between function callsdoesNotAccessMemory
/onlyReadsMemory
basic-aa
: walks through dominationOther references
Observations
General transition of memory optimization:
Analysis design
General design choices:
(which may lead to more iterations to reach a fixpoint)
Escape analyses in the wild:
What's for Julia
status quo, and future
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →Union
-typed fieldsImmutableArray
PartialStruct
for mutablesPartialStruct.fields
containReplaceable(::SlotNumber)
getfield(...)::Union{Const,Replaceable}
Q. "SROA at inference"?
*
)why on LLVM ?
problems:
more researches
focus on compactness ?
other compilers (tracing JIT) vs. Julia (ahead of runtime)
This seems to be such a concept that is very specific to tracing-JIT compilers,
where VM execution sometimes transfers the control to the interpreter
in a case any speculative assumption for optimization gets invalidated. ↩︎
"synchronization removal" here seems to simply means "lock elision" ↩︎
This statement seems to reflect their purpose of SROA: SROA is done for allocation elimination and an object allocation can't be eliminated if there is any site it escapes. ↩︎
They seem to use "formal" when referring to declared method arguments, and "actual" to those actually passed at callsite. ↩︎
"How LuaJIT encodes flow-sensitivity ?"
LuaJIT's tracing-JIT nature separates an unlikely branch into a separate snapshot.
It allows escapes that happens in the rare snapshots not to escape the objects in the main trace.
In other word, necessary flow-sensitivity is encoded within the nature of tracing JIT. ↩︎ ↩︎
Well, usually, the "inter-procedural" part isn't so challenging: basically, inter-procedural
information is encoded within callee method descriptor, and the main lifting is to translate
the information in caller context. ↩︎
Even flow-insensitive SROA sometimes fails on Julia-level.
For example, if
Point
is declared asmutable struct
, Julia-level SROA fails on the above example.But for such cases, succeeding LLVM passes will optimize them away. ↩︎