Author: Carl Friedrich Bolz <[email protected]>
Branch: extradoc
Changeset: r4759:e095d7e6d73e
Date: 2012-09-06 20:39 +0200
http://bitbucket.org/pypy/extradoc/changeset/e095d7e6d73e/

Log:    add second escape analysis paper

diff --git a/talk/vmil2012/zotero.bib b/talk/vmil2012/zotero.bib
--- a/talk/vmil2012/zotero.bib
+++ b/talk/vmil2012/zotero.bib
@@ -176,6 +176,22 @@
        pages = {32&#8211;43}
 },
 
+@inproceedings{kotzmann_run-time_2007,
+       address = {Washington, {DC}, {USA}},
+       series = {{CGO} '07},
+       title = {Run-Time Support for Optimizations Based on Escape Analysis},
+       isbn = {0-7695-2764-7},
+       url = {http://dx.doi.org/10.1109/CGO.2007.34},
+       doi = {10.1109/CGO.2007.34},
+       abstract = {The {JavaTM} programming language does not allow the 
programmer to influence memory management. An object is usually allocated on 
the heap and deallocated by the garbage collector when it is not referenced any 
longer. Under certain conditions, the virtual machine can allocate objects on 
the stack or eliminate their allocation via scalar replacement. However, even 
if the dynamic compiler guarantees that the conditions are fulfilled, the 
optimizations require support by the run-time environment. We implemented a new 
escape analysis algorithm for Sun Microsystems' Java {HotSpotTM} {VM.} The 
results are used to replace objects with scalar variables, to allocate objects 
on the stack, and to remove synchronization. This paper deals with the 
representation of optimized objects in the debugging information and with 
reallocation and garbage collection support for a safe execution of optimized 
methods. Assignments to fields of parameters that can refer to both stack and 
heap obje
 cts are associated with an extended write barrier which skips card marking for 
stack objects. The traversal of objects during garbage collection uses a 
wrapper that abstracts from stack objects and presents their pointer fields as 
root pointers to the garbage collector. When a previously compiled and 
currently executing method must be continued in the interpreter because dynamic 
class loading invalidates the machine code, execution is suspended and compiler 
optimizations are undone. Scalar-replaced objects are reallocated on the heap 
lazily when control returns to the invalidated method, whereas stack-allocated 
objects must be reallocated immediately before program execution resumes. After 
reallocation, objects for which synchronization was removed are relocked.},
+       urldate = {2012-09-06},
+       booktitle = {Proceedings of the International Symposium on Code 
Generation and Optimization},
+       publisher = {{IEEE} Computer Society},
+       author = {Kotzmann, Thomas and Mossenbock, Hanspeter},
+       year = {2007},
+       pages = {49&#8211;60}
+},
+
 @inproceedings{ancona_rpython:_2007,
        address = {Montreal, Quebec, Canada},
        title = {{RPython:} a step towards reconciling dynamically and 
statically typed {OO} languages},
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to