diff options
Diffstat (limited to 'src/javascript')
| -rw-r--r-- | src/javascript/jsc/bindings/bindings.cpp | 14 | ||||
| -rw-r--r-- | src/javascript/jsc/bindings/exports.zig | 10 | ||||
| -rw-r--r-- | src/javascript/jsc/javascript.zig | 2 | ||||
| -rw-r--r-- | src/javascript/jsc/test/jest.zig | 10 | ||||
| -rw-r--r-- | src/javascript/jsc/webcore/response.zig | 17 |
5 files changed, 35 insertions, 18 deletions
diff --git a/src/javascript/jsc/bindings/bindings.cpp b/src/javascript/jsc/bindings/bindings.cpp index c3684e2bd..a0e5fe4a9 100644 --- a/src/javascript/jsc/bindings/bindings.cpp +++ b/src/javascript/jsc/bindings/bindings.cpp @@ -2410,13 +2410,19 @@ void JSC__JSValue__getNameProperty(JSC__JSValue JSValue0, JSC__JSGlobalObject* a { JSC::JSObject* obj = JSC::JSValue::decode(JSValue0).getObject(); + JSC::VM &vm = arg1->vm(); if (obj == nullptr) { arg2->len = 0; return; } - JSC::JSValue name = obj->getDirect(arg1->vm(), arg1->vm().propertyNames->name); + JSC::JSValue name = obj->getDirect(vm, vm.propertyNames->toStringTagSymbol); + if (name == JSC::JSValue{}) { + name = obj->getDirect(vm, vm.propertyNames->name); + } + + if (name && name.isString()) { auto str = name.toWTFString(arg1); if (!str.isEmpty()) { @@ -2425,9 +2431,9 @@ void JSC__JSValue__getNameProperty(JSC__JSValue JSValue0, JSC__JSGlobalObject* a } } - if (JSC::JSFunction* function = JSC::jsDynamicCast<JSC::JSFunction*>(arg1->vm(), obj)) { + if (JSC::JSFunction* function = JSC::jsDynamicCast<JSC::JSFunction*>(vm, obj)) { - WTF::String actualName = function->name(arg1->vm()); + WTF::String actualName = function->name(vm); if (!actualName.isEmpty() || function->isHostOrBuiltinFunction()) { *arg2 = Zig::toZigString(actualName); return; @@ -2439,7 +2445,7 @@ void JSC__JSValue__getNameProperty(JSC__JSValue JSValue0, JSC__JSGlobalObject* a return; } - if (JSC::InternalFunction* function = JSC::jsDynamicCast<JSC::InternalFunction*>(arg1->vm(), obj)) { + if (JSC::InternalFunction* function = JSC::jsDynamicCast<JSC::InternalFunction*>(vm, obj)) { auto view = WTF::StringView(function->name()); *arg2 = Zig::toZigString(view); return; diff --git a/src/javascript/jsc/bindings/exports.zig b/src/javascript/jsc/bindings/exports.zig index d58e45157..e1b7d38b9 100644 --- a/src/javascript/jsc/bindings/exports.zig +++ b/src/javascript/jsc/bindings/exports.zig @@ -1266,6 +1266,7 @@ pub const ZigConsoleClient = struct { .cell = js_type, }; } + return .{ .tag = .Object, .cell = js_type, @@ -1289,6 +1290,10 @@ pub const ZigConsoleClient = struct { return .{ .tag = .JSX, .cell = js_type }; } } + + if (value.as(JSC.DOMURL) != null) { + return .{ .tag = .String, .cell = js_type }; + } } return .{ @@ -2047,6 +2052,11 @@ pub const ZigConsoleClient = struct { if (name_str.len > 0 and !strings.eqlComptime(name_str.slice(), "Object")) { writer.print("{} ", .{name_str}); + } else { + value.getNameProperty(this.globalThis, &name_str); + if (name_str.len > 0 and !strings.eqlComptime(name_str.slice(), "Object")) { + writer.print("{} ", .{name_str}); + } } if (count_ == 0) { diff --git a/src/javascript/jsc/javascript.zig b/src/javascript/jsc/javascript.zig index e0cf32cce..8d47857d3 100644 --- a/src/javascript/jsc/javascript.zig +++ b/src/javascript/jsc/javascript.zig @@ -620,6 +620,8 @@ pub const VirtualMachine = struct { while (true) { this.tickConcurrent(); + this.global.vm().doWork(); + while (this.tickWithCount() > 0) {} this.tickConcurrent(); diff --git a/src/javascript/jsc/test/jest.zig b/src/javascript/jsc/test/jest.zig index 63f55d9e1..1857f3e2a 100644 --- a/src/javascript/jsc/test/jest.zig +++ b/src/javascript/jsc/test/jest.zig @@ -675,7 +675,7 @@ pub const TestScope = struct { return .{ .fail = this.counter.actual }; } - if (!initial_value.isUndefinedOrNull()) { + if (!initial_value.isEmptyOrUndefinedOrNull() and (initial_value.asPromise() != null or initial_value.asInternalPromise() != null)) { if (this.promise != null) { return .{ .pending = .{} }; } @@ -685,12 +685,8 @@ pub const TestScope = struct { this.promise = null; } - var status = JSC.JSPromise.Status.Pending; - var vm_ptr = vm.global.vm(); - while (this.promise != null and status == JSC.JSPromise.Status.Pending) : (status = this.promise.?.status(vm_ptr)) { - vm.tick(); - } - switch (status) { + vm.waitForPromise(this.promise.?); + switch (this.promise.?.status(vm.global.vm())) { .Rejected => { vm.defaultErrorHandler(this.promise.?.result(vm.global.vm()), null); return .{ .fail = this.counter.actual }; diff --git a/src/javascript/jsc/webcore/response.zig b/src/javascript/jsc/webcore/response.zig index b9d3f75a7..82d43ccf7 100644 --- a/src/javascript/jsc/webcore/response.zig +++ b/src/javascript/jsc/webcore/response.zig @@ -1616,9 +1616,9 @@ pub const Blob = struct { return this.opened_fd; } - pub fn onOpen(this: *This, _: *HTTPClient.NetworkThread.Completion, result: AsyncIO.OpenError!JSC.Node.FileDescriptor) void { - this.opened_fd = result catch |err| { - this.errno = err; + pub fn onOpen(this: *This, completion: *HTTPClient.NetworkThread.Completion, result: AsyncIO.OpenError!JSC.Node.FileDescriptor) void { + this.opened_fd = result catch { + this.errno = AsyncIO.asError(-completion.result); if (comptime Environment.isLinux) resume this.open_frame; return; @@ -1948,10 +1948,13 @@ pub const Blob = struct { _ = @asyncCall(std.mem.asBytes(frame), undefined, runAsync, .{ this, task }); } - pub fn onRead(this: *ReadFile, _: *HTTPClient.NetworkThread.Completion, result: AsyncIO.ReadError!usize) void { - this.read_len = @truncate(SizeType, result catch |err| { - this.errno = err; - this.system_error = .{ .code = ZigString.init(std.mem.span(@errorName(err))), .syscall = ZigString.init("read") }; + pub fn onRead(this: *ReadFile, completion: *HTTPClient.NetworkThread.Completion, result: AsyncIO.ReadError!usize) void { + this.read_len = @truncate(SizeType, result catch { + this.errno = AsyncIO.asError(-completion.result); + this.system_error = (JSC.Node.Syscall.Error{ + .errno = @intCast(JSC.Node.Syscall.Error.Int, -completion.result), + .syscall = .read, + }).toSystemError(); this.read_len = 0; resume this.read_frame; return; |
