| LEFT | RIGHT |
| 1 /* | 1 /* |
| 2 * This file is part of Adblock Plus <http://adblockplus.org/>, | 2 * This file is part of Adblock Plus <http://adblockplus.org/>, |
| 3 * Copyright (C) 2006-2014 Eyeo GmbH | 3 * Copyright (C) 2006-2014 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 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 | 126 |
| 127 /** | 127 /** |
| 128 * Defines properties with given name and type on an object. | 128 * Defines properties with given name and type on an object. |
| 129 * | 129 * |
| 130 * @param obj object to define properties on | 130 * @param obj object to define properties on |
| 131 * @param properties object mapping property names to their respective types | 131 * @param properties object mapping property names to their respective types |
| 132 * @param viewTypes see getViewsForType() | 132 * @param viewTypes see getViewsForType() |
| 133 * @param views see getViewsForType() | 133 * @param views see getViewsForType() |
| 134 * @param [offset] byte array offset at which the properties should start | 134 * @param [offset] byte array offset at which the properties should start |
| 135 * @param [watchers] map of watcher functions to be called when a particular pro
perty is being set | 135 * @param [watchers] map of watcher functions to be called when a particular pro
perty is being set |
| 136 * @param [cleanupValues] array of property/value combinations to be set when th
e object is created or destroyed | 136 * @param [initialValues] array of property/value combinations to be set when th
e object is created or destroyed |
| 137 * @return new start offset for additional properties | 137 * @return new start offset for additional properties |
| 138 */ | 138 */ |
| 139 exports.defineProperties = function defineProperties(obj, properties, viewTypes,
views, offset, watchers, cleanupValues) | 139 exports.defineProperties = function defineProperties(obj, properties, viewTypes,
views, offset, watchers, initialValues) |
| 140 { | 140 { |
| 141 offset = offset | 0; | 141 offset = offset | 0; |
| 142 | 142 |
| 143 let propList = []; | 143 let propList = []; |
| 144 for (let name in properties) | 144 for (let name in properties) |
| 145 propList.push([name, properties[name]]); | 145 propList.push([name, properties[name]]); |
| 146 | 146 |
| 147 // Put larger properties first to make sure alignment requirements are met. | 147 // Put larger properties first to make sure alignment requirements are met. |
| 148 propList.sort(function(a, b) | 148 propList.sort(function(a, b) |
| 149 { | 149 { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 161 get: wrapGetter(type.createGetter.apply(type, [offset].concat(viewParams))
), | 161 get: wrapGetter(type.createGetter.apply(type, [offset].concat(viewParams))
), |
| 162 set: wrapSetter(type.createSetter.apply(type, [offset].concat(viewParams))
), | 162 set: wrapSetter(type.createSetter.apply(type, [offset].concat(viewParams))
), |
| 163 configurable: false, | 163 configurable: false, |
| 164 enumerable: true | 164 enumerable: true |
| 165 }; | 165 }; |
| 166 | 166 |
| 167 if (watchers && typeof watchers[name] == "function") | 167 if (watchers && typeof watchers[name] == "function") |
| 168 descriptors[name].set = watchSetter(descriptors[name].set, watchers[name])
; | 168 descriptors[name].set = watchSetter(descriptors[name].set, watchers[name])
; |
| 169 | 169 |
| 170 offset += type.referenceLength; | 170 offset += type.referenceLength; |
| 171 if (cleanupValues && typeof type.cleanupValue != "undefined") | 171 if (initialValues && typeof type.initialValue != "undefined") |
| 172 cleanupValues.push([name, type.cleanupValue]); | 172 initialValues.push([name, type.initialValue]); |
| 173 } | 173 } |
| 174 | 174 |
| 175 // Define properties | 175 // Define properties |
| 176 Object.defineProperties(obj, descriptors); | 176 Object.defineProperties(obj, descriptors); |
| 177 | 177 |
| 178 return offset; | 178 return offset; |
| 179 }; | 179 }; |
| 180 | 180 |
| 181 /** | 181 /** |
| 182 * Creates a new array buffer and adds the necessary views. | 182 * Creates a new array buffer and adds the necessary views. |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 exports.dealloc = function(firstFree, bufferIndex, byteOffset) | 268 exports.dealloc = function(firstFree, bufferIndex, byteOffset) |
| 269 { | 269 { |
| 270 let oldFreeBufferIndex = firstFree.bufferIndex | 0; | 270 let oldFreeBufferIndex = firstFree.bufferIndex | 0; |
| 271 let oldFreeByteOffset = firstFree.byteOffset | 0; | 271 let oldFreeByteOffset = firstFree.byteOffset | 0; |
| 272 | 272 |
| 273 firstFree.bufferIndex = bufferIndex | 0; | 273 firstFree.bufferIndex = bufferIndex | 0; |
| 274 firstFree.byteOffset = byteOffset | 0; | 274 firstFree.byteOffset = byteOffset | 0; |
| 275 firstFree.targetBufferIndex = oldFreeBufferIndex; | 275 firstFree.targetBufferIndex = oldFreeBufferIndex; |
| 276 firstFree.targetByteOffset = oldFreeByteOffset; | 276 firstFree.targetByteOffset = oldFreeByteOffset; |
| 277 } | 277 } |
| LEFT | RIGHT |