Author: Stephan <[email protected]>
Branch:
Changeset: r279:569359399701
Date: 2012-08-24 10:14 +0200
http://bitbucket.org/pypy/lang-js/changeset/569359399701/
Log: fixed implicit self for function calls
diff --git a/js/execution_context.py b/js/execution_context.py
--- a/js/execution_context.py
+++ b/js/execution_context.py
@@ -33,6 +33,9 @@
def this_binding(self):
return self._this_binding_
+ def implicit_this_binding(self):
+ return
self.lexical_environment().environment_record.implicit_this_value()
+
def variable_environment(self):
return self._variable_environment_
@@ -199,6 +202,9 @@
def stack_pop_n(self, n):
return self._parent_context_.stack_pop_n(n)
+ def this_binding(self):
+ return self._parent_context_.this_binding()
+
class WithExecutionContext(SubExecutionContext):
def __init__(self, code, expr_obj, parent_context):
SubExecutionContext.__init__(self, parent_context)
@@ -213,7 +219,6 @@
self._lexical_environment_ = local_env
self._variable_environment_ = local_env
- self._this_binding_ =
local_env.environment_record.implicit_this_value()
self.declaration_binding_initialization()
@@ -233,6 +238,5 @@
self._lexical_environment_ = local_env
self._variable_environment_ = local_env
- self._this_binding_ = parent_context.this_binding()
self.declaration_binding_initialization()
diff --git a/js/opcodes.py b/js/opcodes.py
--- a/js/opcodes.py
+++ b/js/opcodes.py
@@ -611,7 +611,7 @@
def eval(self, ctx):
r1 = ctx.stack_pop()
args = ctx.stack_pop()
- this = ctx.this_binding()
+ this = ctx.implicit_this_binding()
res = common_call(ctx, r1, args, this, r1)
ctx.stack_append(res)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit