[pypy-commit] lang-js default: Fixed a but in optimized array member access.
stepahn
noreply at buildbot.pypy.org
Wed May 15 10:20:19 CEST 2013
Author: Stephan <stephan at stzal.com>
Branch:
Changeset: r380:96c04922c1ef
Date: 2013-05-15 10:19 +0200
http://bitbucket.org/pypy/lang-js/changeset/96c04922c1ef/
Log: Fixed a but in optimized array member access.
Thanks to Andrews Medina https://bitbucket.org/andrewsmedina for
finding and supplying tests for it.
diff --git a/js/jsobj.py b/js/jsobj.py
--- a/js/jsobj.py
+++ b/js/jsobj.py
@@ -1484,6 +1484,9 @@
return Descr(inherited.writable, None, inherited, prop)
def _define_own_idx_property(self, idx, desc, throw=False, current_desc=None, prop=None):
+ if current_desc is None:
+ current_desc = self._get_idx_property(idx)
+
from js.object_space import _w
old_len_desc = self.get_own_property(u'length')
assert old_len_desc is not None
@@ -1595,6 +1598,7 @@
if desc.has_set_getter() and desc.getter != current.getter:
return _ireject(throw, idx)
# 12
+ prop = self._get_iprop(idx)
prop.update_with_descriptor(desc)
# 13
@@ -1612,12 +1616,13 @@
# 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()
# 3
if p == u'length':
+ old_len_desc = self.get_own_property(u'length')
+ assert old_len_desc is not None
+ old_len = old_len_desc.value.ToUInt32()
+
if desc.has_set_value() is False:
return W_BasicObject.define_own_property(self, u'length', desc, throw)
new_len_desc = desc.copy()
More information about the pypy-commit
mailing list