Author: Stephan <step...@stzal.com>
Branch: 
Changeset: r335:77a0a486f6e4
Date: 2013-01-08 18:03 +0100
http://bitbucket.org/pypy/lang-js/changeset/77a0a486f6e4/

Log:    moved _w to js.object_space

diff --git a/js/baseop.py b/js/baseop.py
--- a/js/baseop.py
+++ b/js/baseop.py
@@ -2,7 +2,8 @@
 """ Base operations implementations
 """
 
-from js.jsobj import W_String, W_IntNumber, W_FloatNumber, _w
+from js.jsobj import W_String, W_IntNumber, W_FloatNumber
+from js.object_space import _w
 
 from pypy.rlib.rarithmetic import ovfcheck
 from pypy.rlib.rfloat import isnan, isinf
diff --git a/js/builtins/__init__.py b/js/builtins/__init__.py
--- a/js/builtins/__init__.py
+++ b/js/builtins/__init__.py
@@ -1,4 +1,5 @@
-from js.jsobj import w_Undefined, _w
+from js.jsobj import w_Undefined
+from js.object_space import _w
 
 #from pypy.rlib import jit
 
diff --git a/js/builtins/array.py b/js/builtins/array.py
--- a/js/builtins/array.py
+++ b/js/builtins/array.py
@@ -1,6 +1,6 @@
-from js.jsobj import isnull_or_undefined, _w, w_Undefined
+from js.jsobj import isnull_or_undefined, w_Undefined
 from js.builtins import get_arg
-from js.object_space import w_return
+from js.object_space import w_return, _w
 
 
 def setup(global_object):
diff --git a/js/builtins/boolean.py b/js/builtins/boolean.py
--- a/js/builtins/boolean.py
+++ b/js/builtins/boolean.py
@@ -1,7 +1,6 @@
 from js.jsobj import W_Boolean, W_BooleanObject
 from js.execution import JsTypeError
-from js.jsobj import _w
-from js.object_space import w_return
+from js.object_space import w_return, _w
 
 
 def setup(global_object):
diff --git a/js/builtins/date.py b/js/builtins/date.py
--- a/js/builtins/date.py
+++ b/js/builtins/date.py
@@ -1,9 +1,8 @@
 from pypy.rlib.rfloat import NAN, isnan
-from js.jsobj import _w
 
 import datetime
 from js.builtins import get_arg
-from js.object_space import w_return, hide_on_translate
+from js.object_space import w_return, hide_on_translate, _w
 from pypy.rlib.objectmodel import we_are_translated
 
 
diff --git a/js/builtins/function.py b/js/builtins/function.py
--- a/js/builtins/function.py
+++ b/js/builtins/function.py
@@ -1,9 +1,9 @@
 from js.jsobj import isnull_or_undefined
 from js.execution import JsTypeError
-from js.jsobj import w_Undefined, _w
+from js.jsobj import w_Undefined
 from js.builtins import get_arg
 from js.completion import NormalCompletion
-from js.object_space import w_return
+from js.object_space import w_return, _w
 
 
 @w_return
diff --git a/js/builtins/js_math.py b/js/builtins/js_math.py
--- a/js/builtins/js_math.py
+++ b/js/builtins/js_math.py
@@ -1,9 +1,8 @@
 import math
-from js.jsobj import _w
 
 from pypy.rlib.rfloat import NAN, INFINITY, isnan, isinf
 from js.builtins import get_arg
-from js.object_space import w_return
+from js.object_space import w_return, _w
 
 
 def setup(global_object):
diff --git a/js/builtins/number.py b/js/builtins/number.py
--- a/js/builtins/number.py
+++ b/js/builtins/number.py
@@ -1,7 +1,7 @@
 from pypy.rlib.rfloat import NAN, INFINITY
 from js.execution import JsRangeError, JsTypeError
-from js.jsobj import W_Number, W_NumericObject, _w
-from js.object_space import w_return
+from js.jsobj import W_Number, W_NumericObject
+from js.object_space import w_return, _w
 
 
 def setup(global_object):
