Browse Source

Fix using runtime.NewArrayBuffer

After the templating changes calling `NewArrayBuffer` will make an
object but will set it's prototype to nil.

This change uses the new function call that will create the prototype if
not created yet.

It also changes in two other places where it seemed like it was missed.
Mihail Stoykov 2 years ago
parent
commit
07c7e94b0e
2 changed files with 3 additions and 3 deletions
  1. 2 2
      builtin_typedarrays.go
  2. 1 1
      typedarrays.go

+ 2 - 2
builtin_typedarrays.go

@@ -510,7 +510,7 @@ func (r *Runtime) typedArrayProto_filter(call FunctionCall) Value {
 			}
 		}
 		c := r.speciesConstructorObj(o, ta.defaultCtor)
-		ab := r._newArrayBuffer(r.global.ArrayBufferPrototype, nil)
+		ab := r._newArrayBuffer(r.getArrayBufferPrototype(), nil)
 		ab.data = buf
 		kept := r.toConstructor(ta.defaultCtor)([]Value{ab.val}, ta.defaultCtor)
 		if c == ta.defaultCtor {
@@ -1215,7 +1215,7 @@ func (r *Runtime) typedArray_of(call FunctionCall) Value {
 }
 
 func (r *Runtime) allocateTypedArray(newTarget *Object, length int, taCtor typedArrayObjectCtor, proto *Object) *typedArrayObject {
-	buf := r._newArrayBuffer(r.global.ArrayBufferPrototype, nil)
+	buf := r._newArrayBuffer(r.getArrayBufferPrototype(), nil)
 	ta := taCtor(buf, 0, length, r.getPrototypeFromCtor(newTarget, nil, proto))
 	if length > 0 {
 		buf.data = allocByteSlice(length * ta.elemSize)

+ 1 - 1
typedarrays.go

@@ -117,7 +117,7 @@ func (a ArrayBuffer) Detached() bool {
 // using this typed array will result in unaligned access which may cause performance degradation or runtime panics
 // on some architectures or configurations.
 func (r *Runtime) NewArrayBuffer(data []byte) ArrayBuffer {
-	buf := r._newArrayBuffer(r.global.ArrayBufferPrototype, nil)
+	buf := r._newArrayBuffer(r.getArrayBufferPrototype(), nil)
 	buf.data = data
 	return ArrayBuffer{
 		buf: buf,