aboutsummaryrefslogtreecommitdiff
path: root/src/javascript
diff options
context:
space:
mode:
Diffstat (limited to 'src/javascript')
-rw-r--r--src/javascript/jsc/bindings/bindings.cpp14
-rw-r--r--src/javascript/jsc/bindings/exports.zig10
-rw-r--r--src/javascript/jsc/javascript.zig2
-rw-r--r--src/javascript/jsc/test/jest.zig10
-rw-r--r--src/javascript/jsc/webcore/response.zig17
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;