Ting-Yu Chou
2a8c9b7ffd
Bug 1348099 part 1 - Binary search property id when resolve DOM Xrays own property. r=bz
...
Currently we resolve a property by iterating every prefable and check whether it
is enabled. If it is, we linear search the ids that it manages. This patch
changes that to binary searching to find whether the id being resolved is
present first, and checking whether its prefable is enabled only when we find
it. This improves the performance of property resolution, especially when the
property is not present.
The patch stores all the property ids a NativePropertiesN owns in a single array
of PropertyInfo structs. Each struct contains an id and the information needed
to find the corresponding Prefable for the enabled check, as well as the
information needed to find the correct property descriptor in the Prefable. We
also store an array of indices into the PropertyInfo array, sorted by bits of
the corresponding jsid. Given a jsid, this allows us to binary search for the
index of the corresponding PropertyInfo, if any. The index array requires 2
bytes for each property, which is ~20k across all our bindings. The extra
information stored in each PropertyInfo requires 4 bytes for each property,
which is about 40k across all our bindings in 32-bit builds, or 80k in 64-bit
builds due to alignment requirements on PropertyInfo. However we save a bit of
memory from changing NativePropertiesN's trios to duos.
The array of unsorted ids is kept because XrayOwnPropertyKeys() includes only
properties that are enabled. Without it, we will need to check every single
property to know whether its prefable is enabled or not, which is inefficient.
With this patch, initializing property ids takes longer because of the sorting.
I measured also insertion sort because I thought the ids should be nearly sorted
as they are generated sequentially at run time, but that's not the case and
NS_QuickSort() runs faster.
MozReview-Commit-ID: Lc4Z1ui3t0o
--HG--
extra : rebase_source : 314efe467a14428c57f90af2ecc0ec5c47a31993
2017-06-12 12:13:38 +08:00
Andrea Marchesini
8524257019
Bug 1290021 - Implement a prototype version of Houdini "Worklets Level 1" spec - part 2 - WorkletGlobalScope, r=smaug
2016-11-06 09:54:29 +01:00
Boris Zbarsky
598f3f4180
Bug 1021289 part 4. Implement support for WebIDL deleters over Xrays. r=peterv
2016-11-04 12:41:26 -04:00
Boris Zbarsky
bb0814b5d3
Bug 946906 part 4. Codegen Xray expando JSClasses for DOM objects with [Cached] or [StoreInSlot] members. r=bholley
2016-10-10 18:16:26 -04:00
Boris Zbarsky
d7821950f4
Bug 1278583 part 5. Switch DOM code from using hasInstance class hooks to using Symbol.hasInstance. r=peterv
2016-08-03 18:32:07 -07:00
Boris Zbarsky
8e34004cf1
Bug 1288791 part 1. Rename the GetParentObject template bits to make it clearer what they're really doing: finding the associated global for an object's native. r=bkelly
2016-07-27 11:05:36 -04:00
Alexandre Lissy
6798f02654
Bug 1286530 - Clean AvailableIn, CheckAnyPermissions and CheckAllPermissions from WebIDL r=bz,fabrice
...
MozReview-Commit-ID: 6EQfBM09xUE
--HG--
rename : dom/contacts/tests/test_contacts_cache.xul => dom/contacts/tests/test_contacts_a_cache.xul
rename : dom/contacts/tests/test_contacts_shutdown.xul => dom/contacts/tests/test_contacts_a_shutdown.xul
rename : dom/contacts/tests/test_contacts_upgrade.xul => dom/contacts/tests/test_contacts_a_upgrade.xul
rename : dom/mobilemessage/tests/mochitest/mochitest.ini => dom/mobilemessage/tests/mochitest/chrome.ini
extra : rebase_source : 5f708f2a927fafff66626367ef07080785ba9f55
2016-04-21 15:48:59 +02:00
Boris Zbarsky
efc4dcf284
Bug 1275315 part 2. Use the new Realm getters in binding code. r=peterv
2016-07-09 00:19:52 -04:00
Chris Peterson
43c2748f66
Bug 1277775 - Replace MOZ_CONSTEXPR{_VAR,_TMPL} with constexpr. r=froydnj
2016-07-08 14:39:53 -07:00
Jonathan Watt
1f58b22c60
Bug 177957, part 3 - Make the WebIDL code generator support the [SecureContext] extended attribute. r=bz
...
MozReview-Commit-ID: 3O3V4MTgLuR
2016-05-16 10:04:38 +01:00
Boris Zbarsky
3c3e4fad9c
Bug 1272160. Fix XPCWrappedNativeScope::AddSizeOfIncludingThis to not blindly poke at non-DOM globals as if they were DOM globals. r=khuey
...
I did audit the XPConnect callers of TraceProtoAndIfaceCache and DestroyProtoAndIfaceCache, and they all check JSCLASS_DOM_GLOBAL.
2016-05-13 20:21:40 -04:00
Nicholas Nethercote
8d77da691d
Bug 1260653 (follow-up) - Use |MOZ_CONSTEXPR| instead of |constexpr| to unbreak builds with VS 2013. r=birtles.
2016-04-01 13:51:18 +11:00
Nicholas Nethercote
358a6071d9
Bug 1260653 - Shrink NativeProperties. r=bz.
...
This patch makes NativeProperties variable-length and reduces static data by
110,336 bytes on 64-bit, and half that on 32-bit.
MozReview-Commit-ID: 2etZ5AnEhgO
--HG--
extra : rebase_source : 6a167b64df7da3c6940114782fe08337f04a694d
2016-03-31 09:57:20 +11:00
Nicholas Nethercote
f80479d54a
Bug 1011826 - Split Prefable into two pieces. r=bz.
...
The fields in Prefable relating to disabling are usually all zero. This patch
moves them into a new struct PrefableDisablers. This reduces static data size
by 92 KB, which applies to every process. It might also make isEnabled() faster
because the common case only involves one test instead of two.
--HG--
extra : rebase_source : 004eb8221e23b741c4837dd95af93e437edb4587
2016-03-24 06:09:24 +11:00
Nicholas Nethercote
a299ce6d78
Bug 1258924 - Reorder DOMIfaceAndProtoJSClass fields to reduce padding. r=bz.
...
On 64-bit this reduces sizeof(DOMIfaceAndProtoJSClass) from 336 to 328, saving
20 KiB. On 32-bit it should save half that.
2016-03-24 05:54:38 +11:00
Tom Schuster
4d6aaf2f25
Bug 1242214 - Rename JSPropertyDescriptor JS::PropertyDescriptor everywhere else. r=smaug
2016-01-28 11:28:04 +01:00
Boris Zbarsky
e4fd35820f
Bug 1048695 part 2. Make interface members not be exposed based on their nonExposedGlobals. r=peterv
2015-12-01 12:02:36 -05:00
Boris Zbarsky
09e35c652a
Bug 1048695 part 1. Pass the set of globals where a member should NOT be exposed to MemberCondition. r=peterv
2015-12-01 12:02:33 -05:00
Ms2ger
a48fdcad15
Bug 1204501 - Update the documentation for DOMJSClass::mParticipant; r=peterv
...
Workers have cycle collection now, so they're no longer special.
2015-09-14 16:08:02 +02:00
Kan-Ru Chen
5c2f3fc74e
Bug 1179718 - Rename CheckPermissions to CheckAnyPermissions. r=bz
2015-07-17 11:07:53 +08:00
Kan-Ru Chen
a5886f19c7
Bug 1179718 - Add a CheckAllPermissions extended attribute to WebIDL. r=bz
2015-07-17 11:06:23 +08:00
Andrew McCreight
8b724f91b4
Bug 1174861 - Remove unnecessary Rooted from Prefable::isEnabled(). r=bholley
...
--HG--
extra : rebase_source : d4c6d8d9a1faabbc690377397e2b1ab3efa1768b
2015-06-15 17:22:00 -04:00
Andrew McCreight
9e8f4b219e
Bug 1152551, part 2 - Fix mode lines in dom/. r=jst
2015-05-03 15:32:37 -04:00
Cameron McCormack
03ca266d1b
Bug 1146235 - Part 2: Expose @@iterator aliases on XrayWrappers. r=peterv
2015-03-28 11:44:44 +11:00
Peter Van der Beken
ebc693bfd7
Bug 787070 - Expandos on the xray of DOM prototypes should have effect on xrays of DOM nodes, make Xrays walk the prototype chain when resolving DOM properties. r=bholley.
...
* * *
Bug 787070 - Expandos on the xray of DOM prototypes should have effect on xrays of DOM nodes, remove obsolete code. r=bholley.
--HG--
extra : rebase_source : 7a9aa81d3e9d74ed958374942020474147aa4f86
2014-09-15 16:51:40 +02:00
Peter Van der Beken
16b3a0fe7d
Bug 787070 - Expandos on the xray of DOM prototypes should have effect on xrays of DOM nodes, add a named properties object type to DOMObjectType and how to get the parent prototype object in DOMIfaceAndProtoJSClass. r=bz, r=bholley.
...
--HG--
extra : rebase_source : fdd72f5027b365554ab0b986de685204c8030c58
2014-09-09 15:19:10 +02:00
Peter Van der Beken
cbd064cb38
Bug 787070 - Expandos on the xray of DOM prototypes should have effect on xrays of DOM nodes, make CreateInterfaceObjects take a js::Class instead of a JSClass. r=bz.
...
--HG--
extra : rebase_source : 8b37d59b5f43215c5acef9f8219e631024ece207
2014-08-05 12:46:42 +02:00
Bobby Holley
3ee88775ff
Bug 1041626 - Make NativeProperties naming more consistent. r=bz
2014-07-23 12:36:21 -07:00
Ms2ger
3b4a60ee80
Bug 1034204
- Implement unforgeable methods; r=bz
2014-07-04 15:02:10 +02:00
Eric Faust
f9d65507e2
Bug 1011660 - Remove separate DOMClass struct. (r=bz)
2014-06-18 13:19:19 -07:00
Reuben Morais
978af66e3d
Bug 952486 - Add a CheckPermissions extended attribute to WebIDL. r=bz
2014-05-25 15:31:07 -03:00
Fabrice Desré
2deb233e1d
Bug 952486 - backout for breaking all device and emulator builds (keeping dom reviewer to land the backout...) r=bz
2014-05-26 12:11:52 -07:00
Reuben Morais
1d0db64ab8
Bug 952486 - Add a CheckPermissions extended attribute to WebIDL. r=bz
2014-05-25 15:31:07 -03:00
Jason Orendorff
4740c9dea6
Bug 547140, part 4 - Remove flags argument from resolve hooks. r=Waldo.
2014-04-25 16:11:02 -05:00
Nathan Froyd
9d5430fc7b
Bug 987457 - rename ProtoAndIfaceArray to ProtoAndIfaceCache; r=bz
2014-03-22 13:04:09 -04:00
Boris Zbarsky
5f98263d40
Bug 958667 part 5. Hook up AvailableIn for interface members. r=peterv
2014-02-05 13:38:17 -05:00
Eric Faust
5bd518d6ef
Bug 947487 - Part 1: Convert DOMJSClass::mBase from JSClass to js::Class. (r=bz)
2014-02-01 00:29:50 -08:00
Nathan Froyd
7b9a9d912c
Bug 940573 - make the global's ProtoAndIfaceArray an actual object; r=bz
2013-11-19 14:28:09 -05:00
Dan Gohman
a50084b38d
Bug 910823 - Constify static js::Class/JSClass instances. r=waldo
2013-09-11 05:49:05 -07:00
Boris Zbarsky
5962434202
Bug 908351. Stop over-including DOMJSClass.h, so we don't rebuild as much when PrototypeList.h changes. We do this by factoring out the slot macros into a separate header and including that. r=khuey
2013-08-23 22:42:39 -04:00
Nicholas Nethercote
2585de9a07
Bug 905017 (part 1) - Minimize inclusions of JS engine headers in .h and .idl files. r=billm.
...
--HG--
extra : rebase_source : 984c61ab12f46be0509b1ce0d458d9a6e5841c64
2013-08-17 15:50:18 -07:00
Bobby Holley
b0be1f6df6
Bug 907508 - Define the slot count for xpconnect and worker globals in terms of the slots defined in DOMJSClass.h. r=bz
2013-08-20 21:21:00 -07:00
Terrence Cole
09de524f1a
Bug 862115 - Use Rooted<JSPropertyDescriptor> in favor of JSPropertyDescriptor::AutoRooter r=terrence r=smaug r=bholley
2013-04-30 10:29:40 -07:00
Ehsan Akhgari
2824b29025
Bug 895322 - Part 1: Replace the usages of MOZ_STATIC_ASSERT with C++11 static_assert; r=Waldo
...
This patch was mostly generated by running the following scripts on the codebase, with some
manual changes made afterwards:
# static_assert.sh
#!/bin/bash
# Command to convert an NSPR integer type to the equivalent standard integer type
function convert() {
echo "Converting $1 to $2..."
find . ! -wholename "*nsprpub*" \
! -wholename "*security/nss*" \
! -wholename "*/.hg*" \
! -wholename "obj-ff-dbg*" \
! -name nsXPCOMCID.h \
! -name prtypes.h \
-type f \
\( -iname "*.cpp" \
-o -iname "*.h" \
-o -iname "*.cc" \
-o -iname "*.mm" \) | \
xargs -n 1 `dirname $0`/assert_replacer.py #sed -i -e "s/\b$1\b/$2/g"
}
convert MOZ_STATIC_ASSERT static_assert
hg rev --no-backup mfbt/Assertions.h \
media/webrtc/signaling/src/sipcc/core/includes/ccapi.h \
modules/libmar/src/mar_private.h \
modules/libmar/src/mar.h
# assert_replacer.py
#!/usr/bin/python
import sys
import re
pattern = re.compile(r"\bMOZ_STATIC_ASSERT\b")
def replaceInPlace(fname):
print fname
f = open(fname, "rw+")
lines = f.readlines()
for i in range(0, len(lines)):
while True:
index = re.search(pattern, lines[i])
if index != None:
index = index.start()
lines[i] = lines[i][0:index] + "static_assert" + lines[i][index+len("MOZ_STATIC_ASSERT"):]
for j in range(i + 1, len(lines)):
if lines[j].find(" ", index) == index:
lines[j] = lines[j][0:index] + lines[j][index+4:]
else:
break
else:
break
f.seek(0, 0)
f.truncate()
f.write("".join(lines))
f.close()
argc = len(sys.argv)
for i in range(1, argc):
replaceInPlace(sys.argv[i])
--HG--
extra : rebase_source : 4b4a4047d82f2c205b9fad8d56dfc3f1afc0b045
2013-07-18 13:59:53 -04:00
Jon Coppeard
a0056f5fa0
Bug 888338 - 6 - more browser post barriers r=mccr8
2013-07-23 10:58:27 +01:00
Boris Zbarsky
7640b170ac
Bug 865969 part 6. Fix rooting hazards in BindingUtils.cpp. r=smaug
2013-05-03 19:29:08 -04:00
Boris Zbarsky
8766287733
Bug 861022 part 2. Root the global object in WebIDL prototype and interface object setup. r=peterv,terrence
2013-05-01 23:44:12 -04:00
Boris Zbarsky
d975beea20
Bug 861022 part 1. Root the non-globals in WebIDL prototype and interface object setup. r=peterv,terrence
2013-05-01 23:44:11 -04:00
Boris Zbarsky
47de9d3ebe
Bug 864727 part 4. Pass a handle for the scope object to all the various Wrap*Object stuff in BindingUtils. r=ms2ger
...
Note: The JS::Rooted in CGWrapWithCacheMethod is just there until we start passing a handle to Wrap().
2013-04-25 12:29:53 -04:00
Peter Van der Beken
bfcf81990d
Bug 852094 - Support Unforgeable on proxy-based DOM bindings. r=bz.
2012-12-20 10:56:11 +01:00