Commit Graph

1262 Commits

Author SHA1 Message Date
Birunthan Mohanathas
df18f9f837 Bug 968520 - Add mozilla::fallible to Fallible{Auto,}TArray::SetCapacity calls. r=froydnj 2015-05-18 13:50:34 -07:00
Boris Zbarsky
978f557416 Bug 913053. Split up IDLTypedef and IDLTypedefType, and likewise for IDLCallback vs IDLCallbackType, so it's clearer whether we're operating on types or objects represented by those types. r=khuey 2015-05-13 22:19:22 -04:00
Tom Schuster
eaca072f51 Bug 1161101 - Use JS_GetOwnPropertyDescriptor instead of GetPropertyDescriptor in dom/bindings. r=bz 2015-05-04 20:27:02 +02:00
Boris Zbarsky
0a010b1519 Bug 1155946 part 2. Add mayResolve methods to DOM classes with resolve hooks. r=peterv 2015-04-28 12:25:55 -04:00
Boris Zbarsky
ab3eb9686a Bug 1155984. Improve the performance of the "self" getter in both window and workers. r=peterv,jorendorff 2015-04-27 13:38:12 -04:00
Jan de Mooij
960e7c935d Bug 1155946 part 1 - Add a mayResolve class hook to optimize objects with resolve hooks better. r=bhackett 2015-04-23 15:51:28 +02:00
Boris Zbarsky
fff92c1f01 Bug 1152902 part 1. Add a way to flag a method in webidl as being identity-testable, so we'll expose such an identity test from bindings to other C++ code. r=peterv 2015-04-17 22:01:02 -04:00
Phil Ringnalda
dd5a08b2e0 Back out 2 changesets (bug 1152902) for Gu bustage
CLOSED TREE

Backed out changeset 462f2f668259 (bug 1152902)
Backed out changeset 1c5ed66652c3 (bug 1152902)
2015-04-18 15:30:17 -07:00
Boris Zbarsky
df03df3690 Bug 1155793 part 2. Split apart the concepts of movability and eliminatability in jitinfo, since some things are not movable but are eliminatable. r=efaust. 2015-04-17 22:01:02 -04:00
Boris Zbarsky
14a1e561d7 Bug 1155793 part 1. Make it possible to safely change the number of bits in the slotIndex field in jitinfo. r=efaust 2015-04-17 22:01:02 -04:00
Boris Zbarsky
835c60a5c3 Bug 1152902 part 1. Add a way to flag a method in webidl as being identity-testable, so we'll expose such an identity test from bindings to other C++ code. r=peterv 2015-04-17 22:01:02 -04:00
Jim Blandy
f94dd3b1df Bug 1152577: Add 'aReason' argument to AutoEntryScript constructor, and provide plausible names for its instantiations. r=bholley 2015-04-08 21:23:48 -04:00
Boris Zbarsky
a3b3b9f0cc Bug 1129239. Don't require 'optional' keyword on trailing dictionary arguments if the dictionary has a required member. r=smaug 2015-04-17 12:13:25 -04:00
Daniel Holbert
9050932b33 Bug 1148506: Remove unused variable 'bool result' from code generated by getDeleterBody(), in Codegen.py. r=jorendorff 2015-04-16 11:00:28 -07:00
Paul Adenot
953a7ae4d3 Bug 1148496 - Allow to set an interface member as [Deprecated] in WebIDL. r=bz,smaug 2015-04-14 17:03:49 +02:00
Boris Zbarsky
33f3efd014 Bug 1146333. Get rid of WrapCallThisValue and just use ToJSValue, now that we have it. r=peterv 2015-03-30 23:43:45 -04:00
Tom Schuster
6910bcc31c Bug 1147005 - Change JSAddPropertyOp signature. r=jorendorff,peterv 2015-03-28 14:47:02 +01:00
Boris Zbarsky
4457c97882 Bug 1144397. Disallow using fill when dedent would do. r=peterv 2015-03-30 23:43:24 -04:00
L. David Baron
b9a12f8386 Back out changeset 64934914c29d (bug 1144397) for widespread test bustage, on a CLOSED TREE. 2015-03-30 21:52:35 -07:00
L. David Baron
14c351c0ba Back out changeset 616e32e3da77 (bug 1146333) for widespread test bustage. 2015-03-30 21:52:07 -07:00
Boris Zbarsky
81ac710ae1 Bug 1146333. Get rid of WrapCallThisValue and just use ToJSValue, now that we have it. r=peterv 2015-03-30 23:43:45 -04:00
Boris Zbarsky
afc6d26056 Bug 1144397. Disallow using fill when dedent would do. r=peterv 2015-03-30 23:43:24 -04:00
Phil Ringnalda
529df7748d Backed out changeset d72144153749 (bug 1147005) for being on top of a patch on top of a patch being backed out
CLOSED TREE
2015-03-28 10:39:09 -07:00
Tom Schuster
023b3ef599 Bug 1147005 - Change JSAddPropertyOp signature. r=jorendorff,peterv 2015-03-28 14:47:02 +01:00
Cameron McCormack
ec57dc87f4 Bug 1146235 - Part 2: Expose @@iterator aliases on XrayWrappers. r=peterv 2015-03-28 11:44:44 +11:00
Cameron McCormack
60575b539f Bug 1146235 - Part 1: Add support for an [Alias] extended attribute on IDL operations. r=peterv 2015-03-28 11:44:39 +11:00
Cameron McCormack
a6309561ad Bug 1146234 - Allow non-object values to be used as the this value when invoking IDL callback functions. r=peterv 2015-03-28 11:44:29 +11:00
Jason Orendorff
a62fc1c850 Bug 1142794 - Change 'receiver' argument to SetProperty functions and ProxyHandler::set methods to be a HandleValue. r=Waldo.
Also: Change signature of these functions and methods to all have the same arguments in the same order: (cx, obj, id, v, receiver). Also change v from MutableHandleValue to HandleValue.

