Changeset 286251 in webkit for trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
- Timestamp:
- Nov 29, 2021, 12:04:08 PM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
r284435 r286251 5040 5040 switch (m_type) { 5041 5041 case DefineFieldNode::Type::Name: { 5042 // FIXME: Improve performance of public class fields 5043 // https://bugs.webkit.org/show_bug.cgi?id=198330 5044 RefPtr<RegisterID> propertyName = generator.emitLoad(nullptr, *m_ident); 5045 generator.emitCallDefineProperty(generator.thisRegister(), propertyName.get(), value.get(), nullptr, nullptr, BytecodeGenerator::PropertyConfigurable | BytecodeGenerator::PropertyWritable | BytecodeGenerator::PropertyEnumerable, m_position); 5042 StrictModeScope strictModeScope(generator); 5043 if (auto index = parseIndex(*m_ident)) { 5044 RefPtr<RegisterID> propertyName = generator.emitLoad(nullptr, jsNumber(index.value())); 5045 generator.emitDirectPutByVal(generator.thisRegister(), propertyName.get(), value.get()); 5046 } else 5047 generator.emitDirectPutById(generator.thisRegister(), *m_ident, value.get()); 5046 5048 break; 5047 5049 } … … 5058 5060 } 5059 5061 case DefineFieldNode::Type::ComputedName: { 5060 // FIXME: Improve performance of public class fields5061 // https://bugs.webkit.org/show_bug.cgi?id=1983305062 5063 5062 // For ComputedNames, the expression has already been evaluated earlier during evaluation of a ClassExprNode. 5064 5063 // Here, `m_ident` refers to private symbol ID in a class lexical scope, containing the value already converted to an Expression. … … 5073 5072 generator.emitSetFunctionName(value.get(), privateName.get()); 5074 5073 generator.emitProfileType(privateName.get(), var, m_position, m_position + m_ident->length()); 5075 generator.emitCallDefineProperty(generator.thisRegister(), privateName.get(), value.get(), nullptr, nullptr, BytecodeGenerator::PropertyConfigurable | BytecodeGenerator::PropertyWritable | BytecodeGenerator::PropertyEnumerable, m_position); 5074 { 5075 StrictModeScope strictModeScope(generator); 5076 generator.emitDirectPutByVal(generator.thisRegister(), privateName.get(), value.get()); 5077 } 5076 5078 break; 5077 5079 }
Note:
See TracChangeset
for help on using the changeset viewer.