aboutsummaryrefslogtreecommitdiff
path: root/src/javascript/jsc
diff options
context:
space:
mode:
Diffstat (limited to 'src/javascript/jsc')
m---------src/javascript/jsc/WebKit0
-rw-r--r--src/javascript/jsc/bindings/bindings.zig400
2 files changed, 0 insertions, 400 deletions
diff --git a/src/javascript/jsc/WebKit b/src/javascript/jsc/WebKit
-Subproject e7d31961d4bf98b3e8b1df3ea0398ea1517a61d
+Subproject 1d5ca69e3eedd5b4d1197bbb90860b254a8a8ee
diff --git a/src/javascript/jsc/bindings/bindings.zig b/src/javascript/jsc/bindings/bindings.zig
index 42d549ff7..3ff10a285 100644
--- a/src/javascript/jsc/bindings/bindings.zig
+++ b/src/javascript/jsc/bindings/bindings.zig
@@ -2042,406 +2042,6 @@ pub const StringView = extern struct {
};
};
-pub const Cpp = struct {
- pub const Function = fn (
- globalObject: *JSGlobalObject,
- callframe: CallFrame,
- ) callconv(.C) JSValue;
- pub const Getter = fn (
- ctx: ?*c_void,
- globalObject: *JSGlobalObject,
- this: EncodedJSValue,
- propertyName: PropertyName,
- ) callconv(.C) JSValue;
- pub const Setter = fn (
- ctx: ?*c_void,
- globalObject: *JSGlobalObject,
- this: JSValue,
- value: JSValue,
- propertyName: PropertyName,
- ) callconv(.C) bool;
-
- pub const Tag = enum {
- Callback,
- Constructor,
- Attribute,
- Static,
- };
-
- pub const Attribute = struct {
- getter: ?StaticExport = null,
- setter: ?StaticExport = null,
- read_only: bool = false,
- enumerable: bool = false,
- };
-
- pub const Static = union {
- String: []const u8,
- Number: u16,
- };
-
- pub const Callback = StaticExport;
-
- pub const LUTType = enum {
- Function,
- Accessor,
- CellProperty,
- ClassStructure,
- PropertyCallback,
- };
-
- pub const LUTFlag = enum {
- Enum,
- DontEnum,
- ReadOnly,
- };
-
- pub const Property = struct {
- name: []const u8,
- read_only: bool = false,
- enumerable: bool = false,
- value: Value,
- pub const Value = union(Tag) {
- Callback: StaticExport,
- Constructor: StaticExport,
- Attribute: Attribute,
- Static: Static,
- };
- };
-
- pub const Subclass = enum {
- JSNonFinalObject,
- JSObject,
- };
-
- pub const InitCallback = fn (*c_void, *VM, *JSGlobalObject) void;
- pub const ClassDefinition = struct {
- name: []const u8,
- subclass: Subclass,
- statics: []Property,
- init: StaticExport,
- free: StaticExport,
- Ctx: type,
-
- pub fn printer(h: std.fs.File.Writer, cpp: std.fs.File.Writer, comptime Type: type, comptime ZigType: type, comptime Prototype_: ?type, comptime Properties: []Property, comptime use_lut: bool) !void {
- var instanceName = comptime Type.name;
- instanceName[0] = comptime std.ascii.toLower(instanceName[0]);
- const fields = comptime .{
- .TypeName = Type.name,
- .instanceName = instanceName,
- };
- try h.print(
- \\#pragma once
- \\
- \\#include "root.h"
- \\#include "headers.h"
- \\
- \\namespace Zig {{
- \\
- \\ class {[TypeName][s]} : public JSC::JSNonFinalObject {{
- \\ using Base = JSC::JSNonFinalObject;
- \\ static {s}* create(JSC::Structure* structure, JSC::JSGlobalThis* globalObject)
- \\ {{
- \\ {[TypeName][s]}* ptr = new (NotNull, JSC::allocateCell<{s}>(globalObject->vm().heap)) {[TypeName][s]}(structure, *globalObject);
- \\ ptr->finishCreation(globalObject->vm());
- \\ return ptr;
- \\ }}
- \\
- \\ static {s}* create(JSC::Structure* structure, JSC::JSGlobalThis* globalObject, void* zigBase)
- \\ {{
- \\ {[TypeName][s]}* ptr = new (NotNull, JSC::allocateCell<{s}>(globalObject->vm().heap)) {[TypeName][s]}(structure, *globalObject);
- \\ ptr->finishCreation(globalObject->vm(), zigBase);
- \\ return ptr;
- \\ }}
- ,
- fields,
- );
-
- try cpp.print(
- \\#pragma once
- \\
- \\#include "root.h"
- \\#include "headers.h"
- \\#include {[TypeName][s]}.h
- \\
- , fields);
-
- inline for (Properties) |property| {
- switch (comptime property.value) {
- .Callback => |Callback| {
- try cpp.print("static JSC_DECLARE_HOST_FUNCTION({s});\n", .{Callback.wrappedName()});
- },
- .Constructor => |Constructor| {
- try cpp.print("static JSC_DECLARE_HOST_FUNCTION({s});\n", .{Callback.wrappedName()});
- },
- .Attribute => |Attribute| {
- try cpp.print(" ");
- if (Attribute.getter) |getter| {
- try cpp.print("static JSC_DECLARE_CUSTOM_GETTER({s});\n", .{Callback.wrappedName()});
- }
-
- if (comptime Attribute.setter) |setter| {
- try cpp.print("static JSC_DECLARE_CUSTOM_SETTER({s});\n", .{Callback.wrappedName()});
- }
- try cpp.writeAll(" ");
- },
- .Static => |Static| {},
- }
- }
-
- if (comptime use_lut) {
- try cpp.print(
- \\namespace Zig {
- \\ #include {[TypeName][s]}.lut.h
- \\}
- \\
- \\ /* Source for {[TypeName][s]}.lut.h */
- \\ @begin {[instanceName][s]}Table
- ,
- fields,
- );
-
- inline for (Properties) |property| {
- try cpp.writeAll(" ");
- try cpp.writeAll(comptime property.name);
- try cpp.writeAll(" ");
- switch (comptime property.value) {
- .Callback => |Callback| {
- try cpp.writeAll(" ");
- try cpp.writeAll(comptime Callback.wrappedName());
- try cpp.writeAll(" ");
- },
- .Constructor => |Constructor| {
- try cpp.writeAll(" ");
- try cpp.writeAll(comptime Constructor.wrappedName());
- try cpp.writeAll(" ");
- },
- .Attribute => |Attribute| {
- try cpp.writeAll(" ");
- if (Attribute.getter) |getter| {
- try cpp.writeAll(comptime getter.wrappedName());
- try cpp.writeAll(" ");
- }
-
- if (comptime Attribute.setter) |setter| {
- @compileError("Unsupported setter on " ++ Type.name);
- }
- try cpp.writeAll(" ");
- },
- .Static => |Static| {},
- }
- var needs_or = false;
- if (!property.enumerable) {
- try cpp.writeAll("DontEnum");
- needs_or = true;
- }
-
- if (needs_or) {
- try cpp.writeAll("|");
- }
-
- switch (comptime property.value) {
- .Callback => |Callback| {
- const Fn: std.builtin.TypeInfo.Fn = comptime @typeInfo(Callback.Type).Fn;
- try cpp.writeAll("Function {d}", .{Fn.args.len});
- },
- .Constructor => |Constructor| {
- const Fn: std.builtin.TypeInfo.Fn = comptime @typeInfo(Callback.Type).Fn;
- try cpp.writeAll("Function {d}", .{Fn.args.len});
- },
- .Attribute => |Attribute| {
- try cpp.writeAll(" ");
- if (Attribute.getter) |_| {
- try cpp.writeAll("Accessor");
- try cpp.writeAll(" ");
- }
-
- if (comptime Attribute.setter) |_| {
- @compileError("Unsupported setter on " ++ Type.name);
- }
- try cpp.writeAll(" ");
- },
- .Static => |Static| {},
- }
- try cpp.writeAll("\n");
- }
-
- try cpp.writeAll(" @end\n");
- try cpp.print(
- \\namespace Zig {{
- \\
- \\ const ClassInfo {s}::s_info = {{ "{[TypeName][s]}", &Base::s_info, &{[instanceName][s]}Table, nullptr, CREATE_METHOD_TABLE({[TypeName][s]}) }};
- \\
- \\}}
- \\
- ,
- fields,
- );
- } else {
- try cpp.print(
- \\namespace Zig {{
- \\
- \\ const ClassInfo {[TypeName][s]}::s_info = {{ "{[TypeName][s]}", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE({[TypeName][s]}) }};
- \\
- \\}}
- \\
- , fields);
- }
-
- cpp.print(
- \\
- \\namespace Zig {{
- \\
- \\
- \\
- \\ class {[TypeName][s]} final : public JSC::JSNonFinalObject {{
- \\ using Base = JSC::JSNonFinalObject;
- \\
- \\ void {[TypeName][s]}::finishCreation(JSGlobalObject* globalObject, VM& vm) {{
- \\ Base::finishCreation(vm);
- \\ m_zigBase = {[InitFunctionSymbol]}(globalObject, vm);
- \\ reifyStaticProperties(vm, {[TypeName][s]}::info(), &{[instanceName][s]}Table, *this);
- \\ JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
- \\ }}
- \\
- \\ void {[TypeName][s]}::finishCreation(JSGlobalObject* globalObject, VM& vm, void* zigBase) {{
- \\ Base::finishCreation(vm);
- \\ m_zigBase = zigBase;
- \\ reifyStaticProperties(vm, {[TypeName][s]}::info(), &{[instanceName][s]}Table, *this);
- \\ JSC_TO_STRING_TAG_WITHOUT_TRANSITION();
- \\ }}
- \\
- \\
- ,
- fields,
- );
-
- inline for (Properties) |property| {
- switch (comptime property.value) {
- .Callback => |Callback| {
- try cpp.writeAll(
- \\JSC_DEFINE_HOST_FUNCTION({[Wrapped][s]}, (JSGlobalObject* globalObject, CallFrame* callFrame))
- \\{{
- \\ VM& vm = globalObject->vm();
- \\ auto scope = DECLARE_THROW_SCOPE(vm);
- \\ auto* thisValue = JSC::jsDynamic<{[TypeName][s]}*>(callFrame->thisValue());
- \\ if (UNLIKELY(!thisValue || !thisValue.m_zigBase)) {{
- \\ return JSC::throwVMTypeError(globalObject, scope);
- \\ }}
- \\
- \\ RELEASE_AND_RETURN(scope, {[Fn][s]}(thisValue.m__zigType, vm, this, globalObject, callFrame, scope));
- \\}}
- \\
- , .{
- .Wrapped = Callback.wrappedName(),
- .Fn = Callback.symbol_name,
- .TypeName = Type.name,
- });
- },
- .Constructor => |Constructor| {
- try cpp.writeAll(
- \\JSC_DEFINE_HOST_FUNCTION({[Wrapped][s]}, (JSGlobalObject* globalObject, CallFrame* callFrame))
- \\{{
- \\ VM& vm = globalObject->vm();
- \\ auto scope = DECLARE_THROW_SCOPE(vm);
- \\ RELEASE_AND_RETURN(scope, {[Fn][s]}(globalObject, vm, callFrame, scope));
- \\}}
- \\
- , .{
- .Wrapped = Constructor.wrappedName(),
- .Fn = Constructor.symbol_name,
- .TypeName = Type.name,
- });
- },
- .Attribute => |Attribute| {
- try cpp.writeAll(" ");
- if (Attribute.getter) |getter| {
- try cpp.print(
- \\JSC_DEFINE_CUSTOM_GETTER({s}, (JSGlobalObject* lexicalGlobalObject, EncodedJSValue thisValue, EncodedJSValue encodedValue, PropertyName attributeName)
- \\{{
- \\ auto& vm = JSC::getVM(&lexicalGlobalObject);
- \\ auto throwScope = DECLARE_THROW_SCOPE(vm);
- \\}}
- , .{Callback.wrappedName()});
- }
-
- if (comptime Attribute.setter) |setter| {
- try cpp.print(
- \\JSC_DEFINE_CUSTOM_SETTER({s}, (JSGlobalObject* lexicalGlobalObject, EncodedJSValue thisValue, PropertyName attributeName)
- \\{{
- \\
- \\}}
- , .{Callback.wrappedName()});
- }
- try cpp.writeAll(" ");
- },
- .Static => |Static| {},
- }
- }
-
- if (Prototype_) |Prototype| {
- h.print(
- \\
- \\
- \\
- \\
- ,
- fields,
- );
- } else {}
-
- h.print(
- \\ static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) {{
- \\ return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info());
- \\ }}
- \\
- \\ EXPORT_DECLARE_INFO;
- \\
- \\ template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
- \\ {{
- \\ if constexpr (mode == JSC::SubspaceAccess::Concurrently)
- \\ return nullptr;
- \\ return &vm.plainObjectSpace;
- \\ }}
- \\ private:
- \\ {[TypeName][s]}(JSC::VM& vm, JSC::Structure* structure) : Base(vm, structure) {{
- \\ m_zigBase = nullptr;
- \\ }}
- \\ void finishCreation(VM&);
- \\ void* m_zigBase;
- \\
- \\}}
- \\
- \\
- \\
- ,
- fields,
- );
- }
-
- // pub fn generateShimType(comptime Parent: type, comptime _name: []const u8, comptime static_properties: anytype) type {
- // const Base = struct {
- // const BaseType = @This();
-
- // bytes: shim.Bytes,
- // const cppFn = shim.cppFn;
-
- // pub const include = "Zig__" ++ _name;
- // pub const name = "Zig::" ++ _name;
- // pub const namespace = "Zig";
-
- // pub const shim = comptime Shimmer(namespace, name, BaseType);
-
- // pub fn create(global: *JSGlobalObject, parent: *Parent) JSValue {}
-
- // pub fn getZigType(this: *BaseType, global: *JSGlobalObject) JSValue {}
-
- // pub fn finalize(this: *BaseType, global: *JSGlobalObject) JSValue {}
- // };
- // }
- };
-};
-
pub usingnamespace @import("exports.zig");
pub const Callback = struct {