diff options
-rw-r--r-- | src/bun.js/bindings/JSBuffer.cpp | 8 | ||||
-rw-r--r-- | src/bun.js/bindings/JSBuffer.h | 2 | ||||
-rw-r--r-- | src/bun.js/modules/BufferModule.h | 6 |
3 files changed, 15 insertions, 1 deletions
diff --git a/src/bun.js/bindings/JSBuffer.cpp b/src/bun.js/bindings/JSBuffer.cpp index b5a88dc10..ab660872d 100644 --- a/src/bun.js/bindings/JSBuffer.cpp +++ b/src/bun.js/bindings/JSBuffer.cpp @@ -379,6 +379,12 @@ static inline JSC::EncodedJSValue jsBufferConstructorFunction_allocUnsafeSlowBod return jsBufferConstructorFunction_allocUnsafeBody(lexicalGlobalObject, callFrame); } +// new SlowBuffer(size) +EncodedJSValue constructSlowBuffer(JSGlobalObject* lexicalGlobalObject, CallFrame* callFrame) +{ + return jsBufferConstructorFunction_allocUnsafeSlowBody(lexicalGlobalObject, callFrame); +} + static inline JSC::EncodedJSValue jsBufferConstructorFunction_byteLengthBody(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame) { auto& vm = JSC::getVM(lexicalGlobalObject); @@ -1430,7 +1436,7 @@ JSC_DEFINE_HOST_FUNCTION(jsBufferConstructorFunction_concat, (JSGlobalObject * l static const HashTableValue JSBufferConstructorTableValues[] = { { "alloc"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t) static_cast<RawNativeFunction>(jsBufferConstructorFunction_alloc), (intptr_t)(3) } }, { "allocUnsafe"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t) static_cast<RawNativeFunction>(jsBufferConstructorFunction_allocUnsafe), (intptr_t)(1) } }, - { "allocUnsafeSlow"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t) static_cast<RawNativeFunction>(jsBufferConstructorFunction_allocUnsafe), (intptr_t)(1) } }, + { "allocUnsafeSlow"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t) static_cast<RawNativeFunction>(jsBufferConstructorFunction_allocUnsafeSlow), (intptr_t)(1) } }, { "byteLength"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t) static_cast<RawNativeFunction>(jsBufferConstructorFunction_byteLength), (intptr_t)(2) } }, { "compare"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t) static_cast<RawNativeFunction>(jsBufferConstructorFunction_compare), (intptr_t)(2) } }, { "concat"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t) static_cast<RawNativeFunction>(jsBufferConstructorFunction_concat), (intptr_t)(2) } }, diff --git a/src/bun.js/bindings/JSBuffer.h b/src/bun.js/bindings/JSBuffer.h index 6d79c1884..4dc7e186a 100644 --- a/src/bun.js/bindings/JSBuffer.h +++ b/src/bun.js/bindings/JSBuffer.h @@ -32,6 +32,8 @@ extern "C" bool JSBuffer__isBuffer(JSC::JSGlobalObject*, JSC::EncodedJSValue); namespace WebCore { +JSC::EncodedJSValue constructSlowBuffer(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); + class WEBCORE_EXPORT JSBuffer final : public JSDOMWrapper<Buffer> { public: using Base = JSDOMWrapper<Buffer>; diff --git a/src/bun.js/modules/BufferModule.h b/src/bun.js/modules/BufferModule.h index 12d4c54c8..9032f0d2e 100644 --- a/src/bun.js/modules/BufferModule.h +++ b/src/bun.js/modules/BufferModule.h @@ -1,4 +1,5 @@ #include "../bindings/ZigGlobalObject.h" +#include "../bindings/JSBuffer.h" #include "JavaScriptCore/JSGlobalObject.h" namespace Zig { @@ -10,6 +11,11 @@ inline void generateBufferSourceCode(JSC::JSGlobalObject* lexicalGlobalObject, J exportNames.append(JSC::Identifier::fromString(vm, "Buffer"_s)); exportValues.append(WebCore::JSBuffer::getConstructor(vm, globalObject)); + auto* slowBuffer = JSC::JSFunction::create(vm, globalObject, 0, "SlowBuffer"_s, WebCore::constructSlowBuffer, ImplementationVisibility::Public, NoIntrinsic, WebCore::constructSlowBuffer); + slowBuffer->putDirect(vm, vm.propertyNames->prototype, WebCore::JSBuffer::prototype(vm, *jsCast<JSDOMGlobalObject*>(lexicalGlobalObject)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum | JSC::PropertyAttribute::DontDelete); + exportNames.append(JSC::Identifier::fromString(vm, "SlowBuffer"_s)); + exportValues.append(slowBuffer); + // substitute after JSBlob is implemented. exportNames.append(JSC::Identifier::fromString(vm, "Blob"_s)); exportValues.append(JSC::jsUndefined()); |