lib,src: use built-in array buffer detach#50130
Conversation
63d7adb to
8eaae52
Compare
|
Note that the v8 flag |
| const viewBufferByteLength = ArrayBufferPrototypeGetByteLength(viewBuffer); | ||
|
|
||
| if (isArrayBufferDetached(viewBuffer)) { | ||
| if (viewBuffer.detached) { |
There was a problem hiding this comment.
this is a mutable property, so it must be a primordial
| if (viewBuffer.detached) { | |
| if (ArrayBufferPrototypeDetached(viewBuffer)) { |
| validateBuffer(view, 'view'); | ||
|
|
||
| if (isViewedArrayBufferDetached(view)) { | ||
| if (ArrayBufferViewGetBuffer(view).detached) { |
There was a problem hiding this comment.
| if (ArrayBufferViewGetBuffer(view).detached) { | |
| if (ArrayBufferPrototypeDetached(ArrayBufferViewGetBuffer(view)) { |
| throw new ERR_INVALID_STATE.RangeError('The buffer size is invalid'); | ||
| assert(!(bytesFilled % elementSize)); | ||
| const transferredBuffer = transferArrayBuffer(buffer); | ||
| const transferredBuffer = buffer.transfer(); |
There was a problem hiding this comment.
| const transferredBuffer = buffer.transfer(); | |
| const transferredBuffer = ArrayBufferPrototypeTransfer(buffer); |
| let transferredBuffer; | ||
| try { | ||
| transferredBuffer = transferArrayBuffer(buffer); | ||
| transferredBuffer = buffer.transfer(); |
There was a problem hiding this comment.
| transferredBuffer = buffer.transfer(); | |
| transferredBuffer = ArrayBufferPrototypeTransfer(buffer); |
| } | ||
|
|
||
| desc.buffer = transferArrayBuffer(desc.buffer); | ||
| desc.buffer = desc.buffer.transfer(); |
There was a problem hiding this comment.
| desc.buffer = desc.buffer.transfer(); | |
| desc.buffer = ArrayBufferPrototypeTransfer(desc.buffer); |
| return; | ||
|
|
||
| const transferredBuffer = transferArrayBuffer(buffer); | ||
| const transferredBuffer = buffer.transfer(); |
There was a problem hiding this comment.
| const transferredBuffer = buffer.transfer(); | |
| const transferredBuffer = ArrayBufferPrototypeTransfer(buffer); |
| const firstPendingPullInto = pendingPullIntos[0]; | ||
|
|
||
| if (isArrayBufferDetached(firstPendingPullInto.buffer)) { | ||
| if (firstPendingPullInto.buffer.detached) { |
There was a problem hiding this comment.
| if (firstPendingPullInto.buffer.detached) { | |
| if (ArrayBufferPrototypeDetached(firstPendingPullInto.buffer)) { |
| firstPendingPullInto.buffer = transferArrayBuffer( | ||
| firstPendingPullInto.buffer, | ||
| ); | ||
| firstPendingPullInto.buffer = firstPendingPullInto.buffer.transfer(); |
There was a problem hiding this comment.
| firstPendingPullInto.buffer = firstPendingPullInto.buffer.transfer(); | |
| firstPendingPullInto.buffer = ArrayBufferPrototypeTransfer(firstPendingPullInto.buffer); |
| throw new ERR_INVALID_ARG_VALUE.RangeError('view', view); | ||
|
|
||
| desc.buffer = transferArrayBuffer(viewBuffer); | ||
| desc.buffer = viewBuffer.transfer(); |
There was a problem hiding this comment.
| desc.buffer = viewBuffer.transfer(); | |
| desc.buffer = ArrayBufferPrototypeTransfer(viewBuffer); |
8eaae52 to
9096c77
Compare
|
@legendecas would you be interested in removing the flag that disables arraybuffer.prototype.detach, from v8? |
|
Sure, the feature has been released since M111 and I believe it is a good time to remove the flag. |
|
v8/v8@9ebca66 the flag was removed since V8 12.6. |
I couldn't make the |
|
My |
This change requires v8 11.8, therefore can't be backported to v18 and v20