diff --git a/docs/ecmarkup.js b/docs/ecmarkup.js index 4ccef06..c652bd2 100644 --- a/docs/ecmarkup.js +++ b/docs/ecmarkup.js @@ -1139,5 +1139,5 @@ document.addEventListener('DOMContentLoaded', () => { }); let sdoMap = JSON.parse(`{}`); -let biblio = JSON.parse(`{"refsByClause":{"sec-get-arraybuffer-@@species":["_ref_0"],"sec-detacharraybuffer":["_ref_1","_ref_2","_ref_3","_ref_4"],"sec-allocatearraybuffer":["_ref_5","_ref_6"],"sec-arraybufferlength":["_ref_7","_ref_8","_ref_9","_ref_10"],"sec-makeidempotentarraybufferbytelengthgetter":["_ref_11","_ref_12"],"sec-isresizablearraybuffer":["_ref_13"],"sec-getarraybuffermaxbytelengthoption":["_ref_14","_ref_15","_ref_16"],"sec-hostresizearraybuffer":["_ref_17","_ref_18"],"sec-arraybuffer-length":["_ref_19","_ref_20","_ref_21"],"sec-get-arraybuffer.prototype.maxbytelength":["_ref_22","_ref_23","_ref_24","_ref_25"],"sec-get-arraybuffer.prototype.resizable":["_ref_26","_ref_27","_ref_28"],"sec-arraybuffer.prototype.slice":["_ref_29","_ref_30","_ref_31","_ref_32","_ref_33","_ref_34","_ref_35","_ref_36","_ref_37","_ref_38","_ref_39","_ref_40"],"sec-arraybuffer.prototype.resize":["_ref_41","_ref_42","_ref_43","_ref_44","_ref_45","_ref_46"],"sec-arraybuffer.prototype.transfer":["_ref_47","_ref_48","_ref_49","_ref_50","_ref_51","_ref_52","_ref_53"],"sec-allocatesharedarraybuffer":["_ref_54","_ref_55","_ref_56","_ref_57"],"sec-hostgrowsharedarraybuffer":["_ref_58","_ref_59","_ref_60","_ref_61"],"sec-sharedarraybuffer-length":["_ref_62","_ref_63","_ref_64"],"sec-get-sharedarraybuffer.prototype.bytelength":["_ref_65","_ref_66","_ref_67"],"sec-get-sharedarraybuffer.prototype.growable":["_ref_68","_ref_69","_ref_70"],"sec-get-sharedarraybuffer.prototype.maxbytelength":["_ref_71","_ref_72","_ref_73"],"sec-sharedarraybuffer.prototype.grow":["_ref_74","_ref_75","_ref_76","_ref_77","_ref_78","_ref_79"],"sec-sharedarraybuffer.prototype.slice":["_ref_80","_ref_81","_ref_82","_ref_83","_ref_84","_ref_85","_ref_86","_ref_87","_ref_88"],"sec-integer-indexed-exotic-objects-ownpropertykeys":["_ref_89","_ref_90","_ref_91","_ref_92","_ref_93","_ref_94","_ref_95"],"sec-isvalidintegerindex":["_ref_96","_ref_97","_ref_98"],"sec-integerindexedobjectbytelength":["_ref_99"],"sec-integerindexedobjectlength":["_ref_100","_ref_101"],"sec-isintegerindexedobjectoutofbounds":["_ref_102"],"sec-validatetypedarray":["_ref_103","_ref_104","_ref_105","_ref_106"],"sec-get-%typedarray%.prototype.bytelength":["_ref_107","_ref_108","_ref_109","_ref_110"],"sec-get-%typedarray%.prototype.byteoffset":["_ref_111","_ref_112","_ref_113","_ref_114"],"sec-get-%typedarray%.prototype.length":["_ref_115","_ref_116","_ref_117","_ref_118"],"sec-%typedarray%.prototype.copywithin":["_ref_119","_ref_120","_ref_121","_ref_122","_ref_123","_ref_124","_ref_125","_ref_126"],"sec-%typedarray%.prototype.fill":["_ref_127","_ref_128","_ref_129","_ref_130","_ref_131","_ref_132","_ref_133","_ref_134","_ref_135","_ref_136"],"sec-%typedarray%.prototype.slice":["_ref_137","_ref_138","_ref_139","_ref_140","_ref_141","_ref_142","_ref_143","_ref_144","_ref_145","_ref_146","_ref_147","_ref_148","_ref_149"],"sec-%typedarray%.prototype.sort":["_ref_150","_ref_151","_ref_152","_ref_153","_ref_154","_ref_155","_ref_156","_ref_157","_ref_158","_ref_159"],"sec-settypedarrayfromtypedarray":["_ref_160","_ref_161","_ref_162","_ref_163","_ref_164","_ref_165","_ref_166","_ref_167","_ref_168","_ref_169","_ref_170","_ref_171","_ref_172","_ref_173","_ref_174","_ref_175"],"sec-initializetypedarrayfromtypedarray":["_ref_176","_ref_177","_ref_178","_ref_179","_ref_180","_ref_181","_ref_182","_ref_183","_ref_184","_ref_185","_ref_186","_ref_187","_ref_188","_ref_189","_ref_190","_ref_191","_ref_192"],"sec-initializetypedarrayfromarraybuffer":["_ref_193","_ref_194","_ref_195","_ref_196","_ref_197"],"sec-getviewbytelength":["_ref_198"],"sec-isviewoutofbounds":["_ref_199","_ref_200","_ref_201"],"sec-getviewvalue":["_ref_202","_ref_203","_ref_204","_ref_205","_ref_206","_ref_207","_ref_208","_ref_209"],"sec-setviewvalue":["_ref_210","_ref_211","_ref_212","_ref_213","_ref_214","_ref_215","_ref_216","_ref_217","_ref_218","_ref_219","_ref_220"],"sec-dataview-buffer-byteoffset-bytelength":["_ref_221","_ref_222","_ref_223","_ref_224","_ref_225","_ref_226","_ref_227","_ref_228","_ref_229","_ref_230"],"sec-get-dataview.prototype.bytelength":["_ref_231","_ref_232","_ref_233","_ref_234","_ref_235"],"sec-get-dataview.prototype.byteoffset":["_ref_236","_ref_237","_ref_238","_ref_239"],"sec-validateatomicaccess":["_ref_240","_ref_241","_ref_242"],"omitted-for-brevity":["_ref_243","_ref_244"]},"entries":[{"type":"clause","id":"intro","titleHTML":"Resizable ArrayBuffer and growable SharedArrayBuffer","number":""},{"type":"op","aoid":"DetachArrayBuffer","refId":"sec-detacharraybuffer"},{"type":"clause","id":"sec-detacharraybuffer","title":"DetachArrayBuffer ( arrayBuffer [ , key ] )","titleHTML":"DetachArrayBuffer ( arrayBuffer [ , key ] )","number":"1.1.1","referencingIds":["_ref_53"]},{"type":"op","aoid":"AllocateArrayBuffer","refId":"sec-allocatearraybuffer"},{"type":"clause","id":"sec-allocatearraybuffer","title":"AllocateArrayBuffer ( constructor, byteLength [ , maxByteLength ] )","titleHTML":"AllocateArrayBuffer ( constructor, byteLength [ , maxByteLength ] )","number":"1.1.2","referencingIds":["_ref_20","_ref_21","_ref_183","_ref_189"]},{"type":"op","aoid":"ArrayBufferByteLength","refId":"sec-arraybufferlength"},{"type":"clause","id":"sec-arraybufferlength","title":"ArrayBufferByteLength ( arrayBuffer, order )","titleHTML":"ArrayBufferByteLength ( arrayBuffer, order )","number":"1.1.3","referencingIds":["_ref_11","_ref_67","_ref_82","_ref_197","_ref_224","_ref_244"]},{"type":"op","aoid":"MakeIdempotentArrayBufferByteLengthGetter","refId":"sec-makeidempotentarraybufferbytelengthgetter"},{"type":"clause","id":"sec-makeidempotentarraybufferbytelengthgetter","title":"MakeIdempotentArrayBufferByteLengthGetter ( order )","titleHTML":"MakeIdempotentArrayBufferByteLengthGetter ( order )","number":"1.1.4","referencingIds":["_ref_91","_ref_97","_ref_105","_ref_109","_ref_113","_ref_117","_ref_120","_ref_122","_ref_128","_ref_133","_ref_138","_ref_142","_ref_158","_ref_161","_ref_177","_ref_184","_ref_206","_ref_217","_ref_230","_ref_233","_ref_238","_ref_240"]},{"type":"op","aoid":"IsResizableArrayBuffer","refId":"sec-isresizablearraybuffer"},{"type":"clause","id":"sec-isresizablearraybuffer","title":"IsResizableArrayBuffer ( arrayBuffer )","titleHTML":"IsResizableArrayBuffer ( arrayBuffer )","number":"1.1.5","referencingIds":["_ref_25","_ref_28","_ref_70","_ref_73","_ref_101","_ref_194","_ref_225"]},{"type":"clause","id":"sec-getarraybuffermaxbytelengthoption","title":"GetArrayBufferMaxByteLengthOption ( options )","titleHTML":"GetArrayBufferMaxByteLengthOption ( options )","number":"1.1.6"},{"type":"op","aoid":"HostResizeArrayBuffer","refId":"sec-hostresizearraybuffer"},{"type":"clause","id":"sec-hostresizearraybuffer","title":"HostResizeArrayBuffer ( buffer, newByteLength )","titleHTML":"HostResizeArrayBuffer ( buffer, newByteLength )","number":"1.1.7","referencingIds":["_ref_44","_ref_61"]},{"type":"clause","id":"sec-abstract-operations-for-arraybuffer-objects-mods","titleHTML":"Modifications to Abstract Operations for ArrayBuffer Objects","number":"1.1"},{"type":"clause","id":"sec-arraybuffer-length","title":"ArrayBuffer ( length[ , options ] )","titleHTML":"ArrayBuffer ( length[ , options ] )","number":"1.2.1"},{"type":"clause","id":"sec-arraybuffer-constructor","titleHTML":"The ArrayBuffer Constructor","number":"1.2","referencingIds":["_ref_33","_ref_51","_ref_170","_ref_171","_ref_181","_ref_182"]},{"type":"clause","id":"sec-get-arraybuffer-@@species","titleHTML":"get ArrayBuffer [ @@species ]","number":"1.3.1"},{"type":"clause","id":"sec-get-arraybuffer.prototype.maxbytelength","titleHTML":"get ArrayBuffer.prototype.maxByteLength","number":"1.3.2"},{"type":"clause","id":"sec-get-arraybuffer.prototype.resizable","titleHTML":"get ArrayBuffer.prototype.resizable","number":"1.3.3"},{"type":"clause","id":"sec-arraybuffer.prototype.slice","title":"ArrayBuffer.prototype.slice ( start, end )","titleHTML":"ArrayBuffer.prototype.slice ( start, end )","number":"1.3.4","referencingIds":["_ref_0"]},{"type":"clause","id":"sec-arraybuffer.prototype.resize","title":"ArrayBuffer.prototype.resize ( newLength )","titleHTML":"ArrayBuffer.prototype.resize ( newLength )","number":"1.3.5"},{"type":"clause","id":"sec-arraybuffer.prototype.transfer","title":"ArrayBuffer.prototype.transfer ( [ newLength ] )","titleHTML":"ArrayBuffer.prototype.transfer ( [ newLength ] )","number":"1.3.6"},{"type":"clause","id":"sec-properties-of-the-arraybuffer-prototype-object-mods","titleHTML":"Modifications to the Properties of the ArrayBuffer Prototype Object","number":"1.3"},{"type":"clause","id":"sec-arraybuffer-objects-mods","titleHTML":"Modifications to ArrayBuffer Objects","number":"1"},{"type":"op","aoid":"AllocateSharedArrayBuffer","refId":"sec-allocatesharedarraybuffer"},{"type":"clause","id":"sec-allocatesharedarraybuffer","title":"AllocateSharedArrayBuffer ( constructor, byteLength [ , maxByteLength ] )","titleHTML":"AllocateSharedArrayBuffer ( constructor, byteLength [ , maxByteLength ] )","number":"2.1.1","referencingIds":["_ref_63","_ref_64"]},{"type":"op","aoid":"HostGrowSharedArrayBuffer","refId":"sec-hostgrowsharedarraybuffer"},{"type":"clause","id":"sec-hostgrowsharedarraybuffer","title":"HostGrowSharedArrayBuffer ( buffer, newByteLength )","titleHTML":"HostGrowSharedArrayBuffer ( buffer, newByteLength )","number":"2.1.2","referencingIds":["_ref_76"]},{"type":"clause","id":"sec-abstract-operations-for-sharedarraybuffer-objects-mods","titleHTML":"Modifications to Abstract Operations for SharedArrayBuffer Objects","number":"2.1"},{"type":"clause","id":"sec-sharedarraybuffer-length","title":"SharedArrayBuffer ( length[ , options ] )","titleHTML":"SharedArrayBuffer ( length[ , options ] )","number":"2.2.1"},{"type":"clause","id":"sec-sharedarraybuffer-constructor","titleHTML":"The SharedArrayBuffer Constructor","number":"2.2","referencingIds":["_ref_84"]},{"type":"clause","id":"sec-get-sharedarraybuffer.prototype.bytelength","titleHTML":"get SharedArrayBuffer.prototype.byteLength","number":"2.3.1"},{"type":"clause","id":"sec-get-sharedarraybuffer.prototype.growable","titleHTML":"get SharedArrayBuffer.prototype.growable","number":"2.3.2"},{"type":"clause","id":"sec-get-sharedarraybuffer.prototype.maxbytelength","titleHTML":"get SharedArrayBuffer.prototype.maxByteLength","number":"2.3.3"},{"type":"clause","id":"sec-sharedarraybuffer.prototype.grow","title":"SharedArrayBuffer.prototype.grow ( newLength )","titleHTML":"SharedArrayBuffer.prototype.grow ( newLength )","number":"2.3.4"},{"type":"clause","id":"sec-sharedarraybuffer.prototype.slice","title":"SharedArrayBuffer.prototype.slice ( start, end )","titleHTML":"SharedArrayBuffer.prototype.slice ( start, end )","number":"2.3.5"},{"type":"clause","id":"sec-properties-of-the-sharedarraybuffer-prototype-object-mods","titleHTML":"Modifications to the Properties of the SharedArrayBuffer Prototype Object","number":"2.3"},{"type":"clause","id":"sec-sharedarraybuffer-objects-mods","titleHTML":"Modifications to SharedArrayBuffer Objects","number":"2"},{"type":"clause","id":"sec-integer-indexed-exotic-objects-ownpropertykeys","titleHTML":"[[OwnPropertyKeys]] ( )","number":"3.1"},{"type":"op","aoid":"IsValidIntegerIndex","refId":"sec-isvalidintegerindex"},{"type":"clause","id":"sec-isvalidintegerindex","title":"IsValidIntegerIndex ( O, index )","titleHTML":"IsValidIntegerIndex ( O, index )","number":"3.2"},{"type":"op","aoid":"IntegerIndexedObjectByteLength","refId":"sec-integerindexedobjectbytelength"},{"type":"clause","id":"sec-integerindexedobjectbytelength","title":"IntegerIndexedObjectByteLength ( O, getBufferByteLength )","titleHTML":"IntegerIndexedObjectByteLength ( O, getBufferByteLength )","number":"3.3","referencingIds":["_ref_110","_ref_168"]},{"type":"op","aoid":"IntegerIndexedObjectLength","refId":"sec-integerindexedobjectlength"},{"type":"clause","id":"sec-integerindexedobjectlength","title":"IntegerIndexedObjectLength ( O, getBufferByteLength )","titleHTML":"IntegerIndexedObjectLength ( O, getBufferByteLength )","number":"3.4","referencingIds":["_ref_92","_ref_98","_ref_99","_ref_118","_ref_121","_ref_123","_ref_129","_ref_134","_ref_139","_ref_143","_ref_162","_ref_178","_ref_186","_ref_241","_ref_243"]},{"type":"op","aoid":"IsIntegerIndexedObjectOutOfBounds","refId":"sec-isintegerindexedobjectoutofbounds"},{"type":"clause","id":"sec-isintegerindexedobjectoutofbounds","title":"IsIntegerIndexedObjectOutOfBounds ( O, getBufferByteLength )","titleHTML":"IsIntegerIndexedObjectOutOfBounds ( O, getBufferByteLength )","number":"3.5","referencingIds":["_ref_100","_ref_106","_ref_114","_ref_159","_ref_164","_ref_185"]},{"type":"clause","id":"sec-integer-indexed-exotic-objects-mods","titleHTML":"Modifications to Integer-Indexed Exotic Objects","number":"3"},{"type":"op","aoid":"ValidateTypedArray","refId":"sec-validatetypedarray"},{"type":"clause","id":"sec-validatetypedarray","title":"ValidateTypedArray ( O )","titleHTML":"ValidateTypedArray ( O )","number":"4.1.1","referencingIds":["_ref_119","_ref_127","_ref_137","_ref_151"]},{"type":"clause","id":"sec-get-%typedarray%.prototype.bytelength","titleHTML":"get %TypedArray%.prototype.byteLength","number":"4.1.2"},{"type":"clause","id":"sec-get-%typedarray%.prototype.byteoffset","titleHTML":"get %TypedArray%.prototype.byteOffset","number":"4.1.3"},{"type":"clause","id":"sec-get-%typedarray%.prototype.length","titleHTML":"get %TypedArray%.prototype.length","number":"4.1.4"},{"type":"clause","id":"sec-%typedarray%.prototype.copywithin","title":"%TypedArray%.prototype.copyWithin ( target, start [ , end ] )","titleHTML":"%TypedArray%.prototype.copyWithin ( target, start [ , end ] )","number":"4.1.5"},{"type":"clause","id":"sec-%typedarray%.prototype.fill","title":"%TypedArray%.prototype.fill ( value [ , start [ , end ] ] )","titleHTML":"%TypedArray%.prototype.fill ( value [ , start [ , end ] ] )","number":"4.1.6"},{"type":"clause","id":"sec-%typedarray%.prototype.slice","title":"%TypedArray%.prototype.slice ( start, end )","titleHTML":"%TypedArray%.prototype.slice ( start, end )","number":"4.1.7"},{"type":"clause","id":"sec-%typedarray%.prototype.sort","title":"%TypedArray%.prototype.sort ( comparefn )","titleHTML":"%TypedArray%.prototype.sort ( comparefn )","number":"4.1.8"},{"type":"op","aoid":"SetTypedArrayFromTypedArray","refId":"sec-settypedarrayfromtypedarray"},{"type":"clause","id":"sec-settypedarrayfromtypedarray","title":"SetTypedArrayFromTypedArray ( target, targetOffset, source )","titleHTML":"SetTypedArrayFromTypedArray ( target, targetOffset, source )","number":"4.1.9"},{"type":"clause","id":"sec-properties-of-the-%typedarrayprototype%-object-mods","titleHTML":"Modifications to Properties of the %TypedArray.prototype% Object","number":"4.1"},{"type":"op","aoid":"InitializeTypedArrayFromTypedArray","refId":"sec-initializetypedarrayfromtypedarray"},{"type":"clause","id":"sec-initializetypedarrayfromtypedarray","title":"InitializeTypedArrayFromTypedArray ( O, srcArray )","titleHTML":"InitializeTypedArrayFromTypedArray ( O, srcArray )","number":"4.2.1"},{"type":"op","aoid":"InitializeTypedArrayFromArrayBuffer","refId":"sec-initializetypedarrayfromarraybuffer"},{"type":"clause","id":"sec-initializetypedarrayfromarraybuffer","title":"InitializeTypedArrayFromArrayBuffer ( O, buffer, byteOffset, length )","titleHTML":"InitializeTypedArrayFromArrayBuffer ( O, buffer, byteOffset, length )","number":"4.2.2"},{"type":"clause","id":"sec-typedarray-constructors-mods","title":"Modifications to the TypedArray Constructors","titleHTML":"Modifications to the TypedArray Constructors","number":"4.2"},{"type":"clause","id":"sec-typedarray-objects-mods","titleHTML":"Modifications to TypedArray Objects","number":"4"},{"type":"op","aoid":"GetViewByteLength","refId":"sec-getviewbytelength"},{"type":"clause","id":"sec-getviewbytelength","title":"GetViewByteLength ( view, getBufferByteLength )","titleHTML":"GetViewByteLength ( view, getBufferByteLength )","number":"5.1.1","referencingIds":["_ref_201","_ref_208","_ref_219","_ref_235"]},{"type":"op","aoid":"IsViewOutOfBounds","refId":"sec-isviewoutofbounds"},{"type":"clause","id":"sec-isviewoutofbounds","title":"IsViewOutOfBounds ( view, getBufferByteLength )","titleHTML":"IsViewOutOfBounds ( view, getBufferByteLength )","number":"5.1.2","referencingIds":["_ref_207","_ref_218","_ref_234","_ref_239"]},{"type":"op","aoid":"GetViewValue","refId":"sec-getviewvalue"},{"type":"clause","id":"sec-getviewvalue","title":"GetViewValue ( view, requestIndex, isLittleEndian, type )","titleHTML":"GetViewValue ( view, requestIndex, isLittleEndian, type )","number":"5.1.3"},{"type":"op","aoid":"SetViewValue","refId":"sec-setviewvalue"},{"type":"clause","id":"sec-setviewvalue","title":"SetViewValue ( view, requestIndex, isLittleEndian, type, value )","titleHTML":"SetViewValue ( view, requestIndex, isLittleEndian, type, value )","number":"5.1.4"},{"type":"clause","id":"sec-abstract-operations-for-dataview-objects-mods","titleHTML":"Modifications to Abstract Operations For DataView Objects","number":"5.1"},{"type":"clause","id":"sec-dataview-buffer-byteoffset-bytelength","title":"DataView ( buffer [ , byteOffset [ , byteLength ] ] )","titleHTML":"DataView ( buffer [ , byteOffset [ , byteLength ] ] )","number":"5.2.1"},{"type":"clause","id":"sec-dataview-constructor-mods","titleHTML":"Modifications to the DataView Constructor","number":"5.2"},{"type":"clause","id":"sec-get-dataview.prototype.bytelength","titleHTML":"get DataView.prototype.byteLength","number":"5.3.1"},{"type":"clause","id":"sec-get-dataview.prototype.byteoffset","titleHTML":"get DataView.prototype.byteOffset","number":"5.3.2"},{"type":"clause","id":"sec-properties-of-the-dataview-prototype-object-mods","titleHTML":"Modifications to Properties of the DataView Prototype Object","number":"5.3"},{"type":"clause","id":"sec-dataview-objects-mods","titleHTML":"Modifications to DataView Objects","number":"5"},{"type":"op","aoid":"ValidateAtomicAccess","refId":"sec-validateatomicaccess"},{"type":"clause","id":"sec-validateatomicaccess","title":"ValidateAtomicAccess ( typedArray, requestIndex )","titleHTML":"ValidateAtomicAccess ( typedArray, requestIndex )","number":"6.1"},{"type":"clause","id":"sec-abstract-operations-for-atomics-mods","titleHTML":"Modifications to Abstract Operations for Atomics","number":"6"},{"type":"clause","id":"sec-maxbytelength-guidelines","titleHTML":"Resizable ArrayBuffer and growable SharedArrayBuffer Guidelines","number":"7"},{"type":"clause","id":"omitted-for-brevity","titleHTML":"Mechanical Changes Omitted for Brevity","number":"8"}]}`); +let biblio = JSON.parse(`{"refsByClause":{"sec-get-arraybuffer-@@species":["_ref_0"],"sec-detacharraybuffer":["_ref_1","_ref_2","_ref_3","_ref_4"],"sec-allocatearraybuffer":["_ref_5","_ref_6"],"sec-arraybufferlength":["_ref_7","_ref_8","_ref_9","_ref_10"],"sec-makeidempotentarraybufferbytelengthgetter":["_ref_11","_ref_12"],"sec-isresizablearraybuffer":["_ref_13"],"sec-getarraybuffermaxbytelengthoption":["_ref_14","_ref_15","_ref_16"],"sec-hostresizearraybuffer":["_ref_17","_ref_18"],"sec-arraybuffer-length":["_ref_19","_ref_20","_ref_21"],"sec-get-arraybuffer.prototype.maxbytelength":["_ref_22","_ref_23","_ref_24","_ref_25"],"sec-get-arraybuffer.prototype.resizable":["_ref_26","_ref_27","_ref_28"],"sec-arraybuffer.prototype.slice":["_ref_29","_ref_30","_ref_31","_ref_32","_ref_33","_ref_34","_ref_35","_ref_36","_ref_37","_ref_38","_ref_39","_ref_40"],"sec-arraybuffer.prototype.resize":["_ref_41","_ref_42","_ref_43","_ref_44","_ref_45","_ref_46"],"sec-arraybuffer.prototype.transfer":["_ref_47","_ref_48","_ref_49","_ref_50","_ref_51","_ref_52","_ref_53"],"sec-allocatesharedarraybuffer":["_ref_54","_ref_55","_ref_56","_ref_57"],"sec-hostgrowsharedarraybuffer":["_ref_58","_ref_59","_ref_60","_ref_61"],"sec-sharedarraybuffer-length":["_ref_62","_ref_63","_ref_64"],"sec-get-sharedarraybuffer.prototype.bytelength":["_ref_65","_ref_66","_ref_67"],"sec-get-sharedarraybuffer.prototype.growable":["_ref_68","_ref_69","_ref_70"],"sec-get-sharedarraybuffer.prototype.maxbytelength":["_ref_71","_ref_72","_ref_73"],"sec-sharedarraybuffer.prototype.grow":["_ref_74","_ref_75","_ref_76","_ref_77","_ref_78","_ref_79"],"sec-sharedarraybuffer.prototype.slice":["_ref_80","_ref_81","_ref_82","_ref_83","_ref_84","_ref_85","_ref_86","_ref_87","_ref_88"],"sec-integer-indexed-exotic-objects-ownpropertykeys":["_ref_89","_ref_90","_ref_91","_ref_92","_ref_93","_ref_94","_ref_95"],"sec-isvalidintegerindex":["_ref_96","_ref_97","_ref_98"],"sec-integerindexedobjectbytelength":["_ref_99"],"sec-integerindexedobjectlength":["_ref_100","_ref_101"],"sec-isintegerindexedobjectoutofbounds":["_ref_102"],"sec-validatetypedarray":["_ref_103","_ref_104","_ref_105","_ref_106"],"sec-get-%typedarray%.prototype.bytelength":["_ref_107","_ref_108","_ref_109","_ref_110"],"sec-get-%typedarray%.prototype.byteoffset":["_ref_111","_ref_112","_ref_113","_ref_114"],"sec-get-%typedarray%.prototype.length":["_ref_115","_ref_116","_ref_117","_ref_118"],"sec-%typedarray%.prototype.copywithin":["_ref_119","_ref_120","_ref_121","_ref_122","_ref_123","_ref_124","_ref_125","_ref_126"],"sec-%typedarray%.prototype.fill":["_ref_127","_ref_128","_ref_129","_ref_130","_ref_131","_ref_132","_ref_133","_ref_134","_ref_135","_ref_136"],"sec-%typedarray%.prototype.slice":["_ref_137","_ref_138","_ref_139","_ref_140","_ref_141","_ref_142","_ref_143","_ref_144","_ref_145","_ref_146","_ref_147","_ref_148","_ref_149"],"sec-%typedarray%.prototype.sort":["_ref_150","_ref_151","_ref_152","_ref_153","_ref_154","_ref_155","_ref_156","_ref_157","_ref_158","_ref_159"],"sec-%typedarray%.prototype.subarray":["_ref_160","_ref_161","_ref_162","_ref_163"],"sec-settypedarrayfromtypedarray":["_ref_164","_ref_165","_ref_166","_ref_167","_ref_168","_ref_169","_ref_170","_ref_171","_ref_172","_ref_173","_ref_174","_ref_175","_ref_176","_ref_177","_ref_178","_ref_179"],"sec-initializetypedarrayfromtypedarray":["_ref_180","_ref_181","_ref_182","_ref_183","_ref_184","_ref_185","_ref_186","_ref_187","_ref_188","_ref_189","_ref_190","_ref_191","_ref_192","_ref_193","_ref_194","_ref_195","_ref_196"],"sec-initializetypedarrayfromarraybuffer":["_ref_197","_ref_198","_ref_199","_ref_200","_ref_201"],"sec-getviewbytelength":["_ref_202"],"sec-isviewoutofbounds":["_ref_203","_ref_204","_ref_205"],"sec-getviewvalue":["_ref_206","_ref_207","_ref_208","_ref_209","_ref_210","_ref_211","_ref_212","_ref_213"],"sec-setviewvalue":["_ref_214","_ref_215","_ref_216","_ref_217","_ref_218","_ref_219","_ref_220","_ref_221","_ref_222","_ref_223","_ref_224"],"sec-dataview-buffer-byteoffset-bytelength":["_ref_225","_ref_226","_ref_227","_ref_228","_ref_229","_ref_230","_ref_231","_ref_232","_ref_233","_ref_234"],"sec-get-dataview.prototype.bytelength":["_ref_235","_ref_236","_ref_237","_ref_238","_ref_239"],"sec-get-dataview.prototype.byteoffset":["_ref_240","_ref_241","_ref_242","_ref_243"],"sec-validateatomicaccess":["_ref_244","_ref_245","_ref_246"],"omitted-for-brevity":["_ref_247","_ref_248"]},"entries":[{"type":"clause","id":"intro","titleHTML":"Resizable ArrayBuffer and growable SharedArrayBuffer","number":""},{"type":"op","aoid":"DetachArrayBuffer","refId":"sec-detacharraybuffer"},{"type":"clause","id":"sec-detacharraybuffer","title":"DetachArrayBuffer ( arrayBuffer [ , key ] )","titleHTML":"DetachArrayBuffer ( arrayBuffer [ , key ] )","number":"1.1.1","referencingIds":["_ref_53"]},{"type":"op","aoid":"AllocateArrayBuffer","refId":"sec-allocatearraybuffer"},{"type":"clause","id":"sec-allocatearraybuffer","title":"AllocateArrayBuffer ( constructor, byteLength [ , maxByteLength ] )","titleHTML":"AllocateArrayBuffer ( constructor, byteLength [ , maxByteLength ] )","number":"1.1.2","referencingIds":["_ref_20","_ref_21","_ref_187","_ref_193"]},{"type":"op","aoid":"ArrayBufferByteLength","refId":"sec-arraybufferlength"},{"type":"clause","id":"sec-arraybufferlength","title":"ArrayBufferByteLength ( arrayBuffer, order )","titleHTML":"ArrayBufferByteLength ( arrayBuffer, order )","number":"1.1.3","referencingIds":["_ref_11","_ref_67","_ref_82","_ref_201","_ref_228","_ref_248"]},{"type":"op","aoid":"MakeIdempotentArrayBufferByteLengthGetter","refId":"sec-makeidempotentarraybufferbytelengthgetter"},{"type":"clause","id":"sec-makeidempotentarraybufferbytelengthgetter","title":"MakeIdempotentArrayBufferByteLengthGetter ( order )","titleHTML":"MakeIdempotentArrayBufferByteLengthGetter ( order )","number":"1.1.4","referencingIds":["_ref_91","_ref_97","_ref_105","_ref_109","_ref_113","_ref_117","_ref_120","_ref_122","_ref_128","_ref_133","_ref_138","_ref_142","_ref_158","_ref_161","_ref_165","_ref_181","_ref_188","_ref_210","_ref_221","_ref_234","_ref_237","_ref_242","_ref_244"]},{"type":"op","aoid":"IsResizableArrayBuffer","refId":"sec-isresizablearraybuffer"},{"type":"clause","id":"sec-isresizablearraybuffer","title":"IsResizableArrayBuffer ( arrayBuffer )","titleHTML":"IsResizableArrayBuffer ( arrayBuffer )","number":"1.1.5","referencingIds":["_ref_25","_ref_28","_ref_70","_ref_73","_ref_101","_ref_198","_ref_229"]},{"type":"clause","id":"sec-getarraybuffermaxbytelengthoption","title":"GetArrayBufferMaxByteLengthOption ( options )","titleHTML":"GetArrayBufferMaxByteLengthOption ( options )","number":"1.1.6"},{"type":"op","aoid":"HostResizeArrayBuffer","refId":"sec-hostresizearraybuffer"},{"type":"clause","id":"sec-hostresizearraybuffer","title":"HostResizeArrayBuffer ( buffer, newByteLength )","titleHTML":"HostResizeArrayBuffer ( buffer, newByteLength )","number":"1.1.7","referencingIds":["_ref_44","_ref_61"]},{"type":"clause","id":"sec-abstract-operations-for-arraybuffer-objects-mods","titleHTML":"Modifications to Abstract Operations for ArrayBuffer Objects","number":"1.1"},{"type":"clause","id":"sec-arraybuffer-length","title":"ArrayBuffer ( length[ , options ] )","titleHTML":"ArrayBuffer ( length[ , options ] )","number":"1.2.1"},{"type":"clause","id":"sec-arraybuffer-constructor","titleHTML":"The ArrayBuffer Constructor","number":"1.2","referencingIds":["_ref_33","_ref_51","_ref_174","_ref_175","_ref_185","_ref_186"]},{"type":"clause","id":"sec-get-arraybuffer-@@species","titleHTML":"get ArrayBuffer [ @@species ]","number":"1.3.1"},{"type":"clause","id":"sec-get-arraybuffer.prototype.maxbytelength","titleHTML":"get ArrayBuffer.prototype.maxByteLength","number":"1.3.2"},{"type":"clause","id":"sec-get-arraybuffer.prototype.resizable","titleHTML":"get ArrayBuffer.prototype.resizable","number":"1.3.3"},{"type":"clause","id":"sec-arraybuffer.prototype.slice","title":"ArrayBuffer.prototype.slice ( start, end )","titleHTML":"ArrayBuffer.prototype.slice ( start, end )","number":"1.3.4","referencingIds":["_ref_0"]},{"type":"clause","id":"sec-arraybuffer.prototype.resize","title":"ArrayBuffer.prototype.resize ( newLength )","titleHTML":"ArrayBuffer.prototype.resize ( newLength )","number":"1.3.5"},{"type":"clause","id":"sec-arraybuffer.prototype.transfer","title":"ArrayBuffer.prototype.transfer ( [ newLength ] )","titleHTML":"ArrayBuffer.prototype.transfer ( [ newLength ] )","number":"1.3.6"},{"type":"clause","id":"sec-properties-of-the-arraybuffer-prototype-object-mods","titleHTML":"Modifications to the Properties of the ArrayBuffer Prototype Object","number":"1.3"},{"type":"clause","id":"sec-arraybuffer-objects-mods","titleHTML":"Modifications to ArrayBuffer Objects","number":"1"},{"type":"op","aoid":"AllocateSharedArrayBuffer","refId":"sec-allocatesharedarraybuffer"},{"type":"clause","id":"sec-allocatesharedarraybuffer","title":"AllocateSharedArrayBuffer ( constructor, byteLength [ , maxByteLength ] )","titleHTML":"AllocateSharedArrayBuffer ( constructor, byteLength [ , maxByteLength ] )","number":"2.1.1","referencingIds":["_ref_63","_ref_64"]},{"type":"op","aoid":"HostGrowSharedArrayBuffer","refId":"sec-hostgrowsharedarraybuffer"},{"type":"clause","id":"sec-hostgrowsharedarraybuffer","title":"HostGrowSharedArrayBuffer ( buffer, newByteLength )","titleHTML":"HostGrowSharedArrayBuffer ( buffer, newByteLength )","number":"2.1.2","referencingIds":["_ref_76"]},{"type":"clause","id":"sec-abstract-operations-for-sharedarraybuffer-objects-mods","titleHTML":"Modifications to Abstract Operations for SharedArrayBuffer Objects","number":"2.1"},{"type":"clause","id":"sec-sharedarraybuffer-length","title":"SharedArrayBuffer ( length[ , options ] )","titleHTML":"SharedArrayBuffer ( length[ , options ] )","number":"2.2.1"},{"type":"clause","id":"sec-sharedarraybuffer-constructor","titleHTML":"The SharedArrayBuffer Constructor","number":"2.2","referencingIds":["_ref_84"]},{"type":"clause","id":"sec-get-sharedarraybuffer.prototype.bytelength","titleHTML":"get SharedArrayBuffer.prototype.byteLength","number":"2.3.1"},{"type":"clause","id":"sec-get-sharedarraybuffer.prototype.growable","titleHTML":"get SharedArrayBuffer.prototype.growable","number":"2.3.2"},{"type":"clause","id":"sec-get-sharedarraybuffer.prototype.maxbytelength","titleHTML":"get SharedArrayBuffer.prototype.maxByteLength","number":"2.3.3"},{"type":"clause","id":"sec-sharedarraybuffer.prototype.grow","title":"SharedArrayBuffer.prototype.grow ( newLength )","titleHTML":"SharedArrayBuffer.prototype.grow ( newLength )","number":"2.3.4"},{"type":"clause","id":"sec-sharedarraybuffer.prototype.slice","title":"SharedArrayBuffer.prototype.slice ( start, end )","titleHTML":"SharedArrayBuffer.prototype.slice ( start, end )","number":"2.3.5"},{"type":"clause","id":"sec-properties-of-the-sharedarraybuffer-prototype-object-mods","titleHTML":"Modifications to the Properties of the SharedArrayBuffer Prototype Object","number":"2.3"},{"type":"clause","id":"sec-sharedarraybuffer-objects-mods","titleHTML":"Modifications to SharedArrayBuffer Objects","number":"2"},{"type":"clause","id":"sec-integer-indexed-exotic-objects-ownpropertykeys","titleHTML":"[[OwnPropertyKeys]] ( )","number":"3.1"},{"type":"op","aoid":"IsValidIntegerIndex","refId":"sec-isvalidintegerindex"},{"type":"clause","id":"sec-isvalidintegerindex","title":"IsValidIntegerIndex ( O, index )","titleHTML":"IsValidIntegerIndex ( O, index )","number":"3.2"},{"type":"op","aoid":"IntegerIndexedObjectByteLength","refId":"sec-integerindexedobjectbytelength"},{"type":"clause","id":"sec-integerindexedobjectbytelength","title":"IntegerIndexedObjectByteLength ( O, getBufferByteLength )","titleHTML":"IntegerIndexedObjectByteLength ( O, getBufferByteLength )","number":"3.3","referencingIds":["_ref_110","_ref_172"]},{"type":"op","aoid":"IntegerIndexedObjectLength","refId":"sec-integerindexedobjectlength"},{"type":"clause","id":"sec-integerindexedobjectlength","title":"IntegerIndexedObjectLength ( O, getBufferByteLength )","titleHTML":"IntegerIndexedObjectLength ( O, getBufferByteLength )","number":"3.4","referencingIds":["_ref_92","_ref_98","_ref_99","_ref_118","_ref_121","_ref_123","_ref_129","_ref_134","_ref_139","_ref_143","_ref_162","_ref_166","_ref_182","_ref_190","_ref_245","_ref_247"]},{"type":"op","aoid":"IsIntegerIndexedObjectOutOfBounds","refId":"sec-isintegerindexedobjectoutofbounds"},{"type":"clause","id":"sec-isintegerindexedobjectoutofbounds","title":"IsIntegerIndexedObjectOutOfBounds ( O, getBufferByteLength )","titleHTML":"IsIntegerIndexedObjectOutOfBounds ( O, getBufferByteLength )","number":"3.5","referencingIds":["_ref_100","_ref_106","_ref_114","_ref_159","_ref_168","_ref_189"]},{"type":"clause","id":"sec-integer-indexed-exotic-objects-mods","titleHTML":"Modifications to Integer-Indexed Exotic Objects","number":"3"},{"type":"op","aoid":"ValidateTypedArray","refId":"sec-validatetypedarray"},{"type":"clause","id":"sec-validatetypedarray","title":"ValidateTypedArray ( O )","titleHTML":"ValidateTypedArray ( O )","number":"4.1.1","referencingIds":["_ref_119","_ref_127","_ref_137","_ref_151"]},{"type":"clause","id":"sec-get-%typedarray%.prototype.bytelength","titleHTML":"get %TypedArray%.prototype.byteLength","number":"4.1.2"},{"type":"clause","id":"sec-get-%typedarray%.prototype.byteoffset","titleHTML":"get %TypedArray%.prototype.byteOffset","number":"4.1.3"},{"type":"clause","id":"sec-get-%typedarray%.prototype.length","titleHTML":"get %TypedArray%.prototype.length","number":"4.1.4"},{"type":"clause","id":"sec-%typedarray%.prototype.copywithin","title":"%TypedArray%.prototype.copyWithin ( target, start [ , end ] )","titleHTML":"%TypedArray%.prototype.copyWithin ( target, start [ , end ] )","number":"4.1.5"},{"type":"clause","id":"sec-%typedarray%.prototype.fill","title":"%TypedArray%.prototype.fill ( value [ , start [ , end ] ] )","titleHTML":"%TypedArray%.prototype.fill ( value [ , start [ , end ] ] )","number":"4.1.6"},{"type":"clause","id":"sec-%typedarray%.prototype.slice","title":"%TypedArray%.prototype.slice ( start, end )","titleHTML":"%TypedArray%.prototype.slice ( start, end )","number":"4.1.7"},{"type":"clause","id":"sec-%typedarray%.prototype.sort","title":"%TypedArray%.prototype.sort ( comparefn )","titleHTML":"%TypedArray%.prototype.sort ( comparefn )","number":"4.1.8"},{"type":"clause","id":"sec-%typedarray%.prototype.subarray","title":"%TypedArray%.prototype.subarray ( begin, end )","titleHTML":"%TypedArray%.prototype.subarray ( begin, end )","number":"4.1.9"},{"type":"op","aoid":"SetTypedArrayFromTypedArray","refId":"sec-settypedarrayfromtypedarray"},{"type":"clause","id":"sec-settypedarrayfromtypedarray","title":"SetTypedArrayFromTypedArray ( target, targetOffset, source )","titleHTML":"SetTypedArrayFromTypedArray ( target, targetOffset, source )","number":"4.1.10"},{"type":"clause","id":"sec-properties-of-the-%typedarrayprototype%-object-mods","titleHTML":"Modifications to Properties of the %TypedArray.prototype% Object","number":"4.1"},{"type":"op","aoid":"InitializeTypedArrayFromTypedArray","refId":"sec-initializetypedarrayfromtypedarray"},{"type":"clause","id":"sec-initializetypedarrayfromtypedarray","title":"InitializeTypedArrayFromTypedArray ( O, srcArray )","titleHTML":"InitializeTypedArrayFromTypedArray ( O, srcArray )","number":"4.2.1"},{"type":"op","aoid":"InitializeTypedArrayFromArrayBuffer","refId":"sec-initializetypedarrayfromarraybuffer"},{"type":"clause","id":"sec-initializetypedarrayfromarraybuffer","title":"InitializeTypedArrayFromArrayBuffer ( O, buffer, byteOffset, length )","titleHTML":"InitializeTypedArrayFromArrayBuffer ( O, buffer, byteOffset, length )","number":"4.2.2"},{"type":"clause","id":"sec-typedarray-constructors-mods","title":"Modifications to the TypedArray Constructors","titleHTML":"Modifications to the TypedArray Constructors","number":"4.2"},{"type":"clause","id":"sec-typedarray-objects-mods","titleHTML":"Modifications to TypedArray Objects","number":"4"},{"type":"op","aoid":"GetViewByteLength","refId":"sec-getviewbytelength"},{"type":"clause","id":"sec-getviewbytelength","title":"GetViewByteLength ( view, getBufferByteLength )","titleHTML":"GetViewByteLength ( view, getBufferByteLength )","number":"5.1.1","referencingIds":["_ref_205","_ref_212","_ref_223","_ref_239"]},{"type":"op","aoid":"IsViewOutOfBounds","refId":"sec-isviewoutofbounds"},{"type":"clause","id":"sec-isviewoutofbounds","title":"IsViewOutOfBounds ( view, getBufferByteLength )","titleHTML":"IsViewOutOfBounds ( view, getBufferByteLength )","number":"5.1.2","referencingIds":["_ref_211","_ref_222","_ref_238","_ref_243"]},{"type":"op","aoid":"GetViewValue","refId":"sec-getviewvalue"},{"type":"clause","id":"sec-getviewvalue","title":"GetViewValue ( view, requestIndex, isLittleEndian, type )","titleHTML":"GetViewValue ( view, requestIndex, isLittleEndian, type )","number":"5.1.3"},{"type":"op","aoid":"SetViewValue","refId":"sec-setviewvalue"},{"type":"clause","id":"sec-setviewvalue","title":"SetViewValue ( view, requestIndex, isLittleEndian, type, value )","titleHTML":"SetViewValue ( view, requestIndex, isLittleEndian, type, value )","number":"5.1.4"},{"type":"clause","id":"sec-abstract-operations-for-dataview-objects-mods","titleHTML":"Modifications to Abstract Operations For DataView Objects","number":"5.1"},{"type":"clause","id":"sec-dataview-buffer-byteoffset-bytelength","title":"DataView ( buffer [ , byteOffset [ , byteLength ] ] )","titleHTML":"DataView ( buffer [ , byteOffset [ , byteLength ] ] )","number":"5.2.1"},{"type":"clause","id":"sec-dataview-constructor-mods","titleHTML":"Modifications to the DataView Constructor","number":"5.2"},{"type":"clause","id":"sec-get-dataview.prototype.bytelength","titleHTML":"get DataView.prototype.byteLength","number":"5.3.1"},{"type":"clause","id":"sec-get-dataview.prototype.byteoffset","titleHTML":"get DataView.prototype.byteOffset","number":"5.3.2"},{"type":"clause","id":"sec-properties-of-the-dataview-prototype-object-mods","titleHTML":"Modifications to Properties of the DataView Prototype Object","number":"5.3"},{"type":"clause","id":"sec-dataview-objects-mods","titleHTML":"Modifications to DataView Objects","number":"5"},{"type":"op","aoid":"ValidateAtomicAccess","refId":"sec-validateatomicaccess"},{"type":"clause","id":"sec-validateatomicaccess","title":"ValidateAtomicAccess ( typedArray, requestIndex )","titleHTML":"ValidateAtomicAccess ( typedArray, requestIndex )","number":"6.1"},{"type":"clause","id":"sec-abstract-operations-for-atomics-mods","titleHTML":"Modifications to Abstract Operations for Atomics","number":"6"},{"type":"clause","id":"sec-maxbytelength-guidelines","titleHTML":"Resizable ArrayBuffer and growable SharedArrayBuffer Guidelines","number":"7"},{"type":"clause","id":"omitted-for-brevity","titleHTML":"Mechanical Changes Omitted for Brevity","number":"8"}]}`); ;let usesMultipage = false \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 74e5f0e..25ee443 100644 --- a/docs/index.html +++ b/docs/index.html @@ -6,7 +6,7 @@

Stage 3 Draft / December 21, 2021

+

Stage 3 Draft / February 16, 2022

Resizable ArrayBuffer and growable SharedArrayBuffer

We extend the ArrayBuffer and SharedArrayBuffer constructors to take an additional maximum byte length, which would construct dynamically resizable and growable array buffers, respectively. In addition, a transfer method is added to the ArrayBuffer prototype.

@@ -323,10 +323,18 @@

4.1.8 %TypedArray%.prototype.sort ( compare

+ +

4.1.9 %TypedArray%.prototype.subarray ( begin, end )

+

Returns a new TypedArray whose element type is the same as this TypedArray and whose ArrayBuffer is the same as the ArrayBuffer of this TypedArray, referencing the elements at begin, inclusive, up to end, exclusive. If either begin or end is negative, it refers to an index from the end of the array, as opposed to from the beginning.

+

When the subarray method is called, the following steps are taken:

+
  1. Let O be the this value.
  2. Perform ? RequireInternalSlot(O, [[TypedArrayName]]).
  3. Assert: O has a [[ViewedArrayBuffer]] internal slot.
  4. Let buffer be O.[[ViewedArrayBuffer]].
  5. Let getSrcBufferByteLength be MakeIdempotentArrayBufferByteLengthGetter(SeqCst).
  6. Let srcLength be O.[[ArrayLength]]IntegerIndexedObjectLength(O, getSrcBufferByteLength).
  7. If srcLength is out-of-bounds, set srcLength to 0.
  8. Let relativeBegin be ? ToIntegerOrInfinity(begin).
  9. If relativeBegin is -∞, let beginIndex be 0.
  10. Else if relativeBegin < 0, let beginIndex be max(srcLength + relativeBegin, 0).
  11. Else, let beginIndex be min(relativeBegin, srcLength).
  12. If O.[[ArrayLength]] is auto and end is undefined, then
    1. Let newLength be undefined.
  13. Else,
    1. If end is undefined, let relativeEnd be srcLength; else let relativeEnd be ? ToIntegerOrInfinity(end).
    2. If relativeEnd is -∞, let endIndex be 0.
    3. Else if relativeEnd < 0, let endIndex be max(srcLength + relativeEnd, 0).
    4. Else, let endIndex be min(relativeEnd, srcLength).
    5. Let newLength be max(endIndex - beginIndex, 0).
  14. Let constructorName be the String value of O.[[TypedArrayName]].
  15. Let elementSize be the Element Size value specified in Table 63 for constructorName.
  16. Let srcByteOffset be O.[[ByteOffset]].
  17. Let beginByteOffset be srcByteOffset + beginIndex × elementSize.
  18. If newLength is undefined, then
    1. Let argumentsList be « buffer, 𝔽(beginByteOffset) ».
  19. Else,
    1. Let argumentsList be « buffer, 𝔽(beginByteOffset), 𝔽(newLength) ».
  20. Return ? TypedArraySpeciesCreate(O, argumentsList).
+

This function is not generic. The this value must be an object with a [[TypedArrayName]] internal slot.

+
+ -

4.1.9 SetTypedArrayFromTypedArray ( target, targetOffset, source )

+

4.1.10 SetTypedArrayFromTypedArray ( target, targetOffset, source )

The abstract operation SetTypedArrayFromTypedArray takes arguments target (a TypedArray), targetOffset (a non-negative integer or +∞), and source (a TypedArray). It sets multiple values in target, starting at index targetOffset, reading the values from source. It performs the following steps when called:

-
  1. Assert: source is an Object that has a [[TypedArrayName]] internal slot.
  2. Let targetBuffer be target.[[ViewedArrayBuffer]].
  3. If IsDetachedBuffer(targetBuffer) is true, throw a TypeError exception.
  4. Let getSrcBufferByteLength be MakeIdempotentArrayBufferByteLengthGetter(SeqCst).
  5. Let targetLength be target.[[ArrayLength]]IntegerIndexedObjectLength(target, getSrcBufferByteLength).
  6. If targetLength is out-of-bounds, set targetLength to 0.
  7. Let srcBuffer be source.[[ViewedArrayBuffer]].
  8. If IsDetachedBuffer(srcBuffer) is true, throw a TypeError exception.
  9. If IsIntegerIndexedObjectOutOfBounds(target, getSrcBufferByteLength) is true, throw a TypeError exception.
  10. Let targetName be the String value of target.[[TypedArrayName]].
  11. Let targetType be the Element Type value in Table 63 for targetName.
  12. Let targetElementSize be the Element Size value specified in Table 63 for targetName.
  13. Let targetByteOffset be target.[[ByteOffset]].
  14. Let srcName be the String value of source.[[TypedArrayName]].
  15. Let srcType be the Element Type value in Table 63 for srcName.
  16. Let srcElementSize be the Element Size value specified in Table 63 for srcName.
  17. Let srcLength be source.[[ArrayLength]].
  18. Let srcByteOffset be source.[[ByteOffset]].
  19. If targetOffset is +∞, throw a RangeError exception.
  20. If srcLength + targetOffset > targetLength, throw a RangeError exception.
  21. If target.[[ContentType]] ≠ source.[[ContentType]], throw a TypeError exception.
  22. If both IsSharedArrayBuffer(srcBuffer) and IsSharedArrayBuffer(targetBuffer) are true, then
    1. If srcBuffer.[[ArrayBufferData]] and targetBuffer.[[ArrayBufferData]] are the same Shared Data Block values, let same be true; else let same be false.
  23. Else, let same be SameValue(srcBuffer, targetBuffer).
  24. If same is true, then
    1. Let srcByteLength be source.[[ByteLength]]IntegerIndexedObjectByteLength(source, getSrcBufferByteLength).
    2. Set srcBuffer to ? CloneArrayBuffer(srcBuffer, srcByteOffset, srcByteLength, %ArrayBuffer%).
    3. NOTE: %ArrayBuffer% is used to clone srcBuffer because is it known to not have any observable side-effects.
    4. Let srcByteIndex be 0.
  25. Else, let srcByteIndex be srcByteOffset.
  26. Let targetByteIndex be targetOffset × targetElementSize + targetByteOffset.
  27. Let limit be targetByteIndex + targetElementSize × srcLength.
  28. If srcType is the same as targetType, then
    1. NOTE: If srcType and targetType are the same, the transfer must be performed in a manner that preserves the bit-level encoding of the source data.
    2. Repeat, while targetByteIndex < limit,
      1. Let value be GetValueFromBuffer(srcBuffer, srcByteIndex, Uint8, true, Unordered).
      2. Perform SetValueInBuffer(targetBuffer, targetByteIndex, Uint8, value, true, Unordered).
      3. Set srcByteIndex to srcByteIndex + 1.
      4. Set targetByteIndex to targetByteIndex + 1.
  29. Else,
    1. Repeat, while targetByteIndex < limit,
      1. Let value be GetValueFromBuffer(srcBuffer, srcByteIndex, srcType, true, Unordered).
      2. Perform SetValueInBuffer(targetBuffer, targetByteIndex, targetType, value, true, Unordered).
      3. Set srcByteIndex to srcByteIndex + srcElementSize.
      4. Set targetByteIndex to targetByteIndex + targetElementSize.
+
  1. Assert: source is an Object that has a [[TypedArrayName]] internal slot.
  2. Let targetBuffer be target.[[ViewedArrayBuffer]].
  3. If IsDetachedBuffer(targetBuffer) is true, throw a TypeError exception.
  4. Let getSrcBufferByteLength be MakeIdempotentArrayBufferByteLengthGetter(SeqCst).
  5. Let targetLength be target.[[ArrayLength]]IntegerIndexedObjectLength(target, getSrcBufferByteLength).
  6. If targetLength is out-of-bounds, set targetLength to 0.
  7. Let srcBuffer be source.[[ViewedArrayBuffer]].
  8. If IsDetachedBuffer(srcBuffer) is true, throw a TypeError exception.
  9. If IsIntegerIndexedObjectOutOfBounds(target, getSrcBufferByteLength) is true, throw a TypeError exception.
  10. Let targetName be the String value of target.[[TypedArrayName]].
  11. Let targetType be the Element Type value in Table 63 for targetName.
  12. Let targetElementSize be the Element Size value specified in Table 63 for targetName.
  13. Let targetByteOffset be target.[[ByteOffset]].
  14. Let srcName be the String value of source.[[TypedArrayName]].
  15. Let srcType be the Element Type value in Table 63 for srcName.
  16. Let srcElementSize be the Element Size value specified in Table 63 for srcName.
  17. Let srcLength be source.[[ArrayLength]].
  18. Let srcByteOffset be source.[[ByteOffset]].
  19. If targetOffset is +∞, throw a RangeError exception.
  20. If srcLength + targetOffset > targetLength, throw a RangeError exception.
  21. If target.[[ContentType]] ≠ source.[[ContentType]], throw a TypeError exception.
  22. If both IsSharedArrayBuffer(srcBuffer) and IsSharedArrayBuffer(targetBuffer) are true, then
    1. If srcBuffer.[[ArrayBufferData]] and targetBuffer.[[ArrayBufferData]] are the same Shared Data Block values, let same be true; else let same be false.
  23. Else, let same be SameValue(srcBuffer, targetBuffer).
  24. If same is true, then
    1. Let srcByteLength be source.[[ByteLength]]IntegerIndexedObjectByteLength(source, getSrcBufferByteLength).
    2. Set srcBuffer to ? CloneArrayBuffer(srcBuffer, srcByteOffset, srcByteLength, %ArrayBuffer%).
    3. NOTE: %ArrayBuffer% is used to clone srcBuffer because is it known to not have any observable side-effects.
    4. Let srcByteIndex be 0.
  25. Else, let srcByteIndex be srcByteOffset.
  26. Let targetByteIndex be targetOffset × targetElementSize + targetByteOffset.
  27. Let limit be targetByteIndex + targetElementSize × srcLength.
  28. If srcType is the same as targetType, then
    1. NOTE: If srcType and targetType are the same, the transfer must be performed in a manner that preserves the bit-level encoding of the source data.
    2. Repeat, while targetByteIndex < limit,
      1. Let value be GetValueFromBuffer(srcBuffer, srcByteIndex, Uint8, true, Unordered).
      2. Perform SetValueInBuffer(targetBuffer, targetByteIndex, Uint8, value, true, Unordered).
      3. Set srcByteIndex to srcByteIndex + 1.
      4. Set targetByteIndex to targetByteIndex + 1.
  29. Else,
    1. Repeat, while targetByteIndex < limit,
      1. Let value be GetValueFromBuffer(srcBuffer, srcByteIndex, srcType, true, Unordered).
      2. Perform SetValueInBuffer(targetBuffer, targetByteIndex, targetType, value, true, Unordered).
      3. Set srcByteIndex to srcByteIndex + srcElementSize.
      4. Set targetByteIndex to targetByteIndex + targetElementSize.
@@ -336,13 +344,13 @@

4.2 Modifications to the TypedArray C

4.2.1 InitializeTypedArrayFromTypedArray ( O, srcArray )

The abstract operation InitializeTypedArrayFromTypedArray takes arguments O (a TypedArray) and srcArray (a TypedArray). It performs the following steps when called:

-
  1. Assert: O is an Object that has a [[TypedArrayName]] internal slot.
  2. Assert: srcArray is an Object that has a [[TypedArrayName]] internal slot.
  3. Let srcData be srcArray.[[ViewedArrayBuffer]].
  4. If IsDetachedBuffer(srcData) is true, throw a TypeError exception.
  5. Let constructorName be the String value of O.[[TypedArrayName]].
  6. Let elementType be the Element Type value in Table 63 for constructorName.
  7. Let getSrcBufferByteLength be MakeIdempotentArrayBufferByteLengthGetter(SeqCst).
  8. Let elementLength be srcArray.[[ArrayLength]]IntegerIndexedObjectLength(srcArray, getSrcBufferByteLength).
  9. If elementLength is out-of-bounds, set elementLength to 0.
  10. Let srcName be the String value of srcArray.[[TypedArrayName]].
  11. Let srcType be the Element Type value in Table 63 for srcName.
  12. Let srcElementSize be the Element Size value specified in Table 63 for srcName.
  13. Let srcByteOffset be srcArray.[[ByteOffset]].
  14. Let elementSize be the Element Size value specified in Table 63 for constructorName.
  15. Let byteLength be elementSize × elementLength.
  16. If IsSharedArrayBuffer(srcData) is false, then
    1. Let bufferConstructor be ? SpeciesConstructor(srcData, %ArrayBuffer%).
  17. Else,
    1. Let bufferConstructor be %ArrayBuffer%.
  18. Let data be ? AllocateArrayBuffer(bufferConstructor, byteLength).
  19. Set getSrcBufferByteLength to MakeIdempotentArrayBufferByteLengthGetter(SeqCst).
  20. If IsIntegerIndexedObjectOutOfBounds(srcArray, getSrcBufferByteLength) is true, throw a TypeError exception.
  21. Set elementLength to IntegerIndexedObjectLength(srcArray, getSrcBufferByteLength).
  22. Set byteLength to elementSize × elementLength.
  23. If elementType is the same as srcType, then
    1. Let data be ? CloneArrayBuffer(srcData, srcByteOffset, byteLength, bufferConstructor).
    2. Let srcBlock be srcData.[[ArrayBufferData]].
    3. Let targetBlock be data.[[ArrayBufferData]].
    4. Let numBytesToCopy be min(byteLength, data.[[ArrayBufferByteLength]]).
    5. Perform CopyDataBlockBytes(targetBlock, 0, srcBlock, srcByteOffset, numBytesToCopy).
  24. Else,
    1. Let data be ? AllocateArrayBuffer(bufferConstructor, byteLength).
    2. If IsDetachedBuffer(srcData) is true, throw a TypeError exception.
    3. If srcArray.[[ContentType]] ≠ O.[[ContentType]], throw a TypeError exception.
    4. Let srcByteIndex be srcByteOffset.
    5. Let targetByteIndex be 0.
    6. Let count be elementLength.
    7. Repeat, while count > 0,
      1. Let value be GetValueFromBuffer(srcData, srcByteIndex, srcType, true, Unordered).
      2. Perform SetValueInBuffer(data, targetByteIndex, elementType, value, true, Unordered).
      3. Set srcByteIndex to srcByteIndex + srcElementSize.
      4. Set targetByteIndex to targetByteIndex + elementSize.
      5. Set count to count - 1.
  25. Set O.[[ViewedArrayBuffer]] to data.
  26. Set O.[[ByteLength]] to byteLength.
  27. Set O.[[ByteOffset]] to 0.
  28. Set O.[[ArrayLength]] to elementLength.
+
  1. Assert: O is an Object that has a [[TypedArrayName]] internal slot.
  2. Assert: srcArray is an Object that has a [[TypedArrayName]] internal slot.
  3. Let srcData be srcArray.[[ViewedArrayBuffer]].
  4. If IsDetachedBuffer(srcData) is true, throw a TypeError exception.
  5. Let constructorName be the String value of O.[[TypedArrayName]].
  6. Let elementType be the Element Type value in Table 63 for constructorName.
  7. Let getSrcBufferByteLength be MakeIdempotentArrayBufferByteLengthGetter(SeqCst).
  8. Let elementLength be srcArray.[[ArrayLength]]IntegerIndexedObjectLength(srcArray, getSrcBufferByteLength).
  9. If elementLength is out-of-bounds, set elementLength to 0.
  10. Let srcName be the String value of srcArray.[[TypedArrayName]].
  11. Let srcType be the Element Type value in Table 63 for srcName.
  12. Let srcElementSize be the Element Size value specified in Table 63 for srcName.
  13. Let srcByteOffset be srcArray.[[ByteOffset]].
  14. Let elementSize be the Element Size value specified in Table 63 for constructorName.
  15. Let byteLength be elementSize × elementLength.
  16. If IsSharedArrayBuffer(srcData) is false, then
    1. Let bufferConstructor be ? SpeciesConstructor(srcData, %ArrayBuffer%).
  17. Else,
    1. Let bufferConstructor be %ArrayBuffer%.
  18. Let data be ? AllocateArrayBuffer(bufferConstructor, byteLength).
  19. Set getSrcBufferByteLength to MakeIdempotentArrayBufferByteLengthGetter(SeqCst).
  20. If IsIntegerIndexedObjectOutOfBounds(srcArray, getSrcBufferByteLength) is true, throw a TypeError exception.
  21. Set elementLength to IntegerIndexedObjectLength(srcArray, getSrcBufferByteLength).
  22. Set byteLength to elementSize × elementLength.
  23. If elementType is the same as srcType, then
    1. Let data be ? CloneArrayBuffer(srcData, srcByteOffset, byteLength, bufferConstructor).
    2. Let srcBlock be srcData.[[ArrayBufferData]].
    3. Let targetBlock be data.[[ArrayBufferData]].
    4. Let numBytesToCopy be min(byteLength, data.[[ArrayBufferByteLength]]).
    5. Perform CopyDataBlockBytes(targetBlock, 0, srcBlock, srcByteOffset, numBytesToCopy).
  24. Else,
    1. Let data be ? AllocateArrayBuffer(bufferConstructor, byteLength).
    2. If IsDetachedBuffer(srcData) is true, throw a TypeError exception.
    3. If srcArray.[[ContentType]] ≠ O.[[ContentType]], throw a TypeError exception.
    4. Let srcByteIndex be srcByteOffset.
    5. Let targetByteIndex be 0.
    6. Let count be elementLength.
    7. Repeat, while count > 0,
      1. Let value be GetValueFromBuffer(srcData, srcByteIndex, srcType, true, Unordered).
      2. Perform SetValueInBuffer(data, targetByteIndex, elementType, value, true, Unordered).
      3. Set srcByteIndex to srcByteIndex + srcElementSize.
      4. Set targetByteIndex to targetByteIndex + elementSize.
      5. Set count to count - 1.
  25. Set O.[[ViewedArrayBuffer]] to data.
  26. Set O.[[ByteLength]] to byteLength.
  27. Set O.[[ByteOffset]] to 0.
  28. Set O.[[ArrayLength]] to elementLength.

4.2.2 InitializeTypedArrayFromArrayBuffer ( O, buffer, byteOffset, length )

The abstract operation InitializeTypedArrayFromArrayBuffer takes arguments O (a TypedArray), buffer (an ArrayBuffer or a SharedArrayBuffer), byteOffset (an ECMAScript language value), and length (an ECMAScript language value). It performs the following steps when called:

-
  1. Assert: O is an Object that has a [[TypedArrayName]] internal slot.
  2. Assert: buffer is an Object that has an [[ArrayBufferData]] internal slot.
  3. Let constructorName be the String value of O.[[TypedArrayName]].
  4. Let elementSize be the Element Size value specified in Table 63 for constructorName.
  5. Let offset be ? ToIndex(byteOffset).
  6. If offset modulo elementSize ≠ 0, throw a RangeError exception
  7. Let bufferIsResizable be IsResizableArrayBuffer(buffer)..
  8. If length is not undefined, then
    1. Let newLength be ? ToIndex(length).
  9. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
  10. Let bufferByteLength be buffer.[[ArrayBufferByteLength]]ArrayBufferByteLength(buffer, SeqCst)..
  11. If length is undefined and bufferIsResizable is true, then
    1. If offset > bufferByteLength, throw a RangeError exception.
    2. Set O.[[ByteLength]] to auto.
    3. Set O.[[ArrayLength]] to auto.
  12. Else,
    1. If length is undefined, then
      1. If bufferByteLength modulo elementSize ≠ 0, throw a RangeError exception.
      2. Let newByteLength be bufferByteLength - offset.
      3. If newByteLength < 0, throw a RangeError exception.
    2. Else,
      1. Let newByteLength be newLength × elementSize.
      2. If offset + newByteLength > bufferByteLength, throw a RangeError exception.
    3. Set O.[[ViewedArrayBuffer]] to buffer.
    4. Set O.[[ByteLength]] to newByteLength.
    5. Set O.[[ByteOffset]] to offset.
    6. Set O.[[ArrayLength]] to newByteLength / elementSize.
  13. Set O.[[ViewedArrayBuffer]] to buffer.
  14. Set O.[[ByteOffset]] to offset.
+
  1. Assert: O is an Object that has a [[TypedArrayName]] internal slot.
  2. Assert: buffer is an Object that has an [[ArrayBufferData]] internal slot.
  3. Let constructorName be the String value of O.[[TypedArrayName]].
  4. Let elementSize be the Element Size value specified in Table 63 for constructorName.
  5. Let offset be ? ToIndex(byteOffset).
  6. If offset modulo elementSize ≠ 0, throw a RangeError exception
  7. Let bufferIsResizable be IsResizableArrayBuffer(buffer)..
  8. If length is not undefined, then
    1. Let newLength be ? ToIndex(length).
  9. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
  10. Let bufferByteLength be buffer.[[ArrayBufferByteLength]]ArrayBufferByteLength(buffer, SeqCst)..
  11. If length is undefined and bufferIsResizable is true, then
    1. If offset > bufferByteLength, throw a RangeError exception.
    2. Set O.[[ByteLength]] to auto.
    3. Set O.[[ArrayLength]] to auto.
  12. Else,
    1. If length is undefined, then
      1. If bufferByteLength modulo elementSize ≠ 0, throw a RangeError exception.
      2. Let newByteLength be bufferByteLength - offset.
      3. If newByteLength < 0, throw a RangeError exception.
    2. Else,
      1. Let newByteLength be newLength × elementSize.
      2. If offset + newByteLength > bufferByteLength, throw a RangeError exception.
    3. Set O.[[ViewedArrayBuffer]] to buffer.
    4. Set O.[[ByteLength]] to newByteLength.
    5. Set O.[[ByteOffset]] to offset.
    6. Set O.[[ArrayLength]] to newByteLength / elementSize.
  13. Set O.[[ViewedArrayBuffer]] to buffer.
  14. Set O.[[ByteOffset]] to offset.
@@ -357,26 +365,26 @@

5.1 Modifications to Abstract Operations For Dat

5.1.1 GetViewByteLength ( view, getBufferByteLength )

The abstract operation GetViewByteLength takes arguments view (a DataView) and getBufferByteLength (an Abstract Closure). It performs the following steps when called:

-
  1. Assert: Type(view) is Object and view has a [[DataView]] internal slot.
  2. If view.[[ByteLength]] is not auto, then return view.[[ByteLength]].
  3. Let buffer be view.[[ViewedArrayBuffer]].
  4. Let bufferByteLength be getBufferByteLength(buffer).
  5. Return bufferByteLength - view.[[ByteOffset]].
+
  1. Assert: Type(view) is Object and view has a [[DataView]] internal slot.
  2. If view.[[ByteLength]] is not auto, then return view.[[ByteLength]].
  3. Let buffer be view.[[ViewedArrayBuffer]].
  4. Let bufferByteLength be getBufferByteLength(buffer).
  5. Return bufferByteLength - view.[[ByteOffset]].

5.1.2 IsViewOutOfBounds ( view, getBufferByteLength )

The abstract operation IsViewOutOfBounds takes arguments view (a DataView) and getBufferByteLength (an Abstract Closure). It performs the following steps when called:

-
  1. Assert: Type(view) is Object and view has a [[DataView]] internal slot.
  2. Let buffer be view.[[ViewedArrayBuffer]].
  3. If IsDetachedBuffer(buffer) is true, return true.
  4. Let byteLength be GetViewByteLength(view, getBufferByteLength).
  5. If byteLength < 0, then return true.
  6. Return false.
+
  1. Assert: Type(view) is Object and view has a [[DataView]] internal slot.
  2. Let buffer be view.[[ViewedArrayBuffer]].
  3. If IsDetachedBuffer(buffer) is true, return true.
  4. Let byteLength be GetViewByteLength(view, getBufferByteLength).
  5. If byteLength < 0, then return true.
  6. Return false.

5.1.3 GetViewValue ( view, requestIndex, isLittleEndian, type )

The abstract operation GetViewValue takes arguments view, requestIndex, isLittleEndian, and type. It is used by functions on DataView instances to retrieve values from the view's buffer. It performs the following steps when called:

-
  1. Perform ? RequireInternalSlot(view, [[DataView]]).
  2. Assert: view has a [[ViewedArrayBuffer]] internal slot.
  3. Let getIndex be ? ToIndex(requestIndex).
  4. Set isLittleEndian to ! ToBoolean(isLittleEndian).
  5. Let buffer be view.[[ViewedArrayBuffer]].
  6. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
  7. Let getBufferByteLength be MakeIdempotentArrayBufferByteLengthGetter(Unordered).
  8. NOTE: Bounds checking is not a synchronizing operation when view's backing buffer is a growable SharedArrayBuffer.
  9. If IsViewOutOfBounds(view, getBufferByteLength) is true, throw a TypeError exception.
  10. Let viewOffset be view.[[ByteOffset]].
  11. Let viewSize be view.[[ByteLength]]GetViewByteLength(view, getBufferByteLength).
  12. Let elementSize be the Element Size value specified in Table 63 for Element Type type.
  13. If getIndex + elementSize > viewSize, throw a RangeError exception.
  14. Let bufferIndex be getIndex + viewOffset.
  15. Return GetValueFromBuffer(buffer, bufferIndex, type, false, Unordered, isLittleEndian).
+
  1. Perform ? RequireInternalSlot(view, [[DataView]]).
  2. Assert: view has a [[ViewedArrayBuffer]] internal slot.
  3. Let getIndex be ? ToIndex(requestIndex).
  4. Set isLittleEndian to ! ToBoolean(isLittleEndian).
  5. Let buffer be view.[[ViewedArrayBuffer]].
  6. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
  7. Let getBufferByteLength be MakeIdempotentArrayBufferByteLengthGetter(Unordered).
  8. NOTE: Bounds checking is not a synchronizing operation when view's backing buffer is a growable SharedArrayBuffer.
  9. If IsViewOutOfBounds(view, getBufferByteLength) is true, throw a TypeError exception.
  10. Let viewOffset be view.[[ByteOffset]].
  11. Let viewSize be view.[[ByteLength]]GetViewByteLength(view, getBufferByteLength).
  12. Let elementSize be the Element Size value specified in Table 63 for Element Type type.
  13. If getIndex + elementSize > viewSize, throw a RangeError exception.
  14. Let bufferIndex be getIndex + viewOffset.
  15. Return GetValueFromBuffer(buffer, bufferIndex, type, false, Unordered, isLittleEndian).

5.1.4 SetViewValue ( view, requestIndex, isLittleEndian, type, value )

The abstract operation SetViewValue takes arguments view, requestIndex, isLittleEndian, type, and value. It is used by functions on DataView instances to store values into the view's buffer. It performs the following steps when called:

-
  1. Perform ? RequireInternalSlot(view, [[DataView]]).
  2. Assert: view has a [[ViewedArrayBuffer]] internal slot.
  3. Let getIndex be ? ToIndex(requestIndex).
  4. If ! IsBigIntElementType(type) is true, let numberValue be ? ToBigInt(value).
  5. Otherwise, let numberValue be ? ToNumber(value).
  6. Set isLittleEndian to ! ToBoolean(isLittleEndian).
  7. Let buffer be view.[[ViewedArrayBuffer]].
  8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
  9. Let getBufferByteLength be MakeIdempotentArrayBufferByteLengthGetter(Unordered).
  10. NOTE: Bounds checking is not a synchronizing operation when view's backing buffer is a growable SharedArrayBuffer.
  11. If IsViewOutOfBounds(view, getBufferByteLength) is true, throw a TypeError exception.
  12. Let viewOffset be view.[[ByteOffset]].
  13. Let viewSize be view.[[ByteLength]]GetViewByteLength(view, getBufferByteLength).
  14. Let elementSize be the Element Size value specified in Table 63 for Element Type type.
  15. If getIndex + elementSize > viewSize, throw a RangeError exception.
  16. Let bufferIndex be getIndex + viewOffset.
  17. Return SetValueInBuffer(buffer, bufferIndex, type, numberValue, false, Unordered, isLittleEndian).
+
  1. Perform ? RequireInternalSlot(view, [[DataView]]).
  2. Assert: view has a [[ViewedArrayBuffer]] internal slot.
  3. Let getIndex be ? ToIndex(requestIndex).
  4. If ! IsBigIntElementType(type) is true, let numberValue be ? ToBigInt(value).
  5. Otherwise, let numberValue be ? ToNumber(value).
  6. Set isLittleEndian to ! ToBoolean(isLittleEndian).
  7. Let buffer be view.[[ViewedArrayBuffer]].
  8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
  9. Let getBufferByteLength be MakeIdempotentArrayBufferByteLengthGetter(Unordered).
  10. NOTE: Bounds checking is not a synchronizing operation when view's backing buffer is a growable SharedArrayBuffer.
  11. If IsViewOutOfBounds(view, getBufferByteLength) is true, throw a TypeError exception.
  12. Let viewOffset be view.[[ByteOffset]].
  13. Let viewSize be view.[[ByteLength]]GetViewByteLength(view, getBufferByteLength).
  14. Let elementSize be the Element Size value specified in Table 63 for Element Type type.
  15. If getIndex + elementSize > viewSize, throw a RangeError exception.
  16. Let bufferIndex be getIndex + viewOffset.
  17. Return SetValueInBuffer(buffer, bufferIndex, type, numberValue, false, Unordered, isLittleEndian).
@@ -386,7 +394,7 @@

5.2 Modifications to the DataView Constructor

5.2.1 DataView ( buffer [ , byteOffset [ , byteLength ] ] )

When the DataView function is called with at least one argument buffer, the following steps are taken:

-
  1. If NewTarget is undefined, throw a TypeError exception.
  2. Perform ? RequireInternalSlot(buffer, [[ArrayBufferData]]).
  3. Let offset be ? ToIndex(byteOffset).
  4. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
  5. Let bufferByteLength be buffer.[[ArrayBufferByteLength]]ArrayBufferByteLength(buffer, SeqCst)..
  6. If offset > bufferByteLength, throw a RangeError exception.
  7. Let bufferIsResizable be IsResizableArrayBuffer(buffer).
  8. Let byteLengthChecked be empty.
  9. If bufferIsResizable is true and byteLength is undefined, then
    1. Let viewByteLength be auto.
  10. IElse if byteLength is undefined, then
    1. Let viewByteLength be bufferByteLength - offset.
  11. Else,
    1. Set byteLengthChecked to ? ToIndex(byteLength).
    2. Let viewByteLength be ToIndex(byteLength)byteLengthChecked.
    3. If offset + viewByteLength > bufferByteLength, throw a RangeError exception.
  12. Let O be ? OrdinaryCreateFromConstructor(NewTarget, "%DataView.prototype%", « [[DataView]], [[ViewedArrayBuffer]], [[ByteLength]], [[ByteOffset]] »).
  13. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
  14. Let getBufferByteLength be MakeIdempotentArrayBufferByteLengthGetter(SeqCst).
  15. Set bufferByteLength be getBufferByteLength(buffer).
  16. If offset > bufferByteLength, throw a RangeError exception.
  17. If byteLengthChecked is not empty, then
    1. If offset + viewByteLength > bufferByteLength, throw a RangeError exception.
  18. Set O.[[ViewedArrayBuffer]] to buffer.
  19. Set O.[[ByteLength]] to viewByteLength.
  20. Set O.[[ByteOffset]] to offset.
  21. Return O.
+
  1. If NewTarget is undefined, throw a TypeError exception.
  2. Perform ? RequireInternalSlot(buffer, [[ArrayBufferData]]).
  3. Let offset be ? ToIndex(byteOffset).
  4. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
  5. Let bufferByteLength be buffer.[[ArrayBufferByteLength]]ArrayBufferByteLength(buffer, SeqCst)..
  6. If offset > bufferByteLength, throw a RangeError exception.
  7. Let bufferIsResizable be IsResizableArrayBuffer(buffer).
  8. Let byteLengthChecked be empty.
  9. If bufferIsResizable is true and byteLength is undefined, then
    1. Let viewByteLength be auto.
  10. IElse if byteLength is undefined, then
    1. Let viewByteLength be bufferByteLength - offset.
  11. Else,
    1. Set byteLengthChecked to ? ToIndex(byteLength).
    2. Let viewByteLength be ToIndex(byteLength)byteLengthChecked.
    3. If offset + viewByteLength > bufferByteLength, throw a RangeError exception.
  12. Let O be ? OrdinaryCreateFromConstructor(NewTarget, "%DataView.prototype%", « [[DataView]], [[ViewedArrayBuffer]], [[ByteLength]], [[ByteOffset]] »).
  13. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
  14. Let getBufferByteLength be MakeIdempotentArrayBufferByteLengthGetter(SeqCst).
  15. Set bufferByteLength be getBufferByteLength(buffer).
  16. If offset > bufferByteLength, throw a RangeError exception.
  17. If byteLengthChecked is not empty, then
    1. If offset + viewByteLength > bufferByteLength, throw a RangeError exception.
  18. Set O.[[ViewedArrayBuffer]] to buffer.
  19. Set O.[[ByteLength]] to viewByteLength.
  20. Set O.[[ByteOffset]] to offset.
  21. Return O.
@@ -396,13 +404,13 @@

5.3 Modifications to Properties of the DataView

5.3.1 get DataView.prototype.byteLength

DataView.prototype.byteLength is an accessor property whose set accessor function is undefined. Its get accessor function performs the following steps:

-
  1. Let O be the this value.
  2. Perform ? RequireInternalSlot(O, [[DataView]]).
  3. Assert: O has a [[ViewedArrayBuffer]] internal slot.
  4. Let buffer be O.[[ViewedArrayBuffer]].
  5. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
  6. Let getBufferByteLength be MakeIdempotentArrayBufferByteLengthGetter(SeqCst).
  7. If IsViewOutOfBounds(O, getBufferByteLength) is true, throw a TypeError exception.
  8. Let size be O.[[ByteLength]]GetViewByteLength(O, getBufferByteLength).
  9. Return 𝔽(size).
+
  1. Let O be the this value.
  2. Perform ? RequireInternalSlot(O, [[DataView]]).
  3. Assert: O has a [[ViewedArrayBuffer]] internal slot.
  4. Let buffer be O.[[ViewedArrayBuffer]].
  5. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
  6. Let getBufferByteLength be MakeIdempotentArrayBufferByteLengthGetter(SeqCst).
  7. If IsViewOutOfBounds(O, getBufferByteLength) is true, throw a TypeError exception.
  8. Let size be O.[[ByteLength]]GetViewByteLength(O, getBufferByteLength).
  9. Return 𝔽(size).

5.3.2 get DataView.prototype.byteOffset

DataView.prototype.byteOffset is an accessor property whose set accessor function is undefined. Its get accessor function performs the following steps:

-
  1. Let O be the this value.
  2. Perform ? RequireInternalSlot(O, [[DataView]]).
  3. Assert: O has a [[ViewedArrayBuffer]] internal slot.
  4. Let buffer be O.[[ViewedArrayBuffer]].
  5. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
  6. Let getBufferByteLength be MakeIdempotentArrayBufferByteLengthGetter(SeqCst).
  7. If IsViewOutOfBounds(O, getBufferByteLength) is true, throw a TypeError exception.
  8. Let offset be O.[[ByteOffset]].
  9. Return 𝔽(offset).
+
  1. Let O be the this value.
  2. Perform ? RequireInternalSlot(O, [[DataView]]).
  3. Assert: O has a [[ViewedArrayBuffer]] internal slot.
  4. Let buffer be O.[[ViewedArrayBuffer]].
  5. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
  6. Let getBufferByteLength be MakeIdempotentArrayBufferByteLengthGetter(SeqCst).
  7. If IsViewOutOfBounds(O, getBufferByteLength) is true, throw a TypeError exception.
  8. Let offset be O.[[ByteOffset]].
  9. Return 𝔽(offset).
@@ -413,7 +421,7 @@

6 Modifications to Abstract Operations for Atomi

6.1 ValidateAtomicAccess ( typedArray, requestIndex )

The abstract operation ValidateAtomicAccess takes arguments typedArray (a TypedArray) and requestIndex. It performs the following steps when called:

-
  1. Assert: typedArray is an Object that has a [[ViewedArrayBuffer]] internal slot.
  2. Let getBufferByteLength be MakeIdempotentArrayBufferByteLengthGetter(Unordered).
  3. Let length be typedArray.[[ArrayLength]]IntegerIndexedObjectLength(typedArray, getBufferByteLength).
  4. If length is out-of-bounds, set length to 0.
  5. Let accessIndex be ? ToIndex(requestIndex).
  6. Assert: accessIndex ≥ 0.
  7. If accessIndexlength, throw a RangeError exception.
  8. Let arrayTypeName be typedArray.[[TypedArrayName]].
  9. Let elementSize be the Element Size value specified in Table 63 for arrayTypeName.
  10. Let offset be typedArray.[[ByteOffset]].
  11. Return (accessIndex × elementSize) + offset.
+
  1. Assert: typedArray is an Object that has a [[ViewedArrayBuffer]] internal slot.
  2. Let getBufferByteLength be MakeIdempotentArrayBufferByteLengthGetter(Unordered).
  3. Let length be typedArray.[[ArrayLength]]IntegerIndexedObjectLength(typedArray, getBufferByteLength).
  4. If length is out-of-bounds, set length to 0.
  5. Let accessIndex be ? ToIndex(requestIndex).
  6. Assert: accessIndex ≥ 0.
  7. If accessIndexlength, throw a RangeError exception.
  8. Let arrayTypeName be typedArray.[[TypedArrayName]].
  9. Let elementSize be the Element Size value specified in Table 63 for arrayTypeName.
  10. Let offset be typedArray.[[ByteOffset]].
  11. Return (accessIndex × elementSize) + offset.
@@ -445,9 +453,9 @@

7 Resizable ArrayBuffer and growable SharedArray

8 Mechanical Changes Omitted for Brevity

\ No newline at end of file diff --git a/spec.html b/spec.html index d2a975b..749cff8 100644 --- a/spec.html +++ b/spec.html @@ -890,6 +890,43 @@

%TypedArray%.prototype.sort ( _comparefn_ )

+ +

%TypedArray%.prototype.subarray ( _begin_, _end_ )

+

Returns a new _TypedArray_ whose element type is the same as this _TypedArray_ and whose ArrayBuffer is the same as the ArrayBuffer of this _TypedArray_, referencing the elements at _begin_, inclusive, up to _end_, exclusive. If either _begin_ or _end_ is negative, it refers to an index from the end of the array, as opposed to from the beginning.

+

When the `subarray` method is called, the following steps are taken:

+ + 1. Let _O_ be the *this* value. + 1. Perform ? RequireInternalSlot(_O_, [[TypedArrayName]]). + 1. Assert: _O_ has a [[ViewedArrayBuffer]] internal slot. + 1. Let _buffer_ be _O_.[[ViewedArrayBuffer]]. + 1. Let _getSrcBufferByteLength_ be MakeIdempotentArrayBufferByteLengthGetter(~SeqCst~). + 1. Let _srcLength_ be _O_.[[ArrayLength]]IntegerIndexedObjectLength(_O_, _getSrcBufferByteLength_). + 1. If _srcLength_ is ~out-of-bounds~, set _srcLength_ to 0. + 1. Let _relativeBegin_ be ? ToIntegerOrInfinity(_begin_). + 1. If _relativeBegin_ is -∞, let _beginIndex_ be 0. + 1. Else if _relativeBegin_ < 0, let _beginIndex_ be max(_srcLength_ + _relativeBegin_, 0). + 1. Else, let _beginIndex_ be min(_relativeBegin_, _srcLength_). + 1. If _O_.[[ArrayLength]] is ~auto~ and _end_ is *undefined*, then + 1. Let _newLength_ be *undefined*. + 1. Else, + 1. If _end_ is *undefined*, let _relativeEnd_ be _srcLength_; else let _relativeEnd_ be ? ToIntegerOrInfinity(_end_). + 1. If _relativeEnd_ is -∞, let _endIndex_ be 0. + 1. Else if _relativeEnd_ < 0, let _endIndex_ be max(_srcLength_ + _relativeEnd_, 0). + 1. Else, let _endIndex_ be min(_relativeEnd_, _srcLength_). + 1. Let _newLength_ be max(_endIndex_ - _beginIndex_, 0). + 1. Let _constructorName_ be the String value of _O_.[[TypedArrayName]]. + 1. Let _elementSize_ be the Element Size value specified in for _constructorName_. + 1. Let _srcByteOffset_ be _O_.[[ByteOffset]]. + 1. Let _beginByteOffset_ be _srcByteOffset_ + _beginIndex_ × _elementSize_. + 1. If _newLength_ is *undefined*, then + 1. Let _argumentsList_ be « _buffer_, 𝔽(_beginByteOffset_) ». + 1. Else, + 1. Let _argumentsList_ be « _buffer_, 𝔽(_beginByteOffset_), 𝔽(_newLength_) ». + 1. Return ? TypedArraySpeciesCreate(_O_, _argumentsList_). + +

This function is not generic. The *this* value must be an object with a [[TypedArrayName]] internal slot.

+
+

SetTypedArrayFromTypedArray (