diff --git a/js/builtins/object.py b/js/builtins/object.py
--- a/js/builtins/object.py
+++ b/js/builtins/object.py
@@ -1,4 +1,4 @@
-from js.jsobj import _w
+from js.object_space import _w
 
 
 def to_string(this, args):
diff --git a/js/builtins/string.py b/js/builtins/string.py
--- a/js/builtins/string.py
+++ b/js/builtins/string.py
@@ -1,8 +1,8 @@
-from js.jsobj import _w, w_Undefined, W_String, W_StringObject
+from js.jsobj import w_Undefined, W_String, W_StringObject
 from pypy.rlib.rfloat import NAN
 from js.execution import JsTypeError
 from js.builtins import get_arg
-from js.object_space import w_return
+from js.object_space import w_return, _w
 from pypy.rlib.rstring import UnicodeBuilder
 
 
diff --git a/js/execution.py b/js/execution.py
--- a/js/execution.py
+++ b/js/execution.py
@@ -40,7 +40,7 @@
         return self.message
 
     def msg(self):
-        from js.jsobj import _w
+        from js.object_space import _w
         return _w(self._msg())
 
 
diff --git a/js/functions.py b/js/functions.py
--- a/js/functions.py
+++ b/js/functions.py
@@ -1,4 +1,4 @@
-from js.jsobj import _w
+from js.object_space import _w
 
 
 class JsBaseFunction(object):
diff --git a/js/jsobj.py b/js/jsobj.py
--- a/js/jsobj.py
+++ b/js/jsobj.py
@@ -559,6 +559,7 @@
     _class_ = 'String'
 
     def __init__(self, primitive_value):
+        from js.object_space import _w
         W__PrimitiveObject.__init__(self, primitive_value)
         length = len(self._primitive_value_.to_string())
         descr = PropertyDescriptor(value=_w(length), enumerable=False, 
configurable=False, writable=False)
@@ -580,6 +581,7 @@
             return None
 
         result_string = string[index]
+        from js.object_space import _w
         d = PropertyDescriptor(value=_w(result_string), enumerable=True, 
writable=False, configurable=False)
         return d
 
@@ -730,6 +732,7 @@
 class W_NumberConstructor(W_BasicFunction):
     # 15.7.1.1
     def Call(self, args=[], this=None, calling_context=None):
+        from js.object_space import _w
         if len(args) >= 1 and not isnull_or_undefined(args[0]):
             return _w(args[0].ToNumber())
         elif len(args) >= 1 and args[0] is w_Undefined:
@@ -749,6 +752,7 @@
 class W_StringConstructor(W_BasicFunction):
     def Call(self, args=[], this=None, calling_context=None):
         from js.builtins import get_arg
+        from js.object_space import _w
         arg0 = get_arg(args, 0, _w(u""))
         strval = arg0.to_string()
         return W_String(strval)
@@ -763,6 +767,7 @@
 # 15.6.2
 class W_BooleanConstructor(W_BasicFunction):
     def Call(self, args=[], this=None, calling_context=None):
+        from js.object_space import _w
         if len(args) >= 1 and not isnull_or_undefined(args[0]):
             boolval = args[0].to_boolean()
             return _w(boolval)
@@ -808,6 +813,7 @@
         #        value = _w(int(num))
         #else:
         #    value = _w(int(time.time() * 1000))
+        from js.object_space import _w
         value = _w(int(time.time() * 1000))
 
         from js.object_space import object_space
@@ -828,6 +834,7 @@
     def __init__(self, function_body, formal_parameter_list=[], scope=None, 
strict=False):
         W_BasicFunction.__init__(self)
         from js.object_space import object_space
+        from js.object_space import _w
         self._function_ = function_body
         self._scope_ = scope
         self._params_ = formal_parameter_list
@@ -902,6 +909,7 @@
     _class_ = 'Arguments'
 
     def __init__(self, func, names, args, env, strict=False):
