Skip to content

Commit 0640fce

Browse files
committed
fix: update js arg conversions
1 parent af0cd29 commit 0640fce

File tree

3 files changed

+10
-46
lines changed

3 files changed

+10
-46
lines changed

test-app/runtime/src/main/cpp/JsArgConverter.cpp

+5-21
Original file line numberDiff line numberDiff line change
@@ -253,37 +253,25 @@ bool JsArgConverter::ConvertArg(const Local<Value> &arg, int index) {
253253
size_t offset = 0;
254254
size_t length;
255255
uint8_t *data = nullptr;
256-
auto link_with_data = false;
257256
if (jsObject->IsArrayBuffer()) {
258257
auto array = jsObject.As<v8::ArrayBuffer>();
259258
store = array->GetBackingStore();
260259
length = array->ByteLength();
260+
data = static_cast<uint8_t *>(store->Data());
261261
} else if (jsObject->IsArrayBufferView()) {
262262
auto array = jsObject.As<v8::ArrayBufferView>();
263-
264-
if (!array->HasBuffer()) {
265-
266-
length = array->ByteLength();
267-
void *data_ = malloc(length);
268-
array->CopyContents(data_, length);
269-
data = (uint8_t *) data_;
270-
link_with_data = true;
271-
} else {
272-
length = array->ByteLength();
273-
}
274263
offset = array->ByteOffset();
264+
length = array->ByteLength();
275265
store = array->Buffer()->GetBackingStore();
266+
data = static_cast<uint8_t *>(store->Data()) + offset;
276267
bufferCastType = JsArgConverter::GetCastType(array);
277268
} else {
278269
auto array = jsObject.As<v8::TypedArray>();
279270
offset = array->ByteOffset();
280271
store = array->Buffer()->GetBackingStore();
281272
length = array->ByteLength();
282-
bufferCastType = JsArgConverter::GetCastType(array);
283-
}
284-
285-
if (data == nullptr) {
286273
data = static_cast<uint8_t *>(store->Data()) + offset;
274+
bufferCastType = JsArgConverter::GetCastType(array);
287275
}
288276

289277
auto directBuffer = env.NewDirectByteBuffer(
@@ -342,11 +330,7 @@ bool JsArgConverter::ConvertArg(const Local<Value> &arg, int index) {
342330
int id = objectManager->GetOrCreateObjectId(buffer);
343331
auto clazz = env.GetObjectClass(buffer);
344332

345-
if (link_with_data) {
346-
objectManager->LinkWithExtraData(jsObject, id, clazz, data);
347-
} else {
348-
objectManager->Link(jsObject, id, clazz);
349-
}
333+
objectManager->Link(jsObject, id, clazz);
350334

351335
obj = objectManager->GetJavaObjectByJsObject(jsObject);
352336
}

test-app/runtime/src/main/cpp/JsArgToArrayConverter.cpp

+4-19
Original file line numberDiff line numberDiff line change
@@ -256,36 +256,25 @@ bool JsArgToArrayConverter::ConvertArg(Local<Context> context, const Local<Value
256256
size_t offset = 0;
257257
size_t length;
258258
uint8_t *data = nullptr;
259-
auto link_with_data = false;
260259
if (jsObj->IsArrayBuffer()) {
261260
auto array = jsObj.As<v8::ArrayBuffer>();
262261
store = array->GetBackingStore();
263262
length = array->ByteLength();
263+
data = static_cast<uint8_t *>(store->Data());
264264
} else if (jsObj->IsArrayBufferView()) {
265265
auto array = jsObj.As<v8::ArrayBufferView>();
266266

267-
if (!array->HasBuffer()) {
268-
269-
length = array->ByteLength();
270-
void *data_ = malloc(length);
271-
array->CopyContents(data_, length);
272-
data = (uint8_t *) data_;
273-
link_with_data = true;
274-
} else {
275-
length = array->ByteLength();
276-
}
277267
offset = array->ByteOffset();
268+
length = array->ByteLength();
278269
store = array->Buffer()->GetBackingStore();
279270
bufferCastType = JsArgConverter::GetCastType(array);
271+
data = static_cast<uint8_t *>(store->Data()) + offset;
280272
} else {
281273
auto array = jsObj.As<v8::TypedArray>();
282274
offset = array->ByteOffset();
283275
store = array->Buffer()->GetBackingStore();
284276
length = array->ByteLength();
285277
bufferCastType = JsArgConverter::GetCastType(array);
286-
}
287-
288-
if (data == nullptr) {
289278
data = static_cast<uint8_t *>(store->Data()) + offset;
290279
}
291280

@@ -344,11 +333,7 @@ bool JsArgToArrayConverter::ConvertArg(Local<Context> context, const Local<Value
344333

345334
int id = objectManager->GetOrCreateObjectId(buffer);
346335
auto clazz = env.GetObjectClass(buffer);
347-
if (link_with_data) {
348-
objectManager->LinkWithExtraData(jsObj, id, clazz, data);
349-
} else {
350-
objectManager->Link(jsObj, id, clazz);
351-
}
336+
objectManager->Link(jsObj, id, clazz);
352337

353338
obj = objectManager->GetJavaObjectByJsObject(jsObj);
354339
}

test-app/runtime/src/main/cpp/conversions/objects/JSToJavaObjectsConverter.cpp

+1-6
Original file line numberDiff line numberDiff line change
@@ -212,12 +212,7 @@ bool tns::ConvertJavaScriptObject(
212212

213213
int id = objectManager->GetOrCreateObjectId(buffer);
214214
auto clazz = env.GetObjectClass(buffer);
215-
216-
if (link_with_data) {
217-
objectManager->LinkWithExtraData(jsObject, id, clazz, data);
218-
} else {
219-
objectManager->Link(jsObject, id, clazz);
220-
}
215+
objectManager->Link(jsObject, id, clazz);
221216

222217
obj = objectManager->GetJavaObjectByJsObject(jsObject);
223218
}

0 commit comments

Comments
 (0)