Граф коммитов

13 Коммитов

Автор SHA1 Сообщение Дата
Kris Maglione 3728216a20 Bug 1477753: Implement missing cycle collection hooks for SharedMap. r=mccr8
MozReview-Commit-ID: E0ncT3e1Wb2

--HG--
extra : rebase_source : b7697484e3cb8a3b5c77332ddca4019160e7fe80
2018-07-26 14:36:57 -07:00
Kris Maglione 5520b46fd0 Bug 1477129: Part 2 - Fix SharedMap blob handling, and add tests. r=erahm
We were previously failing to send blobs to new content processes, which was a
problem for those processes. But we were also attempting to extract blobs for
new entries that we were serializing after we'd extracted their structured
clone data, and their blob array had been thrown away (which was a problem for
all processes).

This patch fixes both problems.

MozReview-Commit-ID: 3qbAmUTA85g

--HG--
extra : rebase_source : 87ed9356aa23ae83762a887cf12ba1f466e7bf61
2018-07-20 14:44:00 -07:00
Kris Maglione 70f741edc9 Bug 1472342: Part 2 - Update SharedMap iterator methods to use provided JSContext. r=bz
MozReview-Commit-ID: E9RHi41HJCy

--HG--
extra : rebase_source : 1d89f88cf67d56367314d1aa909dccb340719e34
2018-07-18 13:08:44 -07:00
Kris Maglione 02d76286a4 Bug 1463587: Part 6 - Add an idle flush task to WritableSharedMap. r=erahm
MozReview-Commit-ID: 8Ht7zHo4PD6

--HG--
extra : rebase_source : af54131cdd7dcd9d1857ccf6303764c92d4eda79
extra : source : 49ed13196e9fc108f39153b30c4720ef5232e559
2018-06-27 16:44:22 -07:00
Kris Maglione 1aa45ee72a Bug 1463587: Part 4 - Add blob support to SharedMap. r=erahm,baku
I was hoping to avoid supporting blobs here, but some parts of the
WebExtensions framework rely on being able to store Blobs in
initialProcessData, and can't be migrated without adding blob support.

This patch adds an ordered array of BlobImpls for all extant keys, clones them
to all child processes when updating the serialized maps, and initializes
StructuredCloneData instances with indexes into the combined array.

MozReview-Commit-ID: IdSv5FHbPbE

--HG--
extra : rebase_source : 90eeb7fad21eac93582ef9244180998d22267373
extra : source : cebf1f055d1dfb505e96cebf7e4284b35a419dd6
2018-06-27 16:35:53 -07:00
Kris Maglione 8316d5a0c0 Bug 1463587: Part 3 - Add bindings for SharedMap, and expose it via process message managers. r=erahm,baku,bz
This is the first basic implementation of a shared-memory key-value store for
JS message managers. It has one read-write endpoint in the parent process, and
separate read-only endpoints for each child-process message manager.

Changes to the parent endpoint are broadcast to the children as snapshots.
Each snapshot triggers a "change" event with a list of changed keys.

It currently has the following limitations:

- It only supports basic structured clone data. There's no support for blobs,
  input streams, message ports... Blob support will be added in a follow-up
  patch.

- Changes are currently only broadcast to child endpoints when flush() is
  explicitly called in the parent, or when new child processes are launched.
  In a follow-up, this will be changed to automatically flush after changes
  when the event loop is idle.

- All set operations clone their inputs synchronously, which means that
  there's no trivial way for callers to batch multiple changes to a single key
  without some additional effort. It might be useful to add a
  delayed-serialization option to the .set() call in a follow-up, for callers
  who are sure they know what they're doing.

MozReview-Commit-ID: IM8a3UgejXU

--HG--
extra : rebase_source : 66c92d538a5485349bc789028fdc3a6806bc5d5a
extra : source : 2ebaf5f8c6055b11b11d7ec334d54ee941115d48
2018-06-29 14:55:27 -07:00
Kris Maglione 03bf0b5bdd Bug 1463587: Part 2 - Add a shared-memory structured clone key-value store. r=erahm,bz
This class allows one read-write copy of a map in the parent process to share
data with multiple read-only copies in child processes. The maps only hold
onto data as structured clone blobs, and deserialize them each time a key is
read.

