aboutsummaryrefslogtreecommitdiff
path: root/src/javascript
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-05-08 01:12:27 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-05-08 01:12:27 -0700
commitc1efeefb8a481035d87ced9e01a30c9f95e0c2eb (patch)
tree6e898d9770558606db18b86d0816d5fa4f1d5d23 /src/javascript
parent3b6c3d8196aa9f32b7180723a95512337f49ed8c (diff)
downloadbun-c1efeefb8a481035d87ced9e01a30c9f95e0c2eb.tar.gz
bun-c1efeefb8a481035d87ced9e01a30c9f95e0c2eb.tar.zst
bun-c1efeefb8a481035d87ced9e01a30c9f95e0c2eb.zip
Ugprade webkit
Diffstat (limited to 'src/javascript')
-rw-r--r--src/javascript/jsc/bindings/ZigGlobalObject.cpp45
-rw-r--r--src/javascript/jsc/bindings/ZigGlobalObject.h2
2 files changed, 27 insertions, 20 deletions
diff --git a/src/javascript/jsc/bindings/ZigGlobalObject.cpp b/src/javascript/jsc/bindings/ZigGlobalObject.cpp
index fa712aee2..72ea28c59 100644
--- a/src/javascript/jsc/bindings/ZigGlobalObject.cpp
+++ b/src/javascript/jsc/bindings/ZigGlobalObject.cpp
@@ -94,6 +94,7 @@
#include "JavaScriptCore/LazyClassStructure.h"
#include "JavaScriptCore/LazyClassStructureInlines.h"
#include "JavaScriptCore/FunctionPrototype.h"
+#include "napi.h"
using JSGlobalObject = JSC::JSGlobalObject;
using Exception = JSC::Exception;
@@ -166,10 +167,9 @@ extern "C" JSC__JSGlobalObject* Zig__GlobalObject__create(JSClassRef* globalObje
extern "C" void* Zig__GlobalObject__getModuleRegistryMap(JSC__JSGlobalObject* arg0)
{
- if (JSC::JSObject* loader = JSC::jsDynamicCast<JSC::JSObject*>(arg0->vm(), arg0->moduleLoader())) {
+ if (JSC::JSObject* loader = JSC::jsDynamicCast<JSC::JSObject*>(arg0->moduleLoader())) {
JSC::JSMap* map = JSC::jsDynamicCast<JSC::JSMap*>(
- arg0->vm(),
- loader->getDirect(arg0->vm(), JSC::Identifier::fromString(arg0->vm(), "registry")));
+ loader->getDirect(arg0->vm(), JSC::Identifier::fromString(arg0->vm(), "registry"_s)));
JSC::JSMap* cloned = map->clone(arg0, arg0->vm(), arg0->mapStructure());
JSC::gcProtect(cloned);
@@ -187,11 +187,11 @@ extern "C" bool Zig__GlobalObject__resetModuleRegistryMap(JSC__JSGlobalObject* g
return false;
JSC::JSMap* map = reinterpret_cast<JSC::JSMap*>(map_ptr);
JSC::VM& vm = globalObject->vm();
- if (JSC::JSObject* obj = JSC::jsDynamicCast<JSC::JSObject*>(globalObject->vm(), globalObject->moduleLoader())) {
- auto identifier = JSC::Identifier::fromString(globalObject->vm(), "registry");
+ if (JSC::JSObject* obj = JSC::jsDynamicCast<JSC::JSObject*>(globalObject->moduleLoader())) {
+ auto identifier = JSC::Identifier::fromString(globalObject->vm(), "registry"_s);
if (JSC::JSMap* oldMap = JSC::jsDynamicCast<JSC::JSMap*>(
- globalObject->vm(), obj->getDirect(globalObject->vm(), identifier))) {
+ obj->getDirect(globalObject->vm(), identifier))) {
vm.finalizeSynchronousJSExecution();
@@ -491,7 +491,7 @@ JSC_DEFINE_CUSTOM_GETTER(property_lazyProcessGetter,
if (JSObject* prototype = jsClass->prototype(globalObject))
object->setPrototypeDirect(vm, prototype);
- process->putDirect(vm, JSC::Identifier::fromString(vm, "env"),
+ process->putDirect(vm, JSC::Identifier::fromString(vm, "env"_s),
JSC::JSValue(object),
JSC::PropertyAttribute::DontDelete | 0);
@@ -518,7 +518,7 @@ static JSC_DEFINE_HOST_FUNCTION(functionQueueMicrotask,
JSC::JSValue job = callFrame->argument(0);
- if (!job.isObject() || !job.getObject()->isCallable(vm)) {
+ if (!job.isObject() || !job.getObject()->isCallable()) {
auto scope = DECLARE_THROW_SCOPE(globalObject->vm());
JSC::throwTypeError(globalObject, scope, "queueMicrotask expects a function"_s);
return JSC::JSValue::encode(JSC::JSValue {});
@@ -546,7 +546,7 @@ static JSC_DEFINE_HOST_FUNCTION(functionSetTimeout,
JSC::JSValue job = callFrame->argument(0);
- if (!job.isObject() || !job.getObject()->isCallable(vm)) {
+ if (!job.isObject() || !job.getObject()->isCallable()) {
auto scope = DECLARE_THROW_SCOPE(globalObject->vm());
JSC::throwTypeError(globalObject, scope, "setTimeout expects a function"_s);
return JSC::JSValue::encode(JSC::JSValue {});
@@ -577,7 +577,7 @@ static JSC_DEFINE_HOST_FUNCTION(functionSetInterval,
JSC::JSValue job = callFrame->argument(0);
- if (!job.isObject() || !job.getObject()->isCallable(vm)) {
+ if (!job.isObject() || !job.getObject()->isCallable()) {
auto scope = DECLARE_THROW_SCOPE(globalObject->vm());
JSC::throwTypeError(globalObject, scope, "setInterval expects a function"_s);
return JSC::JSValue::encode(JSC::JSValue {});
@@ -719,7 +719,7 @@ static JSC_DEFINE_HOST_FUNCTION(functionImportMeta__resolve,
if (callFrame->argumentCount() > 1) {
from = JSC::JSValue::encode(callFrame->argument(1));
} else {
- JSC::JSObject* thisObject = JSC::jsDynamicCast<JSC::JSObject*>(vm, callFrame->thisValue());
+ JSC::JSObject* thisObject = JSC::jsDynamicCast<JSC::JSObject*>(callFrame->thisValue());
if (UNLIKELY(!thisObject)) {
auto scope = DECLARE_THROW_SCOPE(globalObject->vm());
JSC::throwTypeError(globalObject, scope, "import.meta.resolve must be bound to an import.meta object"_s);
@@ -766,7 +766,7 @@ void GlobalObject::installAPIGlobals(JSClassRef* globals, int count, JSC::VM& vm
extraStaticGlobals.reserveCapacity((size_t)count + constructor_count + 3 + 10);
int i = 0;
for (; i < constructor_count; i++) {
- auto* object = JSC::jsDynamicCast<JSC::JSCallbackConstructor*>(vm, JSC::JSValue::decode(constructors[i]).asCell()->getObject());
+ auto* object = JSC::jsDynamicCast<JSC::JSCallbackConstructor*>(JSC::JSValue::decode(constructors[i]).asCell()->getObject());
extraStaticGlobals.uncheckedAppend(
GlobalPropertyInfo { JSC::Identifier::fromString(vm, object->get(this, vm.propertyNames->name).toWTFString(this)),
@@ -809,59 +809,64 @@ void GlobalObject::installAPIGlobals(JSClassRef* globals, int count, JSC::VM& vm
extraStaticGlobals.uncheckedAppend(
GlobalPropertyInfo { queueMicrotaskIdentifier,
JSC::JSFunction::create(vm, JSC::jsCast<JSC::JSGlobalObject*>(globalObject()), 0,
- "queueMicrotask", functionQueueMicrotask),
+ "queueMicrotask"_s, functionQueueMicrotask),
JSC::PropertyAttribute::DontDelete | 0 });
JSC::Identifier setTimeoutIdentifier = JSC::Identifier::fromString(vm, "setTimeout"_s);
extraStaticGlobals.uncheckedAppend(
GlobalPropertyInfo { setTimeoutIdentifier,
JSC::JSFunction::create(vm, JSC::jsCast<JSC::JSGlobalObject*>(globalObject()), 0,
- "setTimeout", functionSetTimeout),
+ "setTimeout"_s, functionSetTimeout),
JSC::PropertyAttribute::DontDelete | 0 });
JSC::Identifier clearTimeoutIdentifier = JSC::Identifier::fromString(vm, "clearTimeout"_s);
extraStaticGlobals.uncheckedAppend(
GlobalPropertyInfo { clearTimeoutIdentifier,
JSC::JSFunction::create(vm, JSC::jsCast<JSC::JSGlobalObject*>(globalObject()), 0,
- "clearTimeout", functionClearTimeout),
+ "clearTimeout"_s, functionClearTimeout),
JSC::PropertyAttribute::DontDelete | 0 });
JSC::Identifier setIntervalIdentifier = JSC::Identifier::fromString(vm, "setInterval"_s);
extraStaticGlobals.uncheckedAppend(
GlobalPropertyInfo { setIntervalIdentifier,
JSC::JSFunction::create(vm, JSC::jsCast<JSC::JSGlobalObject*>(globalObject()), 0,
- "setInterval", functionSetInterval),
+ "setInterval"_s, functionSetInterval),
JSC::PropertyAttribute::DontDelete | 0 });
JSC::Identifier clearIntervalIdentifier = JSC::Identifier::fromString(vm, "clearInterval"_s);
extraStaticGlobals.uncheckedAppend(
GlobalPropertyInfo { clearIntervalIdentifier,
JSC::JSFunction::create(vm, JSC::jsCast<JSC::JSGlobalObject*>(globalObject()), 0,
- "clearInterval", functionClearInterval),
+ "clearInterval"_s, functionClearInterval),
JSC::PropertyAttribute::DontDelete | 0 });
JSC::Identifier atobIdentifier = JSC::Identifier::fromString(vm, "atob"_s);
extraStaticGlobals.uncheckedAppend(
GlobalPropertyInfo { atobIdentifier,
JSC::JSFunction::create(vm, JSC::jsCast<JSC::JSGlobalObject*>(globalObject()), 0,
- "atob", functionATOB),
+ "atob"_s, functionATOB),
JSC::PropertyAttribute::DontDelete | 0 });
JSC::Identifier btoaIdentifier = JSC::Identifier::fromString(vm, "btoa"_s);
extraStaticGlobals.uncheckedAppend(
GlobalPropertyInfo { btoaIdentifier,
JSC::JSFunction::create(vm, JSC::jsCast<JSC::JSGlobalObject*>(globalObject()), 0,
- "btoa", functionBTOA),
+ "btoa"_s, functionBTOA),
JSC::PropertyAttribute::DontDelete | 0 });
JSC::Identifier reportErrorIdentifier = JSC::Identifier::fromString(vm, "reportError"_s);
extraStaticGlobals.uncheckedAppend(
GlobalPropertyInfo { reportErrorIdentifier,
JSC::JSFunction::create(vm, JSC::jsCast<JSC::JSGlobalObject*>(globalObject()), 0,
- "reportError", functionReportError),
+ "reportError"_s, functionReportError),
JSC::PropertyAttribute::DontDelete | 0 });
this->addStaticGlobals(extraStaticGlobals.data(), extraStaticGlobals.size());
+ m_NapiClassStructure.initLater(
+ [](LazyClassStructure::Initializer& init) {
+ init.setStructure(Zig::NapiClass::createStructure(init.vm, init.global, init.global->m_functionPrototype.get()));
+ });
+
m_JSFFIFunctionStructure.initLater(
[](LazyClassStructure::Initializer& init) {
init.setStructure(Zig::JSFFIFunction::createStructure(init.vm, init.global, init.global->m_functionPrototype.get()));
diff --git a/src/javascript/jsc/bindings/ZigGlobalObject.h b/src/javascript/jsc/bindings/ZigGlobalObject.h
index b3fc73e1a..70740a2c4 100644
--- a/src/javascript/jsc/bindings/ZigGlobalObject.h
+++ b/src/javascript/jsc/bindings/ZigGlobalObject.h
@@ -129,6 +129,7 @@ public:
void installAPIGlobals(JSClassRef* globals, int count, JSC::VM& vm);
WebCore::JSBuiltinInternalFunctions& builtinInternalFunctions() { return m_builtinInternalFunctions; }
JSC::Structure* FFIFunctionStructure() { return m_JSFFIFunctionStructure.getInitializedOnMainThread(this); }
+ JSC::Structure* NapiClassStructure() { return m_NapiClassStructure.getInitializedOnMainThread(this); }
private:
void addBuiltinGlobals(JSC::VM&);
@@ -142,6 +143,7 @@ private:
WebCore::ScriptExecutionContext* m_scriptExecutionContext;
Ref<WebCore::DOMWrapperWorld> m_world;
LazyClassStructure m_JSFFIFunctionStructure;
+ LazyClassStructure m_NapiClassStructure;
};
class JSMicrotaskCallback : public RefCounted<JSMicrotaskCallback> {