haikuwebkit/LayoutTests/js/class-syntax-default-constr...

9 lines
224 B
HTML
Raw Permalink Normal View History

Source/JavaScriptCore: Add support for default constructor https://bugs.webkit.org/show_bug.cgi?id=142388 Reviewed by Filip Pizlo. Added the support for default constructors. They're generated by ClassExprNode::emitBytecode via BuiltinExecutables::createDefaultConstructor. UnlinkedFunctionExecutable now has the ability to override SourceCode provided by the owner executable. We can't make store SourceCode in UnlinkedFunctionExecutable since CodeCache can use the same UnlinkedFunctionExecutable to generate code blocks for multiple functions. Parser now has the ability to treat any function expression as a constructor of the kind specified by m_defaultConstructorKind member variable. * builtins/BuiltinExecutables.cpp: (JSC::BuiltinExecutables::createDefaultConstructor): Added. (JSC::BuiltinExecutables::createExecutableInternal): Generalized from createBuiltinExecutable. Parse default constructors as normal non-builtin functions. Override SourceCode in the unlinked function executable since the Miranda function's code is definitely not in the owner executable's source code. That's the whole point. * builtins/BuiltinExecutables.h: (UnlinkedFunctionExecutable::createBuiltinExecutable): Added. Wraps createExecutableInternal. * bytecode/UnlinkedCodeBlock.cpp: (JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable): (JSC::UnlinkedFunctionExecutable::linkInsideExecutable): (JSC::UnlinkedFunctionExecutable::linkGlobalCode): * bytecode/UnlinkedCodeBlock.h: (JSC::UnlinkedFunctionExecutable::create): (JSC::UnlinkedFunctionExecutable::symbolTable): Deleted. * bytecompiler/BytecodeGenerator.cpp: (JSC::BytecodeGenerator::emitNewDefaultConstructor): Added. * bytecompiler/BytecodeGenerator.h: * bytecompiler/NodesCodegen.cpp: (JSC::ClassExprNode::emitBytecode): Generate the default constructor if needed. * parser/Parser.cpp: (JSC::Parser<LexerType>::Parser): (JSC::Parser<LexerType>::parseFunctionInfo): Override ownerClassKind and assume the function as a constructor if we're parsing a default constructor. (JSC::Parser<LexerType>::parseClass): Allow omission of the class constructor. * parser/Parser.h: (JSC::parse): LayoutTests: Implement default constructor Add support for default constructor https://bugs.webkit.org/show_bug.cgi?id=142388 Reviewed by Filip Pizlo. Added tests for default constructors. * TestExpectations: Skipped the test since ES6 class syntax isn't enabled by default. * js/class-syntax-default-constructor-expected.txt: Added. * js/class-syntax-default-constructor.html: Added. * js/script-tests/class-syntax-default-constructor.js: Added. Canonical link: https://commits.webkit.org/160782@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@181611 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-03-17 04:02:52 +00:00
<!DOCTYPE html>
<html>
<body>
<script src="../resources/js-test-pre.js"></script>
<script src="script-tests/class-syntax-default-constructor.js"></script>
<script src="../resources/js-test-post.js"></script>
</body>
</html>