[pypy-svn] r48232 - pypy/extradoc/talk/roadshow-ibm

pedronis at codespeak.net pedronis at codespeak.net
Thu Nov 1 12:16:19 CET 2007


Author: pedronis
Date: Thu Nov  1 12:16:19 2007
New Revision: 48232

Added:
   pypy/extradoc/talk/roadshow-ibm/graph0.dot
   pypy/extradoc/talk/roadshow-ibm/graph1.dot
   pypy/extradoc/talk/roadshow-ibm/overview2.png
      - copied unchanged from r48230, pypy/extradoc/talk/ep2007/pypy_10_and_jit/overview2.png
Modified:
   pypy/extradoc/talk/roadshow-ibm/talk.txt
Log:
our slides about the jit arch



Added: pypy/extradoc/talk/roadshow-ibm/graph0.dot
==============================================================================
--- (empty file)
+++ pypy/extradoc/talk/roadshow-ibm/graph0.dot	Thu Nov  1 12:16:19 2007
@@ -0,0 +1,19 @@
+digraph _generated__graph {
+subgraph _generated__ {
+_generated__ [shape="box", label="generated", color="black", fillcolor="#a5e6f0", style="filled", width="0.75"];
+edge [label="startblock", style="dashed", color="black", dir="forward", weight="5"];
+_generated__ -> _generated____1
+_generated____1 [shape="box", label="generated__1\ninputargs: v6024\n\nv6025 = cast_pointer(v6024)\l", color="black", fillcolor="white", style="filled", width="0.75"];
+edge [label="v6025", style="solid", color="black", dir="forward", weight="5"];
+_generated____1 -> _generated____2
+_generated____2 [shape="box", label="generated__2\ninputargs: v6026\n\nv6027 = getfield(v6026, ('typeptr'))\l", color="black", fillcolor="white", style="filled", width="0.75"];
+edge [label="v6026 v6027", style="solid", color="black", dir="forward", weight="5"];
+_generated____2 -> _generated____3
+_generated____3 [shape="box", label="generated__3\ninputargs: v6030 v6028\n\nv6029 = cast_ptr_to_int(v6028)\l\lexitswitch: v6029", color="black", fillcolor="#e5ffff", style="filled", width="0.75"];
+edge [label="'default': v6030 v6028", style="dotted", color="red", dir="forward", weight="5"];
+_generated____3 -> _generated____4
+_generated____4 [shape="box", label="generated__4\ninputargs: v6039 v6035\n\nv6031 = getfield((<* struct ExcData { ex...=... }>), ('exc_type'))\lv6032 = getfield((<* struct ExcData { ex...=... }>), ('exc_value'))\lv6033 = setfield((<* struct ExcData { ex...=... }>), ('exc_type'), (<* None>))\lv6034 = setfield((<* struct ExcData { ex...=... }>), ('exc_value'), (<* None>))\lv6036 = direct_call((<* fn ll_continue_comp...blePtr>), (<* struct object { typ...=... }>), v6035)\lv6037 = setfield((<* struct ExcData { ex...=... }>), ('exc_type'), v6031)\lv6038 = setfield((<* struct ExcData { ex...=... }>), ('exc_value'), v6032)\l", color="black", fillcolor="white", style="filled", width="0.75"];
+edge [label="v6039 v6035", style="solid", color="black", dir="forward", weight="5"];
+_generated____4 -> _generated____3
+}
+}
\ No newline at end of file

Added: pypy/extradoc/talk/roadshow-ibm/graph1.dot
==============================================================================
--- (empty file)
+++ pypy/extradoc/talk/roadshow-ibm/graph1.dot	Thu Nov  1 12:16:19 2007
@@ -0,0 +1,90 @@
+digraph _generated__graph {
+subgraph _generated__ {
+_generated__ [shape="box", label="generated", color="black", fillcolor="#a5e6f0", style="filled", width="0.75"];
+edge [label="startblock", style="dashed", color="black", dir="forward", weight="5"];
+_generated__ -> _generated____1
+_generated____1 [shape="box", label="generated__1\ninputargs: v6024\n\nv6025 = cast_pointer(v6024)\l", color="black", fillcolor="white", style="filled", width="0.75"];
+edge [label="v6025", style="solid", color="black", dir="forward", weight="5"];
+_generated____1 -> _generated____2
+_generated____2 [shape="box", label="generated__2\ninputargs: v6026\n\nv6027 = getfield(v6026, ('typeptr'))\l", color="black", fillcolor="white", style="filled", width="0.75"];
+edge [label="v6026 v6027", style="solid", color="black", dir="forward", weight="5"];
+_generated____2 -> _generated____3
+_generated____3 [shape="octagon", label="generated__3\ninputargs: v6030 v6028\n\nv6029 = cast_ptr_to_int(v6028)\l\lexitswitch: v6029", color="red", fillcolor="#e5ffff", style="filled", width="0.75"];
+edge [label="24647528: v6030 v6028", style="dotted", color="red", dir="forward", weight="5"];
+_generated____3 -> _generated____4
+edge [label="'default': v6030 v6028", style="dotted", color="red", dir="forward", weight="5"];
+_generated____3 -> _generated____5
+_generated____4 [shape="box", label="generated__4\ninputargs: v10217 v10220\n\nv10218 = cast_pointer(v10217)\lv10219 = getfield(v10218, ('inst_value'))\l", color="black", fillcolor="white", style="filled", width="0.75"];
+edge [label="v10219 v10217", style="solid", color="black", dir="forward", weight="5"];
+_generated____4 -> _generated____6
+_generated____6 [shape="box", label="generated__6\ninputargs: v10221 v10223\n\nv10222 = int_lt((1), v10221)\l", color="black", fillcolor="white", style="filled", width="0.75"];
+edge [label="v10222 v10223", style="solid", color="black", dir="forward", weight="5"];
+_generated____6 -> _generated____7
+_generated____7 [shape="octagon", label="generated__7\ninputargs: v10224 v10225\n\n\lexitswitch: v10224", color="red", fillcolor="white", style="filled", width="0.75"];
+edge [label="False: (1)", style="dotted", color="red", dir="forward", weight="5"];
+_generated____7 -> _generated____8
+edge [label="True: v10225", style="dotted", color="red", dir="forward", weight="5"];
+_generated____7 -> _generated____9
+_generated____8 [shape="box", label="generated__8\ninputargs: v10230\n\nv10226 = malloc((GcStruct pypy.jit.tl.tlc.IntObj))\lv10227 = cast_pointer(v10226)\lv10228 = setfield(v10227, ('typeptr'), (<* struct object_vtabl...=... }>))\lv10229 = cast_pointer(v10227)\lv10231 = setfield(v10229, ('inst_value'), v10230)\l", color="black", fillcolor="white", style="filled", width="0.75"];
+edge [label="v10227", style="solid", color="black", dir="forward", weight="5"];
+_generated____8 -> _generated____10
+_generated____10 [shape="box", label="generated__10\ninputargs: v10232\n\nv10233 = cast_pointer(v10232)\l", color="black", fillcolor="white", style="filled", width="0.75"];
+edge [label="v10233", style="solid", color="black", dir="forward", weight="5"];
+_generated____10 -> _generated____11
+_generated____11 [shape="box", label="generated__11\ninputargs: v10234\n\nreturn v10234", color="black", fillcolor="green", style="filled", width="0.75"];
+_generated____9 [shape="box", label="generated__9\ninputargs: v10236\n\nv10235 = same_as((0))\l", color="black", fillcolor="white", style="filled", width="0.75"];
+edge [label="v10236 v10235", style="solid", color="black", dir="forward", weight="5"];
+_generated____9 -> _generated____12
+_generated____12 [shape="box", label="generated__12\ninputargs: v10239 v10237\n\nv10238 = int_is_true(v10237)\l", color="black", fillcolor="white", style="filled", width="0.75"];
+edge [label="v10238 v10239", style="solid", color="black", dir="forward", weight="5"];
+_generated____12 -> _generated____13
+_generated____13 [shape="octagon", label="generated__13\ninputargs: v10240 v10241\n\n\lexitswitch: v10240", color="red", fillcolor="white", style="filled", width="0.75"];
+edge [label="False: v10241", style="dotted", color="red", dir="forward", weight="5"];
+_generated____13 -> _generated____14
+edge [label="True: v10241", style="dotted", color="red", dir="forward", weight="5"];
+_generated____13 -> _generated____15
+_generated____14 [shape="box", label="generated__14\ninputargs: v10242\n\nv10243 = cast_pointer(v10242)\lv10244 = getfield(v10243, ('inst_value'))\l", color="black", fillcolor="white", style="filled", width="0.75"];
+edge [label="v10244 v10242", style="solid", color="black", dir="forward", weight="5"];
+_generated____14 -> _generated____16
+_generated____16 [shape="box", label="generated__16\ninputargs: v10245 v10247\n\nv10246 = int_mul((1), v10245)\l", color="black", fillcolor="white", style="filled", width="0.75"];
+edge [label="v10247 v10246", style="solid", color="black", dir="forward", weight="5"];
+_generated____16 -> _generated____17
+_generated____17 [shape="box", label="generated__17\ninputargs: v10248 v10251\n\nv10249 = cast_pointer(v10248)\lv10250 = getfield(v10249, ('inst_value'))\l", color="black", fillcolor="white", style="filled", width="0.75"];
+edge [label="v10250 v10251 v10248", style="solid", color="black", dir="forward", weight="5"];
+_generated____17 -> _generated____18
+_generated____18 [shape="box", label="generated__18\ninputargs: v10252 v10254 v10255\n\nv10253 = int_sub(v10252, (1))\l", color="black", fillcolor="white", style="filled", width="0.75"];
+edge [label="v10253 v10254 v10255", style="solid", color="black", dir="forward", weight="5"];
+_generated____18 -> _generated____19
+_generated____19 [shape="box", label="generated__19\ninputargs: v10256 v10258 v10259\n\nv10257 = int_lt((1), v10256)\l", color="black", fillcolor="white", style="filled", width="0.75"];
+edge [label="v10257 v10258 v10256 v10259", style="solid", color="black", dir="forward", weight="5"];
+_generated____19 -> _generated____20
+_generated____20 [shape="octagon", label="generated__20\ninputargs: v10260 v10261 v10262 v10263\n\n\lexitswitch: v10260", color="red", fillcolor="white", style="filled", width="0.75"];
+edge [label="False: v10261", style="dotted", color="red", dir="forward", weight="5"];
+_generated____20 -> _generated____8
+edge [label="True: v10263 v10261 v10262", style="dotted", color="red", dir="forward", weight="5"];
+_generated____20 -> _generated____21
+_generated____21 [shape="box", label="generated__21\ninputargs: v10265 v10266 v10267\n\nv10264 = same_as((0))\l", color="black", fillcolor="white", style="filled", width="0.75"];
+edge [label="v10265 v10266 v10267 v10264", style="solid", color="black", dir="forward", weight="5"];
+_generated____21 -> _generated____22
+_generated____22 [shape="box", label="generated__22\ninputargs: v10270 v10271 v10272 v10268\n\nv10269 = int_is_true(v10268)\l", color="black", fillcolor="white", style="filled", width="0.75"];
+edge [label="v10269 v10271 v10272 v10270", style="solid", color="black", dir="forward", weight="5"];
+_generated____22 -> _generated____23
+_generated____23 [shape="octagon", label="generated__23\ninputargs: v10273 v10274 v10275 v10276\n\n\lexitswitch: v10273", color="red", fillcolor="white", style="filled", width="0.75"];
+edge [label="False: v10275 v10274 v10276", style="dotted", color="red", dir="forward", weight="5"];
+_generated____23 -> _generated____24
+edge [label="True: v10274", style="dotted", color="red", dir="forward", weight="5"];
+_generated____23 -> _generated____8
+_generated____24 [shape="box", label="generated__24\ninputargs: v10278 v10277 v10280\n\nv10279 = int_mul(v10277, v10278)\l", color="black", fillcolor="white", style="filled", width="0.75"];
+edge [label="v10278 v10279 v10280", style="solid", color="black", dir="forward", weight="5"];
+_generated____24 -> _generated____25
+_generated____25 [shape="box", label="generated__25\ninputargs: v10281 v10283 v10284\n\nv10282 = int_sub(v10281, (1))\l", color="black", fillcolor="white", style="filled", width="0.75"];
+edge [label="v10282 v10283 v10284", style="solid", color="black", dir="forward", weight="5"];
+_generated____25 -> _generated____19
+_generated____15 [shape="box", label="generated__15\ninputargs: v10286\n\nv10285 = same_as((1))\l", color="black", fillcolor="white", style="filled", width="0.75"];
+edge [label="v10285", style="solid", color="black", dir="forward", weight="5"];
+_generated____15 -> _generated____8
+_generated____5 [shape="box", label="generated__5\ninputargs: v6039 v6035\n\nv6031 = getfield((<* struct ExcData { ex...=... }>), ('exc_type'))\lv6032 = getfield((<* struct ExcData { ex...=... }>), ('exc_value'))\lv6033 = setfield((<* struct ExcData { ex...=... }>), ('exc_type'), (<* None>))\lv6034 = setfield((<* struct ExcData { ex...=... }>), ('exc_value'), (<* None>))\lv6036 = direct_call((<* fn ll_continue_comp...blePtr>), (<* struct object { typ...=... }>), v6035)\lv6037 = setfield((<* struct ExcData { ex...=... }>), ('exc_type'), v6031)\lv6038 = setfield((<* struct ExcData { ex...=... }>), ('exc_value'), v6032)\l", color="black", fillcolor="white", style="filled", width="0.75"];
+edge [label="v6039 v6035", style="solid", color="black", dir="forward", weight="5"];
+_generated____5 -> _generated____3
+}
+}
\ No newline at end of file

