mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 10:28:47 +00:00
[bun:ffi] Add f32, f64, i64, u64 to read`
This commit is contained in:
@@ -2316,11 +2316,15 @@ pub const FFI = struct {
|
||||
.@"u8" = JSC.DOMCall("Reader", @This(), "u8", i32, JSC.DOMEffect.forRead(.World)),
|
||||
.@"u16" = JSC.DOMCall("Reader", @This(), "u16", i32, JSC.DOMEffect.forRead(.World)),
|
||||
.@"u32" = JSC.DOMCall("Reader", @This(), "u32", i32, JSC.DOMEffect.forRead(.World)),
|
||||
.@"ptr" = JSC.DOMCall("Reader", @This(), "ptr", i64, JSC.DOMEffect.forRead(.World)),
|
||||
.@"ptr" = JSC.DOMCall("Reader", @This(), "ptr", i52, JSC.DOMEffect.forRead(.World)),
|
||||
.@"i8" = JSC.DOMCall("Reader", @This(), "i8", i32, JSC.DOMEffect.forRead(.World)),
|
||||
.@"i16" = JSC.DOMCall("Reader", @This(), "i16", i32, JSC.DOMEffect.forRead(.World)),
|
||||
.@"i32" = JSC.DOMCall("Reader", @This(), "i32", i32, JSC.DOMEffect.forRead(.World)),
|
||||
.@"intptr" = JSC.DOMCall("Reader", @This(), "intptr", i64, JSC.DOMEffect.forRead(.World)),
|
||||
.@"i64" = JSC.DOMCall("Reader", @This(), "i64", i64, JSC.DOMEffect.forRead(.World)),
|
||||
.@"u64" = JSC.DOMCall("Reader", @This(), "u64", u64, JSC.DOMEffect.forRead(.World)),
|
||||
.@"intptr" = JSC.DOMCall("Reader", @This(), "intptr", i52, JSC.DOMEffect.forRead(.World)),
|
||||
.@"f32" = JSC.DOMCall("Reader", @This(), "f32", f64, JSC.DOMEffect.forRead(.World)),
|
||||
.@"f64" = JSC.DOMCall("Reader", @This(), "f64", f64, JSC.DOMEffect.forRead(.World)),
|
||||
},
|
||||
.{},
|
||||
);
|
||||
@@ -2398,6 +2402,46 @@ pub const FFI = struct {
|
||||
return JSValue.jsNumber(value);
|
||||
}
|
||||
|
||||
pub fn @"f32"(
|
||||
_: *JSGlobalObject,
|
||||
_: JSValue,
|
||||
arguments: []const JSValue,
|
||||
) JSValue {
|
||||
const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @intCast(usize, arguments[1].to(i32)) else @as(usize, 0);
|
||||
const value = @intToPtr(*align(1) f32, addr).*;
|
||||
return JSValue.jsNumber(value);
|
||||
}
|
||||
|
||||
pub fn @"f64"(
|
||||
_: *JSGlobalObject,
|
||||
_: JSValue,
|
||||
arguments: []const JSValue,
|
||||
) JSValue {
|
||||
const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @intCast(usize, arguments[1].to(i32)) else @as(usize, 0);
|
||||
const value = @intToPtr(*align(1) f64, addr).*;
|
||||
return JSValue.jsNumber(value);
|
||||
}
|
||||
|
||||
pub fn @"i64"(
|
||||
global: *JSGlobalObject,
|
||||
_: JSValue,
|
||||
arguments: []const JSValue,
|
||||
) JSValue {
|
||||
const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @intCast(usize, arguments[1].to(i32)) else @as(usize, 0);
|
||||
const value = @intToPtr(*align(1) i64, addr).*;
|
||||
return JSValue.fromInt64NoTruncate(global, value);
|
||||
}
|
||||
|
||||
pub fn @"u64"(
|
||||
global: *JSGlobalObject,
|
||||
_: JSValue,
|
||||
arguments: []const JSValue,
|
||||
) JSValue {
|
||||
const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @intCast(usize, arguments[1].to(i32)) else @as(usize, 0);
|
||||
const value = @intToPtr(*align(1) u64, addr).*;
|
||||
return JSValue.fromUInt64NoTruncate(global, value);
|
||||
}
|
||||
|
||||
pub fn @"u8WithoutTypeChecks"(
|
||||
_: *JSGlobalObject,
|
||||
_: *anyopaque,
|
||||
@@ -2479,6 +2523,50 @@ pub const FFI = struct {
|
||||
return JSValue.jsNumber(value);
|
||||
}
|
||||
|
||||
pub fn @"f32WithoutTypeChecks"(
|
||||
_: *JSGlobalObject,
|
||||
_: *anyopaque,
|
||||
raw_addr: i64,
|
||||
offset: i32,
|
||||
) callconv(.C) JSValue {
|
||||
const addr = @intCast(usize, raw_addr) + @intCast(usize, offset);
|
||||
const value = @intToPtr(*align(1) f32, addr).*;
|
||||
return JSValue.jsNumber(value);
|
||||
}
|
||||
|
||||
pub fn @"f64WithoutTypeChecks"(
|
||||
_: *JSGlobalObject,
|
||||
_: *anyopaque,
|
||||
raw_addr: i64,
|
||||
offset: i32,
|
||||
) callconv(.C) JSValue {
|
||||
const addr = @intCast(usize, raw_addr) + @intCast(usize, offset);
|
||||
const value = @intToPtr(*align(1) f64, addr).*;
|
||||
return JSValue.jsNumber(value);
|
||||
}
|
||||
|
||||
pub fn @"u64WithoutTypeChecks"(
|
||||
global: *JSGlobalObject,
|
||||
_: *anyopaque,
|
||||
raw_addr: i64,
|
||||
offset: i32,
|
||||
) callconv(.C) JSValue {
|
||||
const addr = @intCast(usize, raw_addr) + @intCast(usize, offset);
|
||||
const value = @intToPtr(*align(1) u64, addr).*;
|
||||
return JSValue.fromUInt64NoTruncate(global, value);
|
||||
}
|
||||
|
||||
pub fn @"i64WithoutTypeChecks"(
|
||||
global: *JSGlobalObject,
|
||||
_: *anyopaque,
|
||||
raw_addr: i64,
|
||||
offset: i32,
|
||||
) callconv(.C) JSValue {
|
||||
const addr = @intCast(usize, raw_addr) + @intCast(usize, offset);
|
||||
const value = @intToPtr(*align(1) i64, addr).*;
|
||||
return JSValue.fromInt64NoTruncate(global, value);
|
||||
}
|
||||
|
||||
pub fn getter(
|
||||
_: void,
|
||||
ctx: js.JSContextRef,
|
||||
|
||||
@@ -3061,6 +3061,7 @@ fn DOMCallResultType(comptime Type: type) []const u8 {
|
||||
JSC.JSString => "JSC::SpecString",
|
||||
JSC.JSUint8Array => "JSC::SpecUint8Array",
|
||||
JSC.JSCell => "JSC::SpecCell",
|
||||
u52, i52 => "JSC::SpecInt52Any",
|
||||
f64 => "JSC::SpecDoubleReal",
|
||||
else => "JSC::SpecHeapTop",
|
||||
};
|
||||
|
||||
@@ -208,7 +208,7 @@ extern "C" void Reader__ptr__put(JSC::JSGlobalObject *globalObject, JSC::Encoded
|
||||
Reader__ptr__fastpathWrapper,
|
||||
thisObject->classInfo(),
|
||||
JSC::DOMJIT::Effect::forReadWrite(JSC::DOMJIT::HeapRange::top(), JSC::DOMJIT::HeapRange::top()),
|
||||
JSC::SpecHeapTop,
|
||||
JSC::SpecInt52Any,
|
||||
JSC::SpecInt52Any,
|
||||
JSC::SpecInt32Only
|
||||
);
|
||||
@@ -359,6 +359,92 @@ extern "C" void Reader__i32__put(JSC::JSGlobalObject *globalObject, JSC::Encoded
|
||||
|
||||
|
||||
|
||||
extern "C" JSC_DECLARE_HOST_FUNCTION(Reader__i64__slowpathWrapper);
|
||||
extern "C" JSC_DECLARE_JIT_OPERATION_WITHOUT_WTF_INTERNAL(Reader__i64__fastpathWrapper, EncodedJSValue, (JSC::JSGlobalObject* lexicalGlobalObject, void* thisValue, int64_t, int32_t));
|
||||
|
||||
JSC_DEFINE_JIT_OPERATION(Reader__i64__fastpathWrapper, EncodedJSValue, (JSC::JSGlobalObject* lexicalGlobalObject, void* thisValue, int64_t arg1, int32_t arg2)) {
|
||||
VM& vm = JSC::getVM(lexicalGlobalObject);
|
||||
IGNORE_WARNINGS_BEGIN("frame-address")
|
||||
CallFrame* callFrame = DECLARE_CALL_FRAME(vm);
|
||||
IGNORE_WARNINGS_END
|
||||
JSC::JITOperationPrologueCallFrameTracer tracer(vm, callFrame);
|
||||
return Reader__i64__fastpath(lexicalGlobalObject, thisValue, arg1, arg2);
|
||||
}
|
||||
JSC_DEFINE_HOST_FUNCTION(Reader__i64__slowpathWrapper, (JSC::JSGlobalObject *globalObject, JSC::CallFrame* frame)) {
|
||||
return Reader__i64__slowpath(globalObject, JSValue::encode(frame->thisValue()), reinterpret_cast<JSC::EncodedJSValue*>(frame->addressOfArgumentsStart()), frame->argumentCount());
|
||||
}
|
||||
|
||||
extern "C" void Reader__i64__put(JSC::JSGlobalObject *globalObject, JSC::EncodedJSValue value) {
|
||||
JSC::JSObject *thisObject = JSC::jsCast<JSC::JSObject *>(JSC::JSValue::decode(value));
|
||||
static const JSC::DOMJIT::Signature DOMJIT_i64_signature(
|
||||
Reader__i64__fastpathWrapper,
|
||||
thisObject->classInfo(),
|
||||
JSC::DOMJIT::Effect::forReadWrite(JSC::DOMJIT::HeapRange::top(), JSC::DOMJIT::HeapRange::top()),
|
||||
JSC::SpecHeapTop,
|
||||
JSC::SpecInt52Any,
|
||||
JSC::SpecInt32Only
|
||||
);
|
||||
JSFunction* function = JSFunction::create(
|
||||
globalObject->vm(),
|
||||
globalObject,
|
||||
2,
|
||||
String("i64"_s),
|
||||
Reader__i64__slowpathWrapper, ImplementationVisibility::Public, NoIntrinsic, Reader__i64__slowpathWrapper,
|
||||
&DOMJIT_i64_signature
|
||||
);
|
||||
thisObject->putDirect(
|
||||
globalObject->vm(),
|
||||
Identifier::fromString(globalObject->vm(), "i64"_s),
|
||||
function,
|
||||
JSC::PropertyAttribute::Function | JSC::PropertyAttribute::DOMJITFunction | 0
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern "C" JSC_DECLARE_HOST_FUNCTION(Reader__u64__slowpathWrapper);
|
||||
extern "C" JSC_DECLARE_JIT_OPERATION_WITHOUT_WTF_INTERNAL(Reader__u64__fastpathWrapper, EncodedJSValue, (JSC::JSGlobalObject* lexicalGlobalObject, void* thisValue, int64_t, int32_t));
|
||||
|
||||
JSC_DEFINE_JIT_OPERATION(Reader__u64__fastpathWrapper, EncodedJSValue, (JSC::JSGlobalObject* lexicalGlobalObject, void* thisValue, int64_t arg1, int32_t arg2)) {
|
||||
VM& vm = JSC::getVM(lexicalGlobalObject);
|
||||
IGNORE_WARNINGS_BEGIN("frame-address")
|
||||
CallFrame* callFrame = DECLARE_CALL_FRAME(vm);
|
||||
IGNORE_WARNINGS_END
|
||||
JSC::JITOperationPrologueCallFrameTracer tracer(vm, callFrame);
|
||||
return Reader__u64__fastpath(lexicalGlobalObject, thisValue, arg1, arg2);
|
||||
}
|
||||
JSC_DEFINE_HOST_FUNCTION(Reader__u64__slowpathWrapper, (JSC::JSGlobalObject *globalObject, JSC::CallFrame* frame)) {
|
||||
return Reader__u64__slowpath(globalObject, JSValue::encode(frame->thisValue()), reinterpret_cast<JSC::EncodedJSValue*>(frame->addressOfArgumentsStart()), frame->argumentCount());
|
||||
}
|
||||
|
||||
extern "C" void Reader__u64__put(JSC::JSGlobalObject *globalObject, JSC::EncodedJSValue value) {
|
||||
JSC::JSObject *thisObject = JSC::jsCast<JSC::JSObject *>(JSC::JSValue::decode(value));
|
||||
static const JSC::DOMJIT::Signature DOMJIT_u64_signature(
|
||||
Reader__u64__fastpathWrapper,
|
||||
thisObject->classInfo(),
|
||||
JSC::DOMJIT::Effect::forReadWrite(JSC::DOMJIT::HeapRange::top(), JSC::DOMJIT::HeapRange::top()),
|
||||
JSC::SpecHeapTop,
|
||||
JSC::SpecInt52Any,
|
||||
JSC::SpecInt32Only
|
||||
);
|
||||
JSFunction* function = JSFunction::create(
|
||||
globalObject->vm(),
|
||||
globalObject,
|
||||
2,
|
||||
String("u64"_s),
|
||||
Reader__u64__slowpathWrapper, ImplementationVisibility::Public, NoIntrinsic, Reader__u64__slowpathWrapper,
|
||||
&DOMJIT_u64_signature
|
||||
);
|
||||
thisObject->putDirect(
|
||||
globalObject->vm(),
|
||||
Identifier::fromString(globalObject->vm(), "u64"_s),
|
||||
function,
|
||||
JSC::PropertyAttribute::Function | JSC::PropertyAttribute::DOMJITFunction | 0
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern "C" JSC_DECLARE_HOST_FUNCTION(Reader__intptr__slowpathWrapper);
|
||||
extern "C" JSC_DECLARE_JIT_OPERATION_WITHOUT_WTF_INTERNAL(Reader__intptr__fastpathWrapper, EncodedJSValue, (JSC::JSGlobalObject* lexicalGlobalObject, void* thisValue, int64_t, int32_t));
|
||||
|
||||
@@ -380,7 +466,7 @@ extern "C" void Reader__intptr__put(JSC::JSGlobalObject *globalObject, JSC::Enco
|
||||
Reader__intptr__fastpathWrapper,
|
||||
thisObject->classInfo(),
|
||||
JSC::DOMJIT::Effect::forReadWrite(JSC::DOMJIT::HeapRange::top(), JSC::DOMJIT::HeapRange::top()),
|
||||
JSC::SpecHeapTop,
|
||||
JSC::SpecInt52Any,
|
||||
JSC::SpecInt52Any,
|
||||
JSC::SpecInt32Only
|
||||
);
|
||||
@@ -401,5 +487,91 @@ extern "C" void Reader__intptr__put(JSC::JSGlobalObject *globalObject, JSC::Enco
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern "C" JSC_DECLARE_HOST_FUNCTION(Reader__f32__slowpathWrapper);
|
||||
extern "C" JSC_DECLARE_JIT_OPERATION_WITHOUT_WTF_INTERNAL(Reader__f32__fastpathWrapper, EncodedJSValue, (JSC::JSGlobalObject* lexicalGlobalObject, void* thisValue, int64_t, int32_t));
|
||||
|
||||
JSC_DEFINE_JIT_OPERATION(Reader__f32__fastpathWrapper, EncodedJSValue, (JSC::JSGlobalObject* lexicalGlobalObject, void* thisValue, int64_t arg1, int32_t arg2)) {
|
||||
VM& vm = JSC::getVM(lexicalGlobalObject);
|
||||
IGNORE_WARNINGS_BEGIN("frame-address")
|
||||
CallFrame* callFrame = DECLARE_CALL_FRAME(vm);
|
||||
IGNORE_WARNINGS_END
|
||||
JSC::JITOperationPrologueCallFrameTracer tracer(vm, callFrame);
|
||||
return Reader__f32__fastpath(lexicalGlobalObject, thisValue, arg1, arg2);
|
||||
}
|
||||
JSC_DEFINE_HOST_FUNCTION(Reader__f32__slowpathWrapper, (JSC::JSGlobalObject *globalObject, JSC::CallFrame* frame)) {
|
||||
return Reader__f32__slowpath(globalObject, JSValue::encode(frame->thisValue()), reinterpret_cast<JSC::EncodedJSValue*>(frame->addressOfArgumentsStart()), frame->argumentCount());
|
||||
}
|
||||
|
||||
extern "C" void Reader__f32__put(JSC::JSGlobalObject *globalObject, JSC::EncodedJSValue value) {
|
||||
JSC::JSObject *thisObject = JSC::jsCast<JSC::JSObject *>(JSC::JSValue::decode(value));
|
||||
static const JSC::DOMJIT::Signature DOMJIT_f32_signature(
|
||||
Reader__f32__fastpathWrapper,
|
||||
thisObject->classInfo(),
|
||||
JSC::DOMJIT::Effect::forReadWrite(JSC::DOMJIT::HeapRange::top(), JSC::DOMJIT::HeapRange::top()),
|
||||
JSC::SpecDoubleReal,
|
||||
JSC::SpecInt52Any,
|
||||
JSC::SpecInt32Only
|
||||
);
|
||||
JSFunction* function = JSFunction::create(
|
||||
globalObject->vm(),
|
||||
globalObject,
|
||||
2,
|
||||
String("f32"_s),
|
||||
Reader__f32__slowpathWrapper, ImplementationVisibility::Public, NoIntrinsic, Reader__f32__slowpathWrapper,
|
||||
&DOMJIT_f32_signature
|
||||
);
|
||||
thisObject->putDirect(
|
||||
globalObject->vm(),
|
||||
Identifier::fromString(globalObject->vm(), "f32"_s),
|
||||
function,
|
||||
JSC::PropertyAttribute::Function | JSC::PropertyAttribute::DOMJITFunction | 0
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern "C" JSC_DECLARE_HOST_FUNCTION(Reader__f64__slowpathWrapper);
|
||||
extern "C" JSC_DECLARE_JIT_OPERATION_WITHOUT_WTF_INTERNAL(Reader__f64__fastpathWrapper, EncodedJSValue, (JSC::JSGlobalObject* lexicalGlobalObject, void* thisValue, int64_t, int32_t));
|
||||
|
||||
JSC_DEFINE_JIT_OPERATION(Reader__f64__fastpathWrapper, EncodedJSValue, (JSC::JSGlobalObject* lexicalGlobalObject, void* thisValue, int64_t arg1, int32_t arg2)) {
|
||||
VM& vm = JSC::getVM(lexicalGlobalObject);
|
||||
IGNORE_WARNINGS_BEGIN("frame-address")
|
||||
CallFrame* callFrame = DECLARE_CALL_FRAME(vm);
|
||||
IGNORE_WARNINGS_END
|
||||
JSC::JITOperationPrologueCallFrameTracer tracer(vm, callFrame);
|
||||
return Reader__f64__fastpath(lexicalGlobalObject, thisValue, arg1, arg2);
|
||||
}
|
||||
JSC_DEFINE_HOST_FUNCTION(Reader__f64__slowpathWrapper, (JSC::JSGlobalObject *globalObject, JSC::CallFrame* frame)) {
|
||||
return Reader__f64__slowpath(globalObject, JSValue::encode(frame->thisValue()), reinterpret_cast<JSC::EncodedJSValue*>(frame->addressOfArgumentsStart()), frame->argumentCount());
|
||||
}
|
||||
|
||||
extern "C" void Reader__f64__put(JSC::JSGlobalObject *globalObject, JSC::EncodedJSValue value) {
|
||||
JSC::JSObject *thisObject = JSC::jsCast<JSC::JSObject *>(JSC::JSValue::decode(value));
|
||||
static const JSC::DOMJIT::Signature DOMJIT_f64_signature(
|
||||
Reader__f64__fastpathWrapper,
|
||||
thisObject->classInfo(),
|
||||
JSC::DOMJIT::Effect::forReadWrite(JSC::DOMJIT::HeapRange::top(), JSC::DOMJIT::HeapRange::top()),
|
||||
JSC::SpecDoubleReal,
|
||||
JSC::SpecInt52Any,
|
||||
JSC::SpecInt32Only
|
||||
);
|
||||
JSFunction* function = JSFunction::create(
|
||||
globalObject->vm(),
|
||||
globalObject,
|
||||
2,
|
||||
String("f64"_s),
|
||||
Reader__f64__slowpathWrapper, ImplementationVisibility::Public, NoIntrinsic, Reader__f64__slowpathWrapper,
|
||||
&DOMJIT_f64_signature
|
||||
);
|
||||
thisObject->putDirect(
|
||||
globalObject->vm(),
|
||||
Identifier::fromString(globalObject->vm(), "f64"_s),
|
||||
function,
|
||||
JSC::PropertyAttribute::Function | JSC::PropertyAttribute::DOMJITFunction | 0
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/* -- END DOMCall DEFINITIONS-- */
|
||||
|
||||
|
||||
@@ -2729,7 +2729,7 @@ pub const JSValue = enum(JSValueReprInt) {
|
||||
pub fn jsNumberWithType(comptime Number: type, number: Number) JSValue {
|
||||
return switch (comptime Number) {
|
||||
JSValue => number,
|
||||
f64 => jsNumberFromDouble(number),
|
||||
f32, f64 => jsNumberFromDouble(@as(f64, number)),
|
||||
u8 => jsNumberFromChar(number),
|
||||
i16, i32, c_int, i8, u16 => jsNumberFromInt32(@intCast(i32, number)),
|
||||
i64 => jsNumberFromInt64(@intCast(i64, number)),
|
||||
@@ -4220,6 +4220,10 @@ pub const __DOMCall__reader_ptr = @import("../api/bun.zig").FFI.Reader.Class.fun
|
||||
pub const __DOMCall__reader_i8 = @import("../api/bun.zig").FFI.Reader.Class.functionDefinitions.@"i8";
|
||||
pub const __DOMCall__reader_i16 = @import("../api/bun.zig").FFI.Reader.Class.functionDefinitions.@"i16";
|
||||
pub const __DOMCall__reader_i32 = @import("../api/bun.zig").FFI.Reader.Class.functionDefinitions.@"i32";
|
||||
pub const __DOMCall__reader_f32 = @import("../api/bun.zig").FFI.Reader.Class.functionDefinitions.@"f32";
|
||||
pub const __DOMCall__reader_f64 = @import("../api/bun.zig").FFI.Reader.Class.functionDefinitions.@"f64";
|
||||
pub const __DOMCall__reader_i64 = @import("../api/bun.zig").FFI.Reader.Class.functionDefinitions.@"i64";
|
||||
pub const __DOMCall__reader_u64 = @import("../api/bun.zig").FFI.Reader.Class.functionDefinitions.@"u64";
|
||||
pub const __DOMCall__reader_intptr = @import("../api/bun.zig").FFI.Reader.Class.functionDefinitions.@"intptr";
|
||||
pub const DOMCalls = .{
|
||||
@import("../api/bun.zig").FFI,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//-- AUTOGENERATED FILE -- 1662716176
|
||||
//-- AUTOGENERATED FILE -- 1662772023
|
||||
// clang-format off
|
||||
#pragma once
|
||||
|
||||
@@ -240,8 +240,8 @@ extern "C" const size_t Zig__ConsoleClient_object_align_ = alignof(Zig::ConsoleC
|
||||
extern "C" const size_t Bun__Timer_object_size_ = sizeof(Bun__Timer);
|
||||
extern "C" const size_t Bun__Timer_object_align_ = alignof(Bun__Timer);
|
||||
|
||||
const size_t sizes[41] = {sizeof(JSC::JSObject), sizeof(WebCore::DOMURL), sizeof(WebCore::FetchHeaders), sizeof(SystemError), sizeof(JSC::JSCell), sizeof(JSC::JSString), sizeof(Inspector::ScriptArguments), sizeof(JSC::JSModuleLoader), sizeof(JSC::JSModuleRecord), sizeof(JSC::JSPromise), sizeof(JSC::JSInternalPromise), sizeof(JSC::SourceOrigin), sizeof(JSC::SourceCode), sizeof(JSC::JSFunction), sizeof(JSC::JSGlobalObject), sizeof(WTF::URL), sizeof(WTF::String), sizeof(JSC::JSValue), sizeof(JSC::PropertyName), sizeof(JSC::Exception), sizeof(JSC::VM), sizeof(JSC::ThrowScope), sizeof(JSC::CatchScope), sizeof(JSC::Identifier), sizeof(WTF::StringImpl), sizeof(WTF::ExternalStringImpl), sizeof(WTF::StringView), sizeof(FFI__ptr), sizeof(Reader__u8), sizeof(Reader__u16), sizeof(Reader__u32), sizeof(Reader__ptr), sizeof(Reader__i8), sizeof(Reader__i16), sizeof(Reader__i32), sizeof(Reader__intptr), sizeof(Zig::GlobalObject), sizeof(Bun__Path), sizeof(ArrayBufferSink), sizeof(HTTPSResponseSink), sizeof(HTTPResponseSink)};
|
||||
const size_t sizes[45] = {sizeof(JSC::JSObject), sizeof(WebCore::DOMURL), sizeof(WebCore::FetchHeaders), sizeof(SystemError), sizeof(JSC::JSCell), sizeof(JSC::JSString), sizeof(Inspector::ScriptArguments), sizeof(JSC::JSModuleLoader), sizeof(JSC::JSModuleRecord), sizeof(JSC::JSPromise), sizeof(JSC::JSInternalPromise), sizeof(JSC::SourceOrigin), sizeof(JSC::SourceCode), sizeof(JSC::JSFunction), sizeof(JSC::JSGlobalObject), sizeof(WTF::URL), sizeof(WTF::String), sizeof(JSC::JSValue), sizeof(JSC::PropertyName), sizeof(JSC::Exception), sizeof(JSC::VM), sizeof(JSC::ThrowScope), sizeof(JSC::CatchScope), sizeof(JSC::Identifier), sizeof(WTF::StringImpl), sizeof(WTF::ExternalStringImpl), sizeof(WTF::StringView), sizeof(FFI__ptr), sizeof(Reader__u8), sizeof(Reader__u16), sizeof(Reader__u32), sizeof(Reader__ptr), sizeof(Reader__i8), sizeof(Reader__i16), sizeof(Reader__i32), sizeof(Reader__f32), sizeof(Reader__f64), sizeof(Reader__i64), sizeof(Reader__u64), sizeof(Reader__intptr), sizeof(Zig::GlobalObject), sizeof(Bun__Path), sizeof(ArrayBufferSink), sizeof(HTTPSResponseSink), sizeof(HTTPResponseSink)};
|
||||
|
||||
const char* names[41] = {"JSC__JSObject", "WebCore__DOMURL", "WebCore__FetchHeaders", "SystemError", "JSC__JSCell", "JSC__JSString", "Inspector__ScriptArguments", "JSC__JSModuleLoader", "JSC__JSModuleRecord", "JSC__JSPromise", "JSC__JSInternalPromise", "JSC__SourceOrigin", "JSC__SourceCode", "JSC__JSFunction", "JSC__JSGlobalObject", "WTF__URL", "WTF__String", "JSC__JSValue", "JSC__PropertyName", "JSC__Exception", "JSC__VM", "JSC__ThrowScope", "JSC__CatchScope", "JSC__Identifier", "WTF__StringImpl", "WTF__ExternalStringImpl", "WTF__StringView", "FFI__ptr", "Reader__u8", "Reader__u16", "Reader__u32", "Reader__ptr", "Reader__i8", "Reader__i16", "Reader__i32", "Reader__intptr", "Zig__GlobalObject", "Bun__Path", "ArrayBufferSink", "HTTPSResponseSink", "HTTPResponseSink"};
|
||||
const char* names[45] = {"JSC__JSObject", "WebCore__DOMURL", "WebCore__FetchHeaders", "SystemError", "JSC__JSCell", "JSC__JSString", "Inspector__ScriptArguments", "JSC__JSModuleLoader", "JSC__JSModuleRecord", "JSC__JSPromise", "JSC__JSInternalPromise", "JSC__SourceOrigin", "JSC__SourceCode", "JSC__JSFunction", "JSC__JSGlobalObject", "WTF__URL", "WTF__String", "JSC__JSValue", "JSC__PropertyName", "JSC__Exception", "JSC__VM", "JSC__ThrowScope", "JSC__CatchScope", "JSC__Identifier", "WTF__StringImpl", "WTF__ExternalStringImpl", "WTF__StringView", "FFI__ptr", "Reader__u8", "Reader__u16", "Reader__u32", "Reader__ptr", "Reader__i8", "Reader__i16", "Reader__i32", "Reader__f32", "Reader__f64", "Reader__i64", "Reader__u64", "Reader__intptr", "Zig__GlobalObject", "Bun__Path", "ArrayBufferSink", "HTTPSResponseSink", "HTTPResponseSink"};
|
||||
|
||||
const size_t aligns[41] = {alignof(JSC::JSObject), alignof(WebCore::DOMURL), alignof(WebCore::FetchHeaders), alignof(SystemError), alignof(JSC::JSCell), alignof(JSC::JSString), alignof(Inspector::ScriptArguments), alignof(JSC::JSModuleLoader), alignof(JSC::JSModuleRecord), alignof(JSC::JSPromise), alignof(JSC::JSInternalPromise), alignof(JSC::SourceOrigin), alignof(JSC::SourceCode), alignof(JSC::JSFunction), alignof(JSC::JSGlobalObject), alignof(WTF::URL), alignof(WTF::String), alignof(JSC::JSValue), alignof(JSC::PropertyName), alignof(JSC::Exception), alignof(JSC::VM), alignof(JSC::ThrowScope), alignof(JSC::CatchScope), alignof(JSC::Identifier), alignof(WTF::StringImpl), alignof(WTF::ExternalStringImpl), alignof(WTF::StringView), alignof(FFI__ptr), alignof(Reader__u8), alignof(Reader__u16), alignof(Reader__u32), alignof(Reader__ptr), alignof(Reader__i8), alignof(Reader__i16), alignof(Reader__i32), alignof(Reader__intptr), alignof(Zig::GlobalObject), alignof(Bun__Path), alignof(ArrayBufferSink), alignof(HTTPSResponseSink), alignof(HTTPResponseSink)};
|
||||
const size_t aligns[45] = {alignof(JSC::JSObject), alignof(WebCore::DOMURL), alignof(WebCore::FetchHeaders), alignof(SystemError), alignof(JSC::JSCell), alignof(JSC::JSString), alignof(Inspector::ScriptArguments), alignof(JSC::JSModuleLoader), alignof(JSC::JSModuleRecord), alignof(JSC::JSPromise), alignof(JSC::JSInternalPromise), alignof(JSC::SourceOrigin), alignof(JSC::SourceCode), alignof(JSC::JSFunction), alignof(JSC::JSGlobalObject), alignof(WTF::URL), alignof(WTF::String), alignof(JSC::JSValue), alignof(JSC::PropertyName), alignof(JSC::Exception), alignof(JSC::VM), alignof(JSC::ThrowScope), alignof(JSC::CatchScope), alignof(JSC::Identifier), alignof(WTF::StringImpl), alignof(WTF::ExternalStringImpl), alignof(WTF::StringView), alignof(FFI__ptr), alignof(Reader__u8), alignof(Reader__u16), alignof(Reader__u32), alignof(Reader__ptr), alignof(Reader__i8), alignof(Reader__i16), alignof(Reader__i32), alignof(Reader__f32), alignof(Reader__f64), alignof(Reader__i64), alignof(Reader__u64), alignof(Reader__intptr), alignof(Zig::GlobalObject), alignof(Bun__Path), alignof(ArrayBufferSink), alignof(HTTPSResponseSink), alignof(HTTPResponseSink)};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// clang-format off
|
||||
//-- AUTOGENERATED FILE -- 1662716176
|
||||
//-- AUTOGENERATED FILE -- 1662772023
|
||||
#pragma once
|
||||
|
||||
#include <stddef.h>
|
||||
@@ -709,6 +709,38 @@ CPP_DECL void Reader__i32__put(JSC__JSGlobalObject* arg0, JSC__JSValue JSValue1)
|
||||
ZIG_DECL JSC__JSValue Reader__i32__fastpath(JSC__JSGlobalObject* arg0, void* arg1, int64_t arg2, int32_t arg3);
|
||||
ZIG_DECL JSC__JSValue Reader__i32__slowpath(JSC__JSGlobalObject* arg0, JSC__JSValue JSValue1, JSC__JSValue* arg2, size_t arg3);
|
||||
|
||||
#endif
|
||||
CPP_DECL void Reader__f32__put(JSC__JSGlobalObject* arg0, JSC__JSValue JSValue1);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
ZIG_DECL JSC__JSValue Reader__f32__fastpath(JSC__JSGlobalObject* arg0, void* arg1, int64_t arg2, int32_t arg3);
|
||||
ZIG_DECL JSC__JSValue Reader__f32__slowpath(JSC__JSGlobalObject* arg0, JSC__JSValue JSValue1, JSC__JSValue* arg2, size_t arg3);
|
||||
|
||||
#endif
|
||||
CPP_DECL void Reader__f64__put(JSC__JSGlobalObject* arg0, JSC__JSValue JSValue1);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
ZIG_DECL JSC__JSValue Reader__f64__fastpath(JSC__JSGlobalObject* arg0, void* arg1, int64_t arg2, int32_t arg3);
|
||||
ZIG_DECL JSC__JSValue Reader__f64__slowpath(JSC__JSGlobalObject* arg0, JSC__JSValue JSValue1, JSC__JSValue* arg2, size_t arg3);
|
||||
|
||||
#endif
|
||||
CPP_DECL void Reader__i64__put(JSC__JSGlobalObject* arg0, JSC__JSValue JSValue1);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
ZIG_DECL JSC__JSValue Reader__i64__fastpath(JSC__JSGlobalObject* arg0, void* arg1, int64_t arg2, int32_t arg3);
|
||||
ZIG_DECL JSC__JSValue Reader__i64__slowpath(JSC__JSGlobalObject* arg0, JSC__JSValue JSValue1, JSC__JSValue* arg2, size_t arg3);
|
||||
|
||||
#endif
|
||||
CPP_DECL void Reader__u64__put(JSC__JSGlobalObject* arg0, JSC__JSValue JSValue1);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
ZIG_DECL JSC__JSValue Reader__u64__fastpath(JSC__JSGlobalObject* arg0, void* arg1, int64_t arg2, int32_t arg3);
|
||||
ZIG_DECL JSC__JSValue Reader__u64__slowpath(JSC__JSGlobalObject* arg0, JSC__JSValue JSValue1, JSC__JSValue* arg2, size_t arg3);
|
||||
|
||||
#endif
|
||||
CPP_DECL void Reader__intptr__put(JSC__JSGlobalObject* arg0, JSC__JSValue JSValue1);
|
||||
|
||||
|
||||
@@ -418,6 +418,10 @@ pub extern fn Reader__ptr__put(arg0: ?*JSC__JSGlobalObject, JSValue1: JSC__JSVal
|
||||
pub extern fn Reader__i8__put(arg0: ?*JSC__JSGlobalObject, JSValue1: JSC__JSValue) void;
|
||||
pub extern fn Reader__i16__put(arg0: ?*JSC__JSGlobalObject, JSValue1: JSC__JSValue) void;
|
||||
pub extern fn Reader__i32__put(arg0: ?*JSC__JSGlobalObject, JSValue1: JSC__JSValue) void;
|
||||
pub extern fn Reader__f32__put(arg0: ?*JSC__JSGlobalObject, JSValue1: JSC__JSValue) void;
|
||||
pub extern fn Reader__f64__put(arg0: ?*JSC__JSGlobalObject, JSValue1: JSC__JSValue) void;
|
||||
pub extern fn Reader__i64__put(arg0: ?*JSC__JSGlobalObject, JSValue1: JSC__JSValue) void;
|
||||
pub extern fn Reader__u64__put(arg0: ?*JSC__JSGlobalObject, JSValue1: JSC__JSValue) void;
|
||||
pub extern fn Reader__intptr__put(arg0: ?*JSC__JSGlobalObject, JSValue1: JSC__JSValue) void;
|
||||
pub extern fn Zig__GlobalObject__create(arg0: [*c]JSClassRef, arg1: i32, arg2: ?*anyopaque) ?*JSC__JSGlobalObject;
|
||||
pub extern fn Zig__GlobalObject__getModuleRegistryMap(arg0: ?*JSC__JSGlobalObject) ?*anyopaque;
|
||||
|
||||
@@ -611,11 +611,11 @@ function ffiRunner(fast) {
|
||||
// });
|
||||
|
||||
it("read", () => {
|
||||
const buffer = new BigInt64Array(64);
|
||||
const buffer = new BigInt64Array(16);
|
||||
const dataView = new DataView(buffer.buffer);
|
||||
const addr = ptr(buffer);
|
||||
|
||||
for (let i = 0; i < 64; i++) {
|
||||
for (let i = 0; i < buffer.length; i++) {
|
||||
buffer[i] = BigInt(i);
|
||||
expect(read.intptr(addr, i * 8)).toBe(
|
||||
Number(dataView.getBigInt64(i * 8, true))
|
||||
@@ -623,15 +623,24 @@ it("read", () => {
|
||||
expect(read.ptr(addr, i * 8)).toBe(
|
||||
Number(dataView.getBigUint64(i * 8, true))
|
||||
);
|
||||
expect(read.f64(addr, i + 8)).toBe(dataView.getFloat64(i + 8, true));
|
||||
expect(read.i64(addr, i * 8)).toBe(dataView.getBigInt64(i * 8, true));
|
||||
expect(read.u64(addr, i * 8)).toBe(dataView.getBigUint64(i * 8, true));
|
||||
}
|
||||
|
||||
for (let i = 0; i < buffer.byteLength - 4; i++) {
|
||||
// read is intended to behave like DataView
|
||||
// but instead of doing
|
||||
// new DataView(toArrayBuffer(myPtr)).getInt8(0, true)
|
||||
// you can do
|
||||
// read.i8(myPtr, 0)
|
||||
expect(read.i8(addr, i)).toBe(dataView.getInt8(i, true));
|
||||
expect(read.i16(addr, i)).toBe(dataView.getInt16(i, true));
|
||||
expect(read.i32(addr, i)).toBe(dataView.getInt32(i, true));
|
||||
expect(read.u8(addr, i)).toBe(dataView.getUint8(i, true));
|
||||
expect(read.u16(addr, i)).toBe(dataView.getUint16(i, true));
|
||||
expect(read.u32(addr, i)).toBe(dataView.getUint32(i, true));
|
||||
expect(read.f32(addr, i)).toBe(dataView.getFloat32(i, true));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user