This commit only provides the bare-bones data structures. Follow-ups will add
bindings, change events, and automatic flushes.

MozReview-Commit-ID: LimwfmFBNOi

--HG--
extra : rebase_source : e43985c39bd1cfd05a2ad536b0d7f74db494a753
extra : source : c27295337b4c16e2a178106a3aa873d2a0e5a1f4
2018-06-22 20:35:49 -07:00
Margareta Eliza Balazs 7b416abaf1 Backed out 10 changesets (bug 1470783, bug 1463587) for causing multiple leakcheck failures on a CLOSED TREE
Backed out changeset cd2080bd727a (bug 1463587)
Backed out changeset 5866137afd9a (bug 1463587)
Backed out changeset d64e1c150db2 (bug 1463587)
Backed out changeset 669f084e8914 (bug 1463587)
Backed out changeset 8074c985095c (bug 1470783)
Backed out changeset 49ed13196e9f (bug 1463587)
Backed out changeset c052042a66cf (bug 1463587)
Backed out changeset cebf1f055d1d (bug 1463587)
Backed out changeset 2ebaf5f8c605 (bug 1463587)
Backed out changeset c27295337b4c (bug 1463587)
2018-07-12 11:27:45 +03:00
Kris Maglione 3529784207 Bug 1463587: Follow-up: Fix compiler warning on Android debug. r=bustage 2018-07-11 18:24:28 -07:00
Kris Maglione f16c7a4e5d Bug 1463587: Part 6 - Add an idle flush task to WritableSharedMap. r=erahm
MozReview-Commit-ID: 8Ht7zHo4PD6

--HG--
extra : rebase_source : daaaec86b027d329296e86d508b52342aca64bc0
2018-06-27 16:44:22 -07:00
Kris Maglione 345b497bc6 Bug 1463587: Part 4 - Add blob support to SharedMap. r=erahm,baku
I was hoping to avoid supporting blobs here, but some parts of the
WebExtensions framework rely on being able to store Blobs in
initialProcessData, and can't be migrated without adding blob support.

This patch adds an ordered array of BlobImpls for all extant keys, clones them
to all child processes when updating the serialized maps, and initializes
StructuredCloneData instances with indexes into the combined array.

MozReview-Commit-ID: IdSv5FHbPbE

--HG--
extra : rebase_source : 3020af12859ce3470bd31e9c3b7f5c919e1b9665
2018-06-27 16:35:53 -07:00
Kris Maglione 47c200749a Bug 1463587: Part 3 - Add bindings for SharedMap, and expose it via process message managers. r=erahm,baku,bz
This is the first basic implementation of a shared-memory key-value store for
JS message managers. It has one read-write endpoint in the parent process, and
separate read-only endpoints for each child-process message manager.

Changes to the parent endpoint are broadcast to the children as snapshots.
Each snapshot triggers a "change" event with a list of changed keys.

It currently has the following limitations:

- It only supports basic structured clone data. There's no support for blobs,
  input streams, message ports... Blob support will be added in a follow-up
  patch.

- Changes are currently only broadcast to child endpoints when flush() is
  explicitly called in the parent, or when new child processes are launched.
  In a follow-up, this will be changed to automatically flush after changes
  when the event loop is idle.

- All set operations clone their inputs synchronously, which means that
  there's no trivial way for callers to batch multiple changes to a single key
  without some additional effort. It might be useful to add a
  delayed-serialization option to the .set() call in a follow-up, for callers
  who are sure they know what they're doing.

MozReview-Commit-ID: IM8a3UgejXU

--HG--
extra : rebase_source : 8e8b7891ca48e61b2d6ba3c05912064a909d9698
2018-06-29 14:55:27 -07:00
Kris Maglione 830989c99a Bug 1463587: Part 2 - Add a shared-memory structured clone key-value store. r=erahm,bz
This class allows one read-write copy of a map in the parent process to share
data with multiple read-only copies in child processes. The maps only hold
onto data as structured clone blobs, and deserialize them each time a key is
read.

This commit only provides the bare-bones data structures. Follow-ups will add
bindings, change events, and automatic flushes.

MozReview-Commit-ID: LimwfmFBNOi

--HG--
extra : rebase_source : a6959c9f3186af7252ac2899f6801d5e02b62222
2018-06-22 20:35:49 -07:00