Author: Stephan <step...@stzal.com>
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
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to