Modified: pypy/extradoc/talk/roadshow-ibm/talk.txt
==============================================================================
--- pypy/extradoc/talk/roadshow-ibm/talk.txt	(original)
+++ pypy/extradoc/talk/roadshow-ibm/talk.txt	Thu Nov  1 12:16:19 2007
@@ -105,6 +105,8 @@
 pypy-c-jit
 ======================
 
+.. where to put this? 
+
 PyPy 1.0 contains both the dynamic compiler generator and the start of
 its application to PyPy's Python intepreter.
 
@@ -180,8 +182,6 @@
 
 .. need to save state in a compact form: paths
 
-.. demo?
-
 Promotion (example)
 ========================
 
@@ -251,4 +251,32 @@
 
 PyPy proves this a viable approach worth of further exploration.
 
+.. EXTRA MATERIAL:
+.. backend material: not for the general talk
+.. virtualizables: not for general talk
+.. state of gc framework
+
+Open Issues
+==============
+
+- inlining control
+
+- promotion switch explosion fallbacks
+
+- jit only the hot-spots
+
+- more hints needed in PyPy's Python
+
+Virtualizable Frames
+======================
 
+- frames need to live in the heap
+  (tracebacks ...) and be introspectable
+- jit code wants local variables to live in registers
+  and on the stack
+- => mark the frame class as "virtualizable"
+- jit code uses lazy allocation and stores
+  some contents (local variables...) in register
+  and stack
+- outside world access gets intercepted
+  to be able to force lazy virtual data into the heap



More information about the Pypy-commit mailing list