perf(ext,runtime): remove using SafeArrayIterator from for-of (#17255)

This commit is contained in:
Kenta Moriuchi 2023-01-06 21:45:23 +09:00 committed by GitHub
parent 39cbaa6d34
commit ff89ff4abb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
20 changed files with 173 additions and 126 deletions

View file

@ -60,7 +60,6 @@
ReflectHas,
ReflectOwnKeys,
RegExpPrototypeTest,
SafeArrayIterator,
Set,
// TODO(lucacasonato): add SharedArrayBuffer to primordials
// SharedArrayBuffer,
@ -633,8 +632,10 @@
function createDictionaryConverter(name, ...dictionaries) {
let hasRequiredKey = false;
const allMembers = [];
for (const members of new SafeArrayIterator(dictionaries)) {
for (const member of new SafeArrayIterator(members)) {
for (let i = 0; i < dictionaries.length; ++i) {
const members = dictionaries[i];
for (let j = 0; j < members.length; ++j) {
const member = members[j];
if (member.required) {
hasRequiredKey = true;
}
@ -649,7 +650,8 @@
});
const defaultValues = {};
for (const member of new SafeArrayIterator(allMembers)) {
for (let i = 0; i < allMembers.length; ++i) {
const member = allMembers[i];
if (ReflectHas(member, "defaultValue")) {
const idlMemberValue = member.defaultValue;
const imvType = typeof idlMemberValue;
@ -695,7 +697,8 @@
return idlDict;
}
for (const member of new SafeArrayIterator(allMembers)) {
for (let i = 0; i < allMembers.length; ++i) {
const member = allMembers[i];
const key = member.key;
let esMemberValue;
@ -821,7 +824,8 @@
}
// Slow path if Proxy (e.g: in WPT tests)
const keys = ReflectOwnKeys(V);
for (const key of new SafeArrayIterator(keys)) {
for (let i = 0; i < keys.length; ++i) {
const key = keys[i];
const desc = ObjectGetOwnPropertyDescriptor(V, key);
if (desc !== undefined && desc.enumerable === true) {
const typedKey = keyConverter(key, opts);
@ -891,7 +895,9 @@
}
function define(target, source) {
for (const key of new SafeArrayIterator(ReflectOwnKeys(source))) {
const keys = ReflectOwnKeys(source);
for (let i = 0; i < keys.length; ++i) {
const key = keys[i];
const descriptor = ReflectGetOwnPropertyDescriptor(source, key);
if (descriptor && !ReflectDefineProperty(target, key, descriptor)) {
throw new TypeError(`Cannot redefine property: ${String(key)}`);