OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 var $observeNotifyChange; | 5 var $observeNotifyChange; |
6 var $observeEnqueueSpliceRecord; | 6 var $observeEnqueueSpliceRecord; |
7 var $observeBeginPerformSplice; | 7 var $observeBeginPerformSplice; |
8 var $observeEndPerformSplice; | 8 var $observeEndPerformSplice; |
9 var $observeNativeObjectObserve; | 9 var $observeNativeObjectObserve; |
10 var $observeNativeObjectGetNotifier; | 10 var $observeNativeObjectGetNotifier; |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 %SetIsObserved(object); | 193 %SetIsObserved(object); |
194 } | 194 } |
195 objectInfo = { | 195 objectInfo = { |
196 object: object, | 196 object: object, |
197 changeObservers: null, | 197 changeObservers: null, |
198 notifier: null, | 198 notifier: null, |
199 performing: null, | 199 performing: null, |
200 performingCount: 0, | 200 performingCount: 0, |
201 }; | 201 }; |
202 %WeakCollectionSet(GetObservationStateJS().objectInfoMap, | 202 %WeakCollectionSet(GetObservationStateJS().objectInfoMap, |
203 object, objectInfo); | 203 object, objectInfo, $getHash(object)); |
204 } | 204 } |
205 return objectInfo; | 205 return objectInfo; |
206 } | 206 } |
207 | 207 |
208 | 208 |
209 function ObjectInfoGet(object) { | 209 function ObjectInfoGet(object) { |
210 return %WeakCollectionGet(GetObservationStateJS().objectInfoMap, object); | 210 return %WeakCollectionGet(GetObservationStateJS().objectInfoMap, object, |
| 211 $getHash(object)); |
211 } | 212 } |
212 | 213 |
213 | 214 |
214 function ObjectInfoGetFromNotifier(notifier) { | 215 function ObjectInfoGetFromNotifier(notifier) { |
215 return %WeakCollectionGet(GetObservationStateJS().notifierObjectInfoMap, | 216 return %WeakCollectionGet(GetObservationStateJS().notifierObjectInfoMap, |
216 notifier); | 217 notifier, $getHash(notifier)); |
217 } | 218 } |
218 | 219 |
219 | 220 |
220 function ObjectInfoGetNotifier(objectInfo) { | 221 function ObjectInfoGetNotifier(objectInfo) { |
221 if (IS_NULL(objectInfo.notifier)) { | 222 if (IS_NULL(objectInfo.notifier)) { |
222 objectInfo.notifier = { __proto__: notifierPrototype }; | 223 var notifier = { __proto__: notifierPrototype }; |
| 224 objectInfo.notifier = notifier; |
223 %WeakCollectionSet(GetObservationStateJS().notifierObjectInfoMap, | 225 %WeakCollectionSet(GetObservationStateJS().notifierObjectInfoMap, |
224 objectInfo.notifier, objectInfo); | 226 notifier, objectInfo, $getHash(notifier)); |
225 } | 227 } |
226 | 228 |
227 return objectInfo.notifier; | 229 return objectInfo.notifier; |
228 } | 230 } |
229 | 231 |
230 | 232 |
231 function ChangeObserversIsOptimized(changeObservers) { | 233 function ChangeObserversIsOptimized(changeObservers) { |
232 return IS_SPEC_FUNCTION(changeObservers) || | 234 return IS_SPEC_FUNCTION(changeObservers) || |
233 IS_SPEC_FUNCTION(changeObservers.callback); | 235 IS_SPEC_FUNCTION(changeObservers.callback); |
234 } | 236 } |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
325 if (len < 0) len = 0; | 327 if (len < 0) len = 0; |
326 | 328 |
327 return TypeMapCreateFromList(arg, len); | 329 return TypeMapCreateFromList(arg, len); |
328 } | 330 } |
329 | 331 |
330 | 332 |
331 // CallbackInfo's optimized state is just a number which represents its global | 333 // CallbackInfo's optimized state is just a number which represents its global |
332 // priority. When a change record must be enqueued for the callback, it | 334 // priority. When a change record must be enqueued for the callback, it |
333 // normalizes. When delivery clears any pending change records, it re-optimizes. | 335 // normalizes. When delivery clears any pending change records, it re-optimizes. |
334 function CallbackInfoGet(callback) { | 336 function CallbackInfoGet(callback) { |
335 return %WeakCollectionGet(GetObservationStateJS().callbackInfoMap, callback); | 337 return %WeakCollectionGet(GetObservationStateJS().callbackInfoMap, callback, |
| 338 $getHash(callback)); |
336 } | 339 } |
337 | 340 |
338 | 341 |
339 function CallbackInfoSet(callback, callbackInfo) { | 342 function CallbackInfoSet(callback, callbackInfo) { |
340 %WeakCollectionSet(GetObservationStateJS().callbackInfoMap, | 343 %WeakCollectionSet(GetObservationStateJS().callbackInfoMap, |
341 callback, callbackInfo); | 344 callback, callbackInfo, $getHash(callback)); |
342 } | 345 } |
343 | 346 |
344 | 347 |
345 function CallbackInfoGetOrCreate(callback) { | 348 function CallbackInfoGetOrCreate(callback) { |
346 var callbackInfo = CallbackInfoGet(callback); | 349 var callbackInfo = CallbackInfoGet(callback); |
347 if (!IS_UNDEFINED(callbackInfo)) | 350 if (!IS_UNDEFINED(callbackInfo)) |
348 return callbackInfo; | 351 return callbackInfo; |
349 | 352 |
350 var priority = GetNextCallbackPriority(); | 353 var priority = GetNextCallbackPriority(); |
351 CallbackInfoSet(callback, priority); | 354 CallbackInfoSet(callback, priority); |
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
682 | 685 |
683 $observeNotifyChange = NotifyChange; | 686 $observeNotifyChange = NotifyChange; |
684 $observeEnqueueSpliceRecord = EnqueueSpliceRecord; | 687 $observeEnqueueSpliceRecord = EnqueueSpliceRecord; |
685 $observeBeginPerformSplice = BeginPerformSplice; | 688 $observeBeginPerformSplice = BeginPerformSplice; |
686 $observeEndPerformSplice = EndPerformSplice; | 689 $observeEndPerformSplice = EndPerformSplice; |
687 $observeNativeObjectObserve = NativeObjectObserve; | 690 $observeNativeObjectObserve = NativeObjectObserve; |
688 $observeNativeObjectGetNotifier = NativeObjectGetNotifier; | 691 $observeNativeObjectGetNotifier = NativeObjectGetNotifier; |
689 $observeNativeObjectNotifierPerformChange = NativeObjectNotifierPerformChange; | 692 $observeNativeObjectNotifierPerformChange = NativeObjectNotifierPerformChange; |
690 | 693 |
691 }) | 694 }) |
OLD | NEW |