| OLD | NEW |
| 1 /* | 1 /* |
| 2 * This file is part of Adblock Plus <https://adblockplus.org/>, | 2 * This file is part of Adblock Plus <https://adblockplus.org/>, |
| 3 * Copyright (C) 2006-2015 Eyeo GmbH | 3 * Copyright (C) 2006-2015 Eyeo GmbH |
| 4 * | 4 * |
| 5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
| 6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
| 7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
| 8 * | 8 * |
| 9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 }; | 40 }; |
| 41 } | 41 } |
| 42 | 42 |
| 43 function createSetter(elementSetter, elementShift) | 43 function createSetter(elementSetter, elementShift) |
| 44 { | 44 { |
| 45 return function(index, value) | 45 return function(index, value) |
| 46 { | 46 { |
| 47 if (index < 0 || index >= this.length) | 47 if (index < 0 || index >= this.length) |
| 48 throw new Error("Array index out of bounds"); | 48 throw new Error("Array index out of bounds"); |
| 49 return elementSetter.call(this, this.arrayBufferIndex, this.arrayByteOffset
+ (index << elementShift), value); | 49 return elementSetter.call(this, this.arrayBufferIndex, this.arrayByteOffset
+ (index << elementShift), value); |
| 50 } | 50 }; |
| 51 } | 51 } |
| 52 | 52 |
| 53 function createCombinedConstructor(customConstructor) | 53 function createCombinedConstructor(customConstructor) |
| 54 { | 54 { |
| 55 return function() | 55 return function() |
| 56 { | 56 { |
| 57 defaultArrayConstructor.apply(this); | 57 defaultArrayConstructor.apply(this); |
| 58 customConstructor.apply(this, arguments); | 58 customConstructor.apply(this, arguments); |
| 59 } | 59 }; |
| 60 } | 60 } |
| 61 | 61 |
| 62 function createCombinedDestructor(customDestructor) | 62 function createCombinedDestructor(customDestructor) |
| 63 { | 63 { |
| 64 return function() | 64 return function() |
| 65 { | 65 { |
| 66 try | 66 try |
| 67 { | 67 { |
| 68 customDestructor.apply(this); | 68 customDestructor.apply(this); |
| 69 } | 69 } |
| 70 finally | 70 finally |
| 71 { | 71 { |
| 72 defaultArrayDestructor.apply(this); | 72 defaultArrayDestructor.apply(this); |
| 73 } | 73 } |
| 74 } | 74 }; |
| 75 } | 75 } |
| 76 | 76 |
| 77 function createLengthWatcher(elementType, elementSetter) | 77 function createLengthWatcher(elementType, elementSetter) |
| 78 { | 78 { |
| 79 let {STATE_UNINITIALIZED} = require("typedObjects/objectTypes"); | 79 let {STATE_UNINITIALIZED} = require("typedObjects/objectTypes"); |
| 80 return function lengthWatcher(newLength) | 80 return function lengthWatcher(newLength) |
| 81 { | 81 { |
| 82 newLength = newLength | 0; | 82 newLength = newLength | 0; |
| 83 if (newLength < 0) | 83 if (newLength < 0) |
| 84 newLength = 0; | 84 newLength = 0; |
| (...skipping 29 matching lines...) Expand all Loading... |
| 114 } | 114 } |
| 115 } | 115 } |
| 116 else | 116 else |
| 117 { | 117 { |
| 118 for (let i = newLength; i < length; i++) | 118 for (let i = newLength; i < length; i++) |
| 119 this.set(i, initialValue); | 119 this.set(i, initialValue); |
| 120 } | 120 } |
| 121 } | 121 } |
| 122 | 122 |
| 123 return newLength; | 123 return newLength; |
| 124 } | 124 }; |
| 125 } | 125 } |
| 126 | 126 |
| 127 function createSizeWatcher(elementType, minElements, bufferSize, buffers, viewTy
pes, views, firstFree) | 127 function createSizeWatcher(elementType, minElements, bufferSize, buffers, viewTy
pes, views, firstFree) |
| 128 { | 128 { |
| 129 let referenceLength = elementType.referenceLength | 0; | 129 let referenceLength = elementType.referenceLength | 0; |
| 130 minElements = minElements | 0; | 130 minElements = minElements | 0; |
| 131 bufferSize = bufferSize | 0; | 131 bufferSize = bufferSize | 0; |
| 132 return function sizeWatcher(newSize) | 132 return function sizeWatcher(newSize) |
| 133 { | 133 { |
| 134 newSize = newSize | 0; | 134 newSize = newSize | 0; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 181 // Release old buffer | 181 // Release old buffer |
| 182 let reference = firstFree[size]; | 182 let reference = firstFree[size]; |
| 183 if (typeof reference != "undefined") | 183 if (typeof reference != "undefined") |
| 184 dealloc(reference, origBufferIndex, origByteOffset); | 184 dealloc(reference, origBufferIndex, origByteOffset); |
| 185 else | 185 else |
| 186 removeBuffer(origBufferIndex, buffers, views); | 186 removeBuffer(origBufferIndex, buffers, views); |
| 187 } | 187 } |
| 188 } | 188 } |
| 189 | 189 |
| 190 return newSize; | 190 return newSize; |
| 191 } | 191 }; |
| 192 } | 192 } |
| 193 | 193 |
| 194 function push() | 194 function push() |
| 195 { | 195 { |
| 196 let length = this.length | 0; | 196 let length = this.length | 0; |
| 197 let newCount = arguments.length | 0; | 197 let newCount = arguments.length | 0; |
| 198 this.length = length + newCount; | 198 this.length = length + newCount; |
| 199 for (let i = 0; i < newCount; i++) | 199 for (let i = 0; i < newCount; i++) |
| 200 this.set(length + i, arguments[i]); | 200 this.set(length + i, arguments[i]); |
| 201 return length + newCount; | 201 return length + newCount; |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 meta.watch = {}; | 342 meta.watch = {}; |
| 343 | 343 |
| 344 meta.watch.length = createLengthWatcher(elementType, elementSetter); | 344 meta.watch.length = createLengthWatcher(elementType, elementSetter); |
| 345 meta.watch.size = createSizeWatcher(elementType, minElements, bufferSize, buff
ers, viewTypes, views, firstFree); | 345 meta.watch.size = createSizeWatcher(elementType, minElements, bufferSize, buff
ers, viewTypes, views, firstFree); |
| 346 | 346 |
| 347 let {ObjectBase} = require("typedObjects/objectTypes"); | 347 let {ObjectBase} = require("typedObjects/objectTypes"); |
| 348 return ObjectBase.extend(typeDescriptor, meta); | 348 return ObjectBase.extend(typeDescriptor, meta); |
| 349 } | 349 } |
| 350 | 350 |
| 351 exports.createArrayType = createArrayType; | 351 exports.createArrayType = createArrayType; |
| OLD | NEW |