There is no change in behavior.

In fact the new error message `JSMSG_SET_NON_OBJECT_RECEIVER` is
impossible to trigger from scripts for now, I think (after re-reading
the whole patch with this in mind). JS_ForwardSetPropertyTo is the only
way to get a non-object receiver into the engine, but no caller
currently does so.

We're installing new pipes here, and they should work, but for now it's
the same cold water flowing through as before. Actually hooking up the
hot water is left for another bug (one with tests, not to put too fine a
point on it).

Notes:

*   InvokeGetterOrSetter had to be split into two functions:
    InvokeGetter takes a MutableHandleValue out-param,
    InvokeSetter a HandleValue in-param.

*   Watchpoints can still tamper with values being assigned. So can
    JSSetterOps. I'm pleased we can support this craziness in a way that
    doesn't have to spread via the type system to encompass the entire
    codebase.

*   Change in GlobalObject::setIntrinsicValue is not really a change.
    Yes, it asserted before, but an exception thrown during self-hosting
    initialization is not going to go unnoticed either.

*   Since the receiver argument to js::SetProperty() is at the end now, it
    makes sense for it to be optional. Some callers look nicer.
2015-03-01 13:16:19 -06:00
Jason Orendorff
f8862424e5 Bug 1142784, part 2 - Change ProxyHandler::defineProperty() to make the desc argument a non-mutable handle. r=Waldo. 2015-02-17 11:58:43 -06:00
Boris Zbarsky
d7a194f6e1 Bug 1143529 part 2. Tighten up the assert in binding Wrap methods. r=peterv 2015-03-23 12:18:05 -04:00
Phil Ringnalda
2b0920d57e Backed out 9 changesets (bug 1142775, bug 1139683, bug 1143810, bug 1142761, bug 1142784, bug 1142794, bug 1144819) for widespread bustage
CLOSED TREE

Backed out changeset 7613fc978d36 (bug 1142794)
Backed out changeset e5f0cb31263d (bug 1142784)
Backed out changeset dcd0af73ac84 (bug 1142784)
Backed out changeset 034f9c8e79ee (bug 1142784)
Backed out changeset ce0ee37e3ca9 (bug 1142775)
Backed out changeset 1519b8f2bbba (bug 1142761)
Backed out changeset 26fd55677841 (bug 1139683)
Backed out changeset 7ebc76a450c3 (bug 1144819)
Backed out changeset 92adb459d519 (bug 1143810)
2015-03-22 09:34:25 -07:00
Jason Orendorff
f3c165da67 Bug 1142794 - Change 'receiver' argument to SetProperty functions and ProxyHandler::set methods to be a HandleValue. r=Waldo.
Also: Change signature of these functions and methods to all have the same arguments in the same order: (cx, obj, id, v, receiver). Also change v from MutableHandleValue to HandleValue.

