diff --git a/Sources/JavaScriptKit/FundamentalObjects/JSClosure.swift b/Sources/JavaScriptKit/FundamentalObjects/JSClosure.swift
index c19f3ba8b..ea15c6d28 100644
--- a/Sources/JavaScriptKit/FundamentalObjects/JSClosure.swift
+++ b/Sources/JavaScriptKit/FundamentalObjects/JSClosure.swift
@@ -20,7 +20,7 @@ public class JSOneshotClosure: JSObject, JSClosureProtocol {
         super.init(id: 0)
 
         // 2. Create a new JavaScript function which calls the given Swift function.
-        hostFuncRef = JavaScriptHostFuncRef(bitPattern: Int32(ObjectIdentifier(self).hashValue))
+        hostFuncRef = JavaScriptHostFuncRef(bitPattern: ObjectIdentifier(self))
         id = withExtendedLifetime(JSString(file)) { file in
           _create_function(hostFuncRef, line, file.asInternalJSRef())
         }
@@ -86,7 +86,7 @@ public class JSClosure: JSObject, JSClosureProtocol {
         super.init(id: 0)
 
         // 2. Create a new JavaScript function which calls the given Swift function.
-        hostFuncRef = JavaScriptHostFuncRef(bitPattern: Int32(ObjectIdentifier(self).hashValue))
+        hostFuncRef = JavaScriptHostFuncRef(bitPattern: ObjectIdentifier(self))
         id = withExtendedLifetime(JSString(file)) { file in
           _create_function(hostFuncRef, line, file.asInternalJSRef())
         }
diff --git a/Sources/_CJavaScriptKit/include/_CJavaScriptKit.h b/Sources/_CJavaScriptKit/include/_CJavaScriptKit.h
index 3bac436f4..b60007ed0 100644
--- a/Sources/_CJavaScriptKit/include/_CJavaScriptKit.h
+++ b/Sources/_CJavaScriptKit/include/_CJavaScriptKit.h
@@ -10,7 +10,7 @@
 typedef unsigned int JavaScriptObjectRef;
 /// `JavaScriptHostFuncRef` represents Swift closure that is referenced by JavaScript side.
 /// This value is produced by `JSClosure`.
-typedef unsigned int JavaScriptHostFuncRef;
+typedef uintptr_t JavaScriptHostFuncRef;
 
 /// `JavaScriptValueKind` represents the kind of JavaScript primitive value.
 typedef enum __attribute__((enum_extensibility(closed))) {