Author: Lars Wassermann <[email protected]>
Branch: 
Changeset: r507:f48f9c043b3e
Date: 2013-07-19 11:53 +0000
http://bitbucket.org/pypy/lang-smalltalk/changeset/f48f9c043b3e/

Log:    added FILL primitive (145)

diff --git a/spyvm/primitives.py b/spyvm/primitives.py
--- a/spyvm/primitives.py
+++ b/spyvm/primitives.py
@@ -1028,6 +1028,7 @@
 VM_PATH = 142
 SHORT_AT = 143
 SHORT_AT_PUT = 144
+FILL = 145
 CLONE = 148
 
 @expose_primitive(VM_PATH, unwrap_spec=[object])
@@ -1048,6 +1049,20 @@
         raise PrimitiveFailedError
     return w_receiver.short_atput0(interp.space, n0, w_value)
 
+@expose_primitive(FILL, unwrap_spec=[object, pos_32bit_int])
+def func(interp, s_frame, w_arg, new_value):
+    space = interp.space
+    if isinstance(w_arg, model.W_BytesObject):
+        if new_value > 255:
+            raise PrimitiveFailedError
+        for i in xrange(w_arg.size()):
+            w_arg.setchar(i, chr(new_value))
+    elif isinstance(w_arg, model.W_PointersObject) or isinstance(w_arg, 
model.W_DisplayBitmap):
+        for i in xrange(w_arg.size()):
+            w_arg.setword(i, new_value)
+    else:
+        raise PrimitiveFailedError
+    return w_arg
 
 @expose_primitive(CLONE, unwrap_spec=[object])
 def func(interp, s_frame, w_arg):
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to