There is no change in behavior.

In fact the new error message `JSMSG_SET_NON_OBJECT_RECEIVER` is
impossible to trigger from scripts for now, I think (after re-reading
the whole patch with this in mind). JS_ForwardSetPropertyTo is the only
way to get a non-object receiver into the engine, but no caller
currently does so.

We're installing new pipes here, and they should work, but for now it's
the same cold water flowing through as before. Actually hooking up the
hot water is left for another bug (one with tests, not to put too fine a
point on it).

Notes:

*   InvokeGetterOrSetter had to be split into two functions:
    InvokeGetter takes a MutableHandleValue out-param,
    InvokeSetter a HandleValue in-param.

*   Watchpoints can still tamper with values being assigned. So can
    JSSetterOps. I'm pleased we can support this craziness in a way that
    doesn't have to spread via the type system to encompass the entire
    codebase.

*   Change in GlobalObject::setIntrinsicValue is not really a change.
    Yes, it asserted before, but an exception thrown during self-hosting
    initialization is not going to go unnoticed either.

*   Since the receiver argument to js::SetProperty() is at the end now, it
    makes sense for it to be optional. Some callers look nicer.
2015-03-01 13:16:19 -06:00
Jason Orendorff
0c2cf8be27 Bug 1142784, part 2 - Change ProxyHandler::defineProperty() to make the desc argument a non-mutable handle. r=Waldo. 2015-02-17 11:58:43 -06:00
Ehsan Akhgari
1ada2c8745 Bug 1145631 - Part 2: Replace MOZ_OVERRIDE and MOZ_FINAL with override and final in the WebIDL codegen; r=froydnj 2015-03-21 12:28:16 -04:00
Boris Zbarsky
3a822d99b4 Bug 1117172 part 3. Change the wrappercached WrapObject methods to allow passing in aGivenProto. r=peterv
The only manual changes here are to BindingUtils.h, BindingUtils.cpp,
Codegen.py, Element.cpp, IDBFileRequest.cpp, IDBObjectStore.cpp,
dom/workers/Navigator.cpp, WorkerPrivate.cpp, DeviceStorageRequestChild.cpp,
Notification.cpp, nsGlobalWindow.cpp, MessagePort.cpp, nsJSEnvironment.cpp,
Sandbox.cpp, XPCConvert.cpp, ExportHelpers.cpp, and DataStoreService.cpp.  The
rest of this diff was generated by running the following commands:

  find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapObjectInternal\(JSContext *\* *(?:aCx|cx|aContext|aCtx|js))\)/\1, JS::Handle<JSObject*> aGivenProto)/g'

  find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapObjectInternal\((?:aCx|cx|aContext|aCtx|js))\)/\1, aGivenProto)/g'

  find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapNode\(JSContext *\* *(?:aCx|cx|aContext|aCtx|js))\)/\1, JS::Handle<JSObject*> aGivenProto)/g'

  find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapNode\((?:aCx|cx|aContext|aCtx|js))\)/\1, aGivenProto)/g'

  find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapObject\(JSContext *\* *(?:aCx|cx|aContext|aCtx|js))\)/\1, JS::Handle<JSObject*> aGivenProto)/g'

  find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(Binding(?:_workers)?::Wrap\((?:aCx|cx|aContext|aCtx|js), [^,)]+)\)/\1, aGivenProto)/g'
2015-03-19 10:13:33 -04:00
Boris Zbarsky
ea881b3a53 Bug 1117172 part 2. Change the non-wrappercached WrapObject methods to allow passing in aGivenProto. r=peterv
The only manual changes here are to BindingUtils.h, Codegen.py, and
StructuredClone.cpp.  The rest of this diff was generated by running the following commands:

  find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/WrapObject\((JSContext *\* *(?:aCx|cx)),(\s*)(JS::MutableHandle<JSObject\*> aReflector)/WrapObject(\1,\2JS::Handle<JSObject*> aGivenProto,\2\3/g'

  find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(Binding(?:_workers)?::Wrap\((?:aCx|cx)), this, aReflector/\1, this, aGivenProto, aReflector/'
2015-03-19 10:13:32 -04:00
Boris Zbarsky
fba1063ff1 Bug 1117172 part 1. Allow passing an optional aGivenProto to binding Wrap methods. r=peterv 2015-03-19 10:13:32 -04:00
Ms2ger
85f20778c5 No bug - Add an explanatory message to the multiple-inheritance assertion in DOM bindings; rs=bz
Review was granted in
<http://logs.glob.uno/?c=mozilla%23content&s=5+Dec+2013&e=5+Dec+2013#c162605>.
2015-03-13 13:01:28 +01:00
Jason Orendorff
20beb2cc48 Bug 1113369, part 5 - [[Delete]] ObjectOpResult support. r=Waldo, r=bz in dom, r=dvander in js/ipc, r=bholley in js/xpconnect. 2015-02-04 10:20:04 -06:00
Jason Orendorff
1d3bb8fb3d Bug 1113369, part 3 - [[DefineOwnProperty]] ObjectOpResult support. r=Waldo, r=bz in dom, r=dvander in js/ipc, r=bholley in js/xpconnect.
Add an ObjectOpResult out-param for DefineProperty functions everywhere. We leave a few js::DefineProperty() convenience functions with no *result out-param. These have strict behavior: that is, they automatically check the result and throw if it is false. In bug 1125624 these strict signatures may end up being called DefinePropertyOrThrow, as that is what the spec calls it.
2015-01-30 11:37:07 -06:00
Boris Zbarsky
b21ea40fde Bug 928336. Make defining unforgeable properties on objects faster by just copying them from an unforgeable holder object. r=peterv 2015-03-03 21:01:58 -05:00
Boris Zbarsky
15e5ee62d4 Bug 1136896. Speed up fill() and dedent() by memoizing some of the work they currently end up doing on each call. r=jorendorff 2015-03-03 07:12:00 -05:00
Boris Zbarsky
65fece0eae Bug 1135810. Add more explicit checks for whether a descriptor wants Xrays or not instead of assuming that Xrays are desired if and only if descriptor.workers is false. r=peterv 2015-02-26 09:40:08 -05:00
Boris Zbarsky
f9b6a75241 Bug 1136292 part 1. Stop passing a parent to BindingJSObjectCreator methods, since it's always the global anyway. r=peterv 2015-02-26 09:40:07 -05:00
Boris Zbarsky
b131f37ba9 Bug 1133760 part 2. Get rid of unforgeable holders; just store unforgeable properties for DOM proxies directly on the expando object. r=peterv 2015-02-26 09:40:07 -05:00
Boris Zbarsky
0b9465204f Bug 1133760 part 1. The ownPropNames hook can't be called via Xrays, so stop trying to handle that case. r=peterv 2015-02-26 09:40:07 -05:00
Boris Zbarsky
9299319bf6 Bug 1134730. DOM proxy finalizers should not assume that the JS object has an actual reference to the DOM object (and in particular that the slot it's stored in is a private slot). r=peterv 2015-02-26 09:40:07 -05:00
Boris Zbarsky
0780c698de Bug 1135803. Take out the bits that try to handle interface types mapping to JSObject* in worker descriptors, since we never do that anymore. r=smaug 2015-02-24 16:04:22 -05:00
Boris Zbarsky
1aff286471 Bug 1135792. Stop assuming that every binding for a global with a non-worker descriptor is a binding for Window. r=smaug 2015-02-24 16:04:22 -05:00
Boris Zbarsky
c7c3794cdd Bug 1134112 part 2. When doing dictionary init, if we have a non-optional union member just go ahead and uninit it before we try initing it. That way even if it's already been initialized (e.g. because we default-initialized at some point) things will still work correctly. r=peterv 2015-02-19 14:36:35 -05:00