+        from js.object_space import _w
         W__Object.__init__(self)
         self.strict = strict
         _len = len(args)
@@ -948,6 +956,7 @@
 # 15.4.2
 class W_ArrayConstructor(W_BasicFunction):
     def __init__(self):
+        from js.object_space import _w
         W_BasicFunction.__init__(self)
         put_property(self, u'length', _w(1), writable=False, enumerable=False, 
configurable=False)
 
@@ -956,6 +965,7 @@
 
     def Call(self, args=[], this=None, calling_context=None):
         from js.object_space import object_space
+        from js.object_space import _w
 
         if len(args) == 1:
             _len = args[0]
@@ -1268,6 +1278,7 @@
 
     # 15.4.5.1
     def define_own_property(self, p, desc, throw=False):
+        from js.object_space import _w
         old_len_desc = self.get_own_property(u'length')
         assert old_len_desc is not None
         old_len = old_len_desc.value.ToUInt32()
@@ -1351,36 +1362,6 @@
         return W_BasicObject.define_own_property(self, p, desc, throw)
 
 
-from pypy.rlib.objectmodel import specialize
-
-
-@specialize.argtype(0)
-def _w(value):
-    if value is None:
-        return w_Null
-    elif isinstance(value, W_Root):
-        return value
-    elif isinstance(value, bool):
-        return newbool(value)
-    elif isinstance(value, int):
-        return W_IntNumber(value)
-    elif isinstance(value, float):
-        return W_FloatNumber(value)
-    elif isinstance(value, unicode):
-        return W_String(value)
-    elif isinstance(value, str):
-        u_str = unicode(value)
-        return W_String(u_str)
-    elif isinstance(value, list):
-        from js.object_space import object_space
-        a = object_space.new_array()
-        for index, item in enumerate(value):
-            put_property(a, unicode(str(index)), _w(item), writable=True, 
enumerable=True, configurable=True)
-        return a
-
-    raise TypeError("ffffuuu %s" % (value,))
-
-
 def put_property(obj, name, value, writable=False, configurable=False, 
enumerable=False, throw=False):
     descriptor = PropertyDescriptor(value=value, writable=writable, 
configurable=configurable, enumerable=enumerable)
     obj.define_own_property(name, descriptor, throw)
diff --git a/js/object_space.py b/js/object_space.py
--- a/js/object_space.py
+++ b/js/object_space.py
@@ -1,8 +1,36 @@
-from js.jsobj import _w, W__Object, W_BasicFunction, W__Function, 
W_DateObject, W_BooleanObject, W_StringObject, W_NumericObject, W__Array, w_Null
+from pypy.rlib.objectmodel import specialize
+
+
+@specialize.argtype(0)
+def _w(value):
+    from js.jsobj import w_Null, newbool, W_IntNumber, W_FloatNumber, 
W_String, W_Root, put_property
+    if value is None:
+        return w_Null
+    elif isinstance(value, W_Root):
+        return value
+    elif isinstance(value, bool):
+        return newbool(value)
+    elif isinstance(value, int):
+        return W_IntNumber(value)
+    elif isinstance(value, float):
+        return W_FloatNumber(value)
+    elif isinstance(value, unicode):
+        return W_String(value)
+    elif isinstance(value, str):
+        u_str = unicode(value)
+        return W_String(u_str)
+    elif isinstance(value, list):
+        a = object_space.new_array()
+        for index, item in enumerate(value):
+            put_property(a, unicode(str(index)), _w(item), writable=True, 
enumerable=True, configurable=True)
+        return a
+
+    raise TypeError("ffffuuu %s" % (value,))
 
 
 class ObjectSpace(object):
     def __init__(self):
+        from js.jsobj import w_Null
         self.global_context = None
         self.global_object = None
         self.proto_function = w_Null
@@ -18,6 +46,7 @@
         return self.global_context.variable_environment()
 
     def assign_proto(self, obj, proto=None):
+        from js.jsobj import W_BasicFunction, W_DateObject, W_BooleanObject, 
W_StringObject, W_NumericObject, W__Array
         if proto is not None:
             obj._prototype_ = proto
             return obj
@@ -39,46 +68,53 @@
         return obj
 
     def new_obj(self):
+        from js.jsobj import W__Object
         obj = W__Object()
         self.assign_proto(obj)
         return obj
 
     def new_func(self, function_body, formal_parameter_list=[], scope=None, 
strict=False):
+        from js.jsobj import W__Function
         obj = W__Function(function_body, formal_parameter_list, scope, strict)
         self.assign_proto(obj)
         return obj
 
     def new_date(self, value):
+        from js.jsobj import W_DateObject
         obj = W_DateObject(value)
         self.assign_proto(obj)
         return obj
 
     def new_array(self, length=_w(0)):
+        from js.jsobj import W__Array
         obj = W__Array(length)
         self.assign_proto(obj)
         return obj
 
     def new_bool(self, value):
+        from js.jsobj import W_BooleanObject
         obj = W_BooleanObject(value)
         self.assign_proto(obj)
         return obj
 
     def new_string(self, value):
+        from js.jsobj import W_StringObject
         obj = W_StringObject(value)
         self.assign_proto(obj)
         return obj
 
     def new_number(self, value):
+        from js.jsobj import W_NumericObject
         obj = W_NumericObject(value)
         self.assign_proto(obj)
         return obj
 
+
 object_space = ObjectSpace()
 
 
 def w_return(fn):
     def f(*args):
-        from js.jsobj import _w
         return _w(fn(*args))
     return f
 
diff --git a/js/opcodes.py b/js/opcodes.py
--- a/js/opcodes.py
+++ b/js/opcodes.py
@@ -1,5 +1,6 @@
 from js.jsobj import W_IntNumber, W_FloatNumber, W_String, \
-    w_Undefined, newbool, w_Null, _w
+    w_Undefined, newbool, w_Null
+from js.object_space import _w
 from js.execution import JsTypeError
 from js.baseop import plus, sub, compare, AbstractEC, StrictEC,\
     compare_e, increment, decrement, mult, division, uminus, mod
diff --git a/test/ecma/conftest.py b/test/ecma/conftest.py
--- a/test/ecma/conftest.py
+++ b/test/ecma/conftest.py
@@ -3,7 +3,7 @@
 
 from js.interpreter import Interpreter, load_file
 from _pytest.runner import Failed
-from js.jsobj import _w
+from js.object_space import _w
 from js.execution import JsException
 from pypy.rlib.parsing.parsing import ParseError
 
diff --git a/test/test_interp.py b/test/test_interp.py
--- a/test/test_interp.py
+++ b/test/test_interp.py
@@ -54,7 +54,7 @@
 
 def assertv(code, value):
     from js.interpreter import Interpreter
-    from js.jsobj import _w
+    from js.object_space import _w
 
     jsint = Interpreter()
     ret_val = jsint.run_src(code)
diff --git a/test/test_interpreter.py b/test/test_interpreter.py
--- a/test/test_interpreter.py
+++ b/test/test_interpreter.py
@@ -1,4 +1,4 @@
-from js.jsobj import _w
+from js.object_space import _w
 from js.interpreter import Interpreter
 from js.astbuilder import parse_to_ast
 
diff --git a/test/test_jsfunction.py b/test/test_jsfunction.py
--- a/test/test_jsfunction.py
+++ b/test/test_jsfunction.py
@@ -1,4 +1,4 @@
-from js.jsobj import _w
+from js.object_space import _w
 from js.jscode import JsCode
 from js.execution_context import ExecutionContext, FunctionExecutionContext, 
GlobalExecutionContext, EvalExecutionContext
 from js.functions import JsFunction, JsExecutableCode, JsNativeFunction, 
JsGlobalCode, JsEvalCode
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to