[pypy-commit] extradoc extradoc: Add the demos, for what they are worth.

arigo noreply at buildbot.pypy.org
Tue Feb 11 21:51:45 CET 2014


Author: Armin Rigo <arigo at tunes.org>
Branch: extradoc
Changeset: r5154:7029195255d7
Date: 2014-02-11 21:51 +0100
http://bitbucket.org/pypy/extradoc/changeset/7029195255d7/

Log:	Add the demos, for what they are worth.

diff --git a/talk/stanford-ee380-2011/demo-jit.py b/talk/stanford-ee380-2011/demo-jit.py
new file mode 100644
--- /dev/null
+++ b/talk/stanford-ee380-2011/demo-jit.py
@@ -0,0 +1,87 @@
+import sys
+from pypy.rlib import jit
+
+
+class Object:
+    pass
+
+
+class Integer(Object):
+
+    def __init__(self, value):
+        self.value = value
+
+    def next(self):
+        return Integer(self.value + 1)
+
+    def small(self):
+        return self.value < 1000000
+
+    def as_str(self):
+        return str(self.value)
+
+
+class String(Object):
+
+    def __init__(self, str):
+        self.str = str
+
+    def next(self):
+        return String(self.str + "x")
+
+    def small(self):
+        return len(self.str) < 50
+
+    def as_str(self):
+        return self.str
+
+
+jitdriver = jit.JitDriver(greens=['pc', 'bytecode'], reds=['input'])
+
+
+def interpret(bytecode, input):
+    pc = 0
+    while True:
+        jitdriver.jit_merge_point(bytecode=bytecode, input=input, pc=pc)
+
+        nextop = bytecode[pc]
+        pc += 1
+
+        if nextop == 'n':
+            input = input.next()
+
+        elif nextop == 'l':
+            if input.small():
+                pc = 0
+            else:
+                return input.as_str()
+
+
+# ____________________________________________________________
+
+
+if __name__ == '__main__':
+    print interpret("nl", String("x"))
+    print interpret("nl", Integer(1))
+    sys.exit()
+
+
+# ____________________________________________________________
+
+
+def main(argv):
+    num = int(argv[2])
+    print interpret(argv[1], Integer(num))
+    return 0
+
+def target(*args):
+    return main, None
+
+
+# ____________________________________________________________
+
+
+from pypy.jit.codewriter.policy import JitPolicy
+
+def jitpolicy(driver):
+    return JitPolicy()
diff --git a/talk/stanford-ee380-2011/demo1 b/talk/stanford-ee380-2011/demo1
new file mode 100644
--- /dev/null
+++ b/talk/stanford-ee380-2011/demo1
@@ -0,0 +1,8 @@
+
+
+>>>> for i in range(10):
+....     print i**2
+
+
+>>>> x = 5
+Ctrl-C
diff --git a/talk/stanford-ee380-2011/demo2.py b/talk/stanford-ee380-2011/demo2.py
new file mode 100644
--- /dev/null
+++ b/talk/stanford-ee380-2011/demo2.py
@@ -0,0 +1,27 @@
+
+
+class Foo(object):
+
+    def __init__(self, value):
+        self.value = value
+
+    def double(self):
+        return Foo(self.value * 2)
+
+
+def main(argv):
+    if len(argv) <= 1:
+        n = 22
+    else:
+        n = int(argv[1])
+
+    lst = [Foo(i) for i in range(n)]
+
+    print lst[-1].double().value
+    return 0
+
+
+# ____________________________________________________________
+
+def target(*args):
+    return main, None


More information about the pypy-commit mailing list