mirror of
https://github.com/oven-sh/bun
synced 2026-02-12 20:09:04 +00:00
* Don't allocate new `"require"` and `"resolve"` strings in every CommonJS module * Use builtinNames more --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
39 lines
1.4 KiB
C++
39 lines
1.4 KiB
C++
#include "root.h"
|
|
#include "BunBuiltinNames.h"
|
|
#include "BunCommonStrings.h"
|
|
#include <JavaScriptCore/JSString.h>
|
|
#include <JavaScriptCore/JSGlobalObject.h>
|
|
#include <JavaScriptCore/LazyProperty.h>
|
|
#include <JavaScriptCore/LazyPropertyInlines.h>
|
|
#include "ZigGlobalObject.h"
|
|
#include <JavaScriptCore/SlotVisitorInlines.h>
|
|
#include <JavaScriptCore/VMTrapsInlines.h>
|
|
|
|
namespace Bun {
|
|
using namespace JSC;
|
|
|
|
#define BUN_COMMON_STRINGS_LAZY_PROPERTY_DEFINITION(jsName) \
|
|
this->m_commonString_##jsName.initLater( \
|
|
[](const JSC::LazyProperty<JSGlobalObject, JSString>::Initializer& init) { \
|
|
auto& names = WebCore::builtinNames(init.vm); \
|
|
auto name = names.jsName##PublicName(); \
|
|
init.set(jsOwnedString(init.vm, name.string())); \
|
|
});
|
|
|
|
#define BUN_COMMON_STRINGS_LAZY_PROPERTY_VISITOR(name) this->m_commonString_##name.visit(visitor);
|
|
|
|
void CommonStrings::initialize()
|
|
{
|
|
BUN_COMMON_STRINGS_EACH_NAME(BUN_COMMON_STRINGS_LAZY_PROPERTY_DEFINITION)
|
|
}
|
|
|
|
template<typename Visitor>
|
|
void CommonStrings::visit(Visitor& visitor)
|
|
{
|
|
BUN_COMMON_STRINGS_EACH_NAME(BUN_COMMON_STRINGS_LAZY_PROPERTY_VISITOR)
|
|
}
|
|
|
|
template void CommonStrings::visit(JSC::AbstractSlotVisitor&);
|
|
template void CommonStrings::visit(JSC::SlotVisitor&);
|
|
|
|
} // namespace Bun
|