[pypy-commit] lang-js default: fixed prototype behaviour
stepahn
noreply at buildbot.pypy.org
Fri Dec 28 11:33:06 CET 2012
Author: Stephan <stephan at stzal.com>
Branch:
Changeset: r168:42981222a8d3
Date: 2012-01-06 14:48 +0100
http://bitbucket.org/pypy/lang-js/changeset/42981222a8d3/
Log: fixed prototype behaviour
diff --git a/js/builtins.py b/js/builtins.py
--- a/js/builtins.py
+++ b/js/builtins.py
@@ -434,49 +434,79 @@
ctx = make_global_context()
w_Global = ctx.to_context_object()
- from js.jsobj import W_BasicObject, W__Object
+ # Forward declaration
+ # 15.2.3
+ from js.jsobj import W_ObjectConstructor
+ w_Object = W_ObjectConstructor()
+ w_Global.Put('Object', w_Object)
+
+ # 15.2.4
+ from js.jsobj import W_BasicObject
w_ObjectPrototype = W_BasicObject()
- W__Object._prototype_ = w_ObjectPrototype
- from js.jscode import Js_NativeFunction
- from js.jsobj import W__Function
+ # 15.3.2
+ from js.jsobj import W_FunctionConstructor
+ w_Function = W_FunctionConstructor(ctx)
+ w_Global.Put('Function', w_Function)
# 15.3.4
import js.builtins_function as function_builtins
w_FunctionPrototype = new_native_function(ctx, function_builtins.empty, 'Empty')
+
+ # 15.2.4 Properties of the Object Prototype Object
+ w_ObjectPrototype._prototype_ = w_Null
+
+ # 15.3.4 Properties of the Function Prototype Object
w_FunctionPrototype._prototype_ = w_ObjectPrototype
- # 15.3.3.1
+ # initial prototype
+ from js.jsobj import W__Object, W__Function
+ W__Object._prototype_ = w_ObjectPrototype
W__Function._prototype_ = w_FunctionPrototype
- from js.jsobj import W_FunctionConstructor
- W_FunctionConstructor._prototype_ = w_FunctionPrototype
+ # 15.2 Object Objects
+ # 15.2.3 Properties of the Object Constructor
+ w_Object._prototype_ = w_FunctionPrototype
- w_Function = W_FunctionConstructor(ctx)
- w_Function.Put('constructor', w_Function, DONT_ENUM)
+ w_Object.Put('length', _w(1), flags = allon)
- w_Global.Put('Function', w_Function)
+ # 15.2.3.1 Object.prototype
+ w_Object.Put('prototype', w_ObjectPrototype, flags = allon)
- from js.jsobj import W_ObjectConstructor
- # 15.2.3
- W_ObjectConstructor._prototype_ = w_FunctionPrototype
- w_Object = W_ObjectConstructor()
-
- # 15.2.3.1
- w_Object.Put('prototype', w_ObjectPrototype, flags = allon)
- w_Object.Put('length', _w(1), flags = allon)
- w_Global.Put('Object', w_Object)
-
- w_ObjectPrototype.Put('__proto__', w_Null)
- # 15.2.4.1
+ # 14.2.4.1 Object.prototype.constructor
w_ObjectPrototype.Put('constructor', w_Object)
- # 15.2.4.2
import js.builtins_object as object_builtins
- put_native_function(w_Object, 'toString', object_builtins.to_string)
- put_native_function(w_Object, 'toLocaleString', object_builtins.to_string)
- put_native_function(w_Object, 'valueOf', object_builtins.value_of)
+ # 15.2.4.2 Object.prototype.toString()
+ put_native_function(w_ObjectPrototype, 'toString', object_builtins.to_string)
+ put_native_function(w_ObjectPrototype, 'toLocaleString', object_builtins.to_string)
+ # 15.2.4.3 Object.prototype.valueOf()
+ put_native_function(w_ObjectPrototype, 'valueOf', object_builtins.value_of)
+
+ # 15.3 Function Objects
+ # 15.3.3 Properties of the Function Constructor
+
+ # 15.3.3.1 Function.prototype
+ w_Function.Put('prototype', w_FunctionPrototype, flags = allon)
+
+ # 15.3.3.2 Function.length
+ w_Function.Put('length', _w(1), flags = allon)
+
+ # 14.3.4.1 Function.prototype.constructor
+ w_FunctionPrototype.Put('constructor', w_Function)
+
+ # 15.3.4.2 Function.prototype.toString()
+ import js.builtins_function as function_builtins
+ put_native_function(w_FunctionPrototype, 'toString', function_builtins.to_string)
+
+ # 15.3.4.3 Function.prototype.apply
+ put_native_function(w_FunctionPrototype, 'apply', function_builtins.apply)
+
+ # 15.3.4.4 Function.prototype.call
+ put_native_function(w_FunctionPrototype, 'call', function_builtins.call)
+
+ # XXXXXXXX
#put_values(w_ObjPrototype, {
#'constructor': w_Object,
#'__proto__': w_Null,
@@ -488,28 +518,6 @@
#'propertyIsEnumerable': W_PropertyIsEnumerable(),
#})
- #15.3.3.2
- w_Function.Put('length', _w(1), flags = allon)
-
- # 15.3.4.1
- w_FunctionPrototype.Put('constructor', w_Function)
-
- # 15.3.4.2
- import js.builtins_function as function_builtins
- put_native_function(w_FunctionPrototype, 'toString', function_builtins.to_string)
-
-
- ##properties of the function prototype
- #put_values(w_FncPrototype, {
- #'constructor': w_Function,
- #'__proto__': w_FncPrototype,
- #'toString': W_FToString(),
- #'apply': W_Apply(ctx),
- #'call': W_Call(ctx),
- #'arguments': w_Null,
- #'valueOf': W_ValueOf(),
- #})
-
# 15.6.2
from js.jsobj import W_BooleanConstructor
w_Boolean = W_BooleanConstructor(ctx)
More information about the pypy-commit
mailing list