aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-06-04 19:59:22 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-06-04 19:59:22 -0700
commit7dae4968475597bdc4662bba52f6ee3a6cae259f (patch)
tree9120cd1c3072314394a842cc67f169cb7b0440d8
parent92b060c6e29927a67b71504e77f52a374bd53b92 (diff)
downloadbun-7dae4968475597bdc4662bba52f6ee3a6cae259f.tar.gz
bun-7dae4968475597bdc4662bba52f6ee3a6cae259f.tar.zst
bun-7dae4968475597bdc4662bba52f6ee3a6cae259f.zip
wip
-rw-r--r--.vscode/launch.json14
-rw-r--r--src/bun.js/bindings/BunJSCModule.cpp37
-rw-r--r--src/bun.js/bindings/ZigGlobalObject.cpp47
3 files changed, 44 insertions, 54 deletions
diff --git a/.vscode/launch.json b/.vscode/launch.json
index ea8218179..b149b5f94 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -139,6 +139,20 @@
{
"type": "lldb",
"request": "launch",
+ "name": "bun run [Inspect]",
+ "program": "bun-debug",
+ "args": ["--inspect-brk", "${file}"],
+ "cwd": "${fileDirname}",
+ "env": {
+ "FORCE_COLOR": "1",
+ "BUN_DEBUG_QUIET_LOGS": "1"
+ },
+ "initCommands": ["process handle -p false -s false -n false SIGHUP"],
+ "console": "internalConsole"
+ },
+ {
+ "type": "lldb",
+ "request": "launch",
"name": "bun run [file] (gc)",
"program": "bun-debug",
"args": ["run", "${file}"],
diff --git a/src/bun.js/bindings/BunJSCModule.cpp b/src/bun.js/bindings/BunJSCModule.cpp
index 5809a9813..6d6e9dc6f 100644
--- a/src/bun.js/bindings/BunJSCModule.cpp
+++ b/src/bun.js/bindings/BunJSCModule.cpp
@@ -34,6 +34,8 @@
using namespace JSC;
using namespace WTF;
+extern "C" bool JSGlobalObject__startRemoteInspector(JSC::JSGlobalObject* globalObject, const char* host, uint16_t port);
+
JSC_DECLARE_HOST_FUNCTION(functionStartRemoteDebugger);
JSC_DEFINE_HOST_FUNCTION(functionStartRemoteDebugger, (JSGlobalObject * globalObject, CallFrame* callFrame))
{
@@ -45,38 +47,13 @@ JSC_DEFINE_HOST_FUNCTION(functionStartRemoteDebugger, (JSGlobalObject * globalOb
JSC::JSValue hostValue = callFrame->argument(0);
JSC::JSValue portValue = callFrame->argument(1);
- const char* host = defaultHost;
- if (hostValue.isString()) {
-
- auto str = hostValue.toWTFString(globalObject);
- if (!str.isEmpty())
- host = toCString(str).data();
- } else if (!hostValue.isUndefined()) {
- throwVMError(globalObject, scope, createTypeError(globalObject, "host must be a string"_s));
- return JSC::JSValue::encode(JSC::jsUndefined());
- }
-
- uint16_t port = defaultPort;
- if (portValue.isNumber()) {
- auto port_int = portValue.toUInt32(globalObject);
- if (!(port_int > 0 && port_int < 65536)) {
- throwVMError(globalObject, scope, createRangeError(globalObject, "port must be between 0 and 65535"_s));
- return JSC::JSValue::encode(JSC::jsUndefined());
- }
- port = port_int;
- } else if (!portValue.isUndefined()) {
- throwVMError(globalObject, scope, createTypeError(globalObject, "port must be a number between 0 and 65535"_s));
- return JSC::JSValue::encode(JSC::jsUndefined());
- }
- globalObject->setInspectable(true);
- auto& server = Inspector::RemoteInspectorServer::singleton();
- if (!server.start(reinterpret_cast<const char*>(host), port)) {
- throwVMError(globalObject, scope, createError(globalObject, "Failed to start server \""_s + host + ":"_s + port + "\". Is port already in use?"_s));
- return JSC::JSValue::encode(JSC::jsUndefined());
- }
+ bool res = JSGlobalObject__startRemoteInspector(
+ globalObject,
+ hostValue.isUndefinedOrNull() ? defaultHost : hostValue.toWTFString(globalObject).utf8().data(),
+ portValue.isUndefinedOrNull() ? defaultPort : portValue.toUInt32(globalObject));
- RELEASE_AND_RETURN(scope, JSC::JSValue::encode(JSC::jsUndefined()));
+ RELEASE_AND_RETURN(scope, JSC::JSValue::encode(jsBoolean(res)));
#else
auto& vm = globalObject->vm();
auto scope = DECLARE_THROW_SCOPE(vm);
diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp
index f14fed530..237e789e8 100644
--- a/src/bun.js/bindings/ZigGlobalObject.cpp
+++ b/src/bun.js/bindings/ZigGlobalObject.cpp
@@ -240,6 +240,29 @@ extern "C" void JSCInitialize(const char* envp[], size_t envc, void (*onCrash)(c
}
}
+extern "C" bool JSGlobalObject__startRemoteInspector(Zig::GlobalObject* globalObject, const char* host, uint16_t port)
+{
+#if !ENABLE(REMOTE_INSPECTOR)
+ return false;
+#else
+ globalObject->setInspectable(true);
+ bool didSucceed = false;
+
+ // This function calls immediately.
+ auto inspector = BunInspector::startWebSocketServer(
+ *globalObject->scriptExecutionContext(),
+ WTF::String::fromUTF8(host),
+ port, [port, &didSucceed](RefPtr<BunInspector> inspector, bool success) {
+ didSucceed = success;
+
+ if (success) {
+ inspector->ref();
+ }
+ });
+ return didSucceed;
+#endif
+}
+
extern "C" void* Bun__getVM();
extern "C" JSC__JSGlobalObject* Zig__GlobalObject__create(JSClassRef* globalObjectClass, int count,
@@ -261,7 +284,6 @@ extern "C" JSC__JSGlobalObject* Zig__GlobalObject__create(JSClassRef* globalObje
if (count > 0) {
globalObject->installAPIGlobals(globalObjectClass, count, vm);
}
-
JSC::gcProtect(globalObject);
vm.ref();
return globalObject;
@@ -3760,29 +3782,6 @@ void GlobalObject::installAPIGlobals(JSClassRef* globals, int count, JSC::VM& vm
extraStaticGlobals.releaseBuffer();
}
-extern "C" bool JSGlobalObject__startRemoteInspector(Zig::GlobalObject* globalObject, unsigned char* host, uint16_t port)
-{
-#if !ENABLE(REMOTE_INSPECTOR)
- return false;
-#else
- globalObject->setInspectable(true);
- bool didSucceed = false;
-
- // This function calls immediately.
- auto inspector = BunInspector::startWebSocketServer(
- *globalObject->scriptExecutionContext(),
- WTF::String::fromUTF8(host),
- port, [port, &didSucceed](RefPtr<BunInspector> inspector, bool success) {
- didSucceed = success;
-
- if (success) {
- inspector->ref();
- }
- });
- return didSucceed;
-#endif
-}
-
template<typename Visitor>
void GlobalObject::visitChildrenImpl(JSCell* cell, Visitor& visitor)
{