Skip to content

Commit

Permalink
Cherry-pick bugfix for ReadableByteStream
Browse files Browse the repository at this point in the history
  • Loading branch information
Jarred-Sumner committed Jun 23, 2022
1 parent 8c70a89 commit 259c1c8
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 1 deletion.
29 changes: 29 additions & 0 deletions JSTests/stress/typed-array-builtin-names.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
var createBuiltin = $vm.createBuiltin;

function shouldBe(actual, expected) {
if (actual !== expected)
throw new Error('bad value: ' + actual);
}

let list = [
"Int8Array",
"Uint8Array",
"Uint8ClampedArray",
"Int16Array",
"Uint16Array",
"Int32Array",
"Uint32Array",
"Float32Array",
"Float64Array",
"BigInt64Array",
"BigUint64Array",
];

for (let constructorName of list) {
let builtin = createBuiltin(`(function (a) {
return @${constructorName};
})`);
let constructor = builtin();
shouldBe(constructor.name, constructorName);
shouldBe(constructor, globalThis[constructorName]);
}
11 changes: 11 additions & 0 deletions Source/JavaScriptCore/bytecode/LinkTimeConstant.h
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,17 @@ class JSGlobalObject;
v(jsonParse, nullptr) \
v(jsonStringify, nullptr) \
v(String, nullptr) \
v(Int8Array, nullptr) \
v(Uint8Array, nullptr) \
v(Uint8ClampedArray, nullptr) \
v(Int16Array, nullptr) \
v(Uint16Array, nullptr) \
v(Int32Array, nullptr) \
v(Uint32Array, nullptr) \
v(Float32Array, nullptr) \
v(Float64Array, nullptr) \
v(BigInt64Array, nullptr) \
v(BigUint64Array, nullptr) \


#define DECLARE_LINK_TIME_CONSTANT(name, code) name,
Expand Down
4 changes: 3 additions & 1 deletion Source/JavaScriptCore/runtime/JSGlobalObject.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -879,7 +879,9 @@ void JSGlobalObject::init(VM& vm)
init.setPrototype(JS ## type ## ArrayPrototype::create(init.vm, init.global, JS ## type ## ArrayPrototype::createStructure(init.vm, init.global, init.global->m_typedArrayProto.get(init.global)))); \
init.setStructure(JS ## type ## Array::createStructure(init.vm, init.global, init.prototype)); \
init.setConstructor(JS ## type ## ArrayConstructor::create(init.vm, init.global, JS ## type ## ArrayConstructor::createStructure(init.vm, init.global, init.global->m_typedArraySuperConstructor.get(init.global)), init.prototype, #type "Array"_s)); \
init.global->putDirect(init.vm, init.vm.propertyNames->builtinNames().type ## ArrayPrivateName(), init.constructor, static_cast<unsigned>(PropertyAttribute::DontEnum)); \
}); \
m_linkTimeConstants[static_cast<unsigned>(LinkTimeConstant::type##Array)].initLater([](const Initializer<JSCell>& init) { \
init.set(jsCast<JSGlobalObject*>(init.owner)->typedArrayConstructor(TypedArrayType::Type##type)); \
});
FOR_EACH_TYPED_ARRAY_TYPE_EXCLUDING_DATA_VIEW(INIT_TYPED_ARRAY_LATER)
#undef INIT_TYPED_ARRAY_LATER
Expand Down

0 comments on commit 259c1c8

Please sign in to comment.