[llvm] r346518 - [docs][statepoints] Reformulate open issues list
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 9 09:09:17 PST 2018
Author: reames
Date: Fri Nov 9 09:09:16 2018
New Revision: 346518
URL: http://llvm.org/viewvc/llvm-project?rev=346518&view=rev
Log:
[docs][statepoints] Reformulate open issues list
Some have been partially resolved, so update that. And restructure to make it easie to find and search.
Modified:
llvm/trunk/docs/Statepoints.rst
Modified: llvm/trunk/docs/Statepoints.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/Statepoints.rst?rev=346518&r1=346517&r2=346518&view=diff
==============================================================================
--- llvm/trunk/docs/Statepoints.rst (original)
+++ llvm/trunk/docs/Statepoints.rst Fri Nov 9 09:09:16 2018
@@ -904,51 +904,69 @@ Today, only X86_64 is supported.
.. _OpenWork:
-Problem Areas and Active Work
-=============================
+Limitations and Half Baked Ideas
+================================
-#. Support for languages which allow unmanaged pointers to garbage collected
- objects (i.e. pass a pointer to an object to a C routine) in the abstract
- machine model. At the moment, the best idea on how to approach this
- involves an intrinsic or opaque function which hides the connection between
- the reference value and the raw pointer. The problem is that having a
- ptrtoint or inttoptr cast (which is common for such use cases) breaks the
- rules used for inferring base pointers for arbitrary references when
- lowering out of the abstract model to the explicit physical model. Note
- that a frontend which lowers directly to the physical model doesn't have
- any problems here.
-
-#. Support for garbage collected objects allocated on the stack. Specifically,
- allocas are always assumed to be in address space 0 and we need a
- cast/promotion operator to let rewriting identify them.
-
-#. The current statepoint lowering is known to be somewhat poor. In the very
- long term, we'd like to integrate statepoints with the register allocator;
- in the near term this is unlikely to happen. We've found the quality of
- lowering to be relatively unimportant as hot-statepoints are almost always
- inliner bugs.
-
-#. Concerns have been raised that the statepoint representation results in a
- large amount of IR being produced for some examples and that this
- contributes to higher than expected memory usage and compile times. There's
- no immediate plans to make changes due to this, but alternate models may be
- explored in the future.
-
-#. Relocations along exceptional paths are currently broken in ToT. In
- particular, there is current no way to represent a rethrow on a path which
- also has relocations. See `this llvm-dev discussion
- <https://groups.google.com/forum/#!topic/llvm-dev/AE417XjgxvI>`_ for more
- detail.
-
-#. Support for alternate stackmap formats. For some use cases, it is
- desirable to directly encode a final memory efficient stackmap format for
- use by the runtime. This is particularly relevant for ahead of time
- compilers which wish to directly link object files without the need for
- post processing of each individual object file. While not implemented
- today for statepoints, there is precedent for a GCStrategy to be able to
- select a customer GCMetataPrinter for this purpose. Patches to enable
- this functionality upstream are welcome.
-
+Mixing References and Raw Pointers
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Support for languages which allow unmanaged pointers to garbage collected
+objects (i.e. pass a pointer to an object to a C routine) in the abstract
+machine model. At the moment, the best idea on how to approach this
+involves an intrinsic or opaque function which hides the connection between
+the reference value and the raw pointer. The problem is that having a
+ptrtoint or inttoptr cast (which is common for such use cases) breaks the
+rules used for inferring base pointers for arbitrary references when
+lowering out of the abstract model to the explicit physical model. Note
+that a frontend which lowers directly to the physical model doesn't have
+any problems here.
+
+Objects on the Stack
+^^^^^^^^^^^^^^^^^^^^
+
+As noted above, the explicit lowering supports objects allocated on the
+stack provided the collector can find a heap map given the stack address.
+
+The missing pieces are a) integration with rewriting (RS4GC) from the
+abstract machine model and b) support for optionally decomposing on stack
+objects so as not to require heap maps for them. The later is required
+for ease of integration with some collectors.
+
+Lowering Quality and Representation Overhead
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The current statepoint lowering is known to be somewhat poor. In the very
+long term, we'd like to integrate statepoints with the register allocator;
+in the near term this is unlikely to happen. We've found the quality of
+lowering to be relatively unimportant as hot-statepoints are almost always
+inliner bugs.
+
+Concerns have been raised that the statepoint representation results in a
+large amount of IR being produced for some examples and that this
+contributes to higher than expected memory usage and compile times. There's
+no immediate plans to make changes due to this, but alternate models may be
+explored in the future.
+
+Relocations Along Exceptional Edges
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Relocations along exceptional paths are currently broken in ToT. In
+particular, there is current no way to represent a rethrow on a path which
+also has relocations. See `this llvm-dev discussion
+<https://groups.google.com/forum/#!topic/llvm-dev/AE417XjgxvI>`_ for more
+detail.
+
+Support for alternate stackmap formats
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+For some use cases, it is
+desirable to directly encode a final memory efficient stackmap format for
+use by the runtime. This is particularly relevant for ahead of time
+compilers which wish to directly link object files without the need for
+post processing of each individual object file. While not implemented
+today for statepoints, there is precedent for a GCStrategy to be able to
+select a customer GCMetataPrinter for this purpose. Patches to enable
+this functionality upstream are welcome.
Bugs and Enhancements
=====================
More information about the llvm-commits
mailing list