Closed Bug 1148652 Opened 5 years ago Closed 5 years ago

Make NativeDefineProperty (more) compliant for arrays, TypedArray views, and arguments objects

Categories

(Core :: JavaScript Engine, defect)

x86_64
Linux
defect
Not set

Tracking

()

RESOLVED FIXED
mozilla40
Tracking Status
firefox40 --- fixed

People

(Reporter: jorendorff, Assigned: jorendorff)

References

Details

Attachments

(3 files)

These three object types are implemented as "native" in SM, but classified as "exotic" in the standard because each has a custom [[DefineOwnProperty]] internal method:

*   Arrays: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array-exotic-objects-defineownproperty-p-desc

*   Arguments: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-arguments-exotic-objects-defineownproperty-p-desc

*   TypedArrays: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-integer-indexed-exotic-objects-defineownproperty-p-desc

We partially implement all the special cases in StandardDefineProperty. The goal here is to achieve the same level of compliance in NativeDefineProperty.
Blocks: 1125624
Assignee: nobody → jorendorff
Status: NEW → ASSIGNED
Comment on attachment 8585018 [details] [diff] [review]
part 1 - Move array-specific special cases to the top of NativeDefineProperty; update ArraySetLength to be able to cope with incomplete attrs

Review of attachment 8585018 [details] [diff] [review]:
-----------------------------------------------------------------

Nice.
Attachment #8585018 - Flags: review?(efaustbmo) → review+
Attachment #8585019 - Flags: review?(efaustbmo) → review+
Comment on attachment 8585020 [details] [diff] [review]
part 3 - Mark arguments.length as overridden when it is redefined via the C API.  try: -b do -p linux64,linux64-st-an,macosx64,win32 -u all[x64,10.6,Windows XP] -t none

Review of attachment 8585020 [details] [diff] [review]:
-----------------------------------------------------------------

Nice catch.
Attachment #8585020 - Flags: review?(efaustbmo) → review+
(In reply to Eric Faust [:efaust] from comment #6)
> part 3 - Mark arguments.length as overridden when it is redefined via the C API.
>
> Nice catch.

Oh, I didn't catch this. Not a chance.

Our test suite did.
Flags: needinfo?(jorendorff)
You need to log in before you can comment on or make changes to this bug.