Index: src/api.cc |
diff --git a/src/api.cc b/src/api.cc |
index 553cf485d46090491ce302cbc4210856188fe3ca..cbeb670039c2e76a8c069d9d3cb0520fb3774ac2 100644 |
--- a/src/api.cc |
+++ b/src/api.cc |
@@ -5558,6 +5558,25 @@ void v8::Object::SetAlignedPointerInInternalField(int index, void* value) { |
DCHECK_EQ(value, GetAlignedPointerFromInternalField(index)); |
} |
+void v8::Object::SetAlignedPointerInInternalFields(int argc, int indices[], |
+ void* values[]) { |
+ i::Handle<i::JSReceiver> obj = Utils::OpenHandle(this); |
+ const char* location = "v8::Object::SetAlignedPointerInInternalFields()"; |
+ i::DisallowHeapAllocation no_gc; |
+ i::JSObject* object = i::JSObject::cast(*obj); |
+ int nof_internal_fields = jobject->GetInternalFieldCount(); |
+ for (int i = 0; i < argc; i++) { |
+ int index = indices[i]; |
+ if (!Utils::ApiCheck( |
+ index < nof_internal_fields, |
+ location, "Internal field out of bounds") { |
+ return; |
+ } |
+ void* value = values[i]; |
+ object->SetInternalField(index, EncodeAlignedAsSmi(value, location)); |
+ DCHECK_EQ(value, GetAlignedPointerFromInternalField(index)); |
+ } |
+} |
static void* ExternalValue(i::Object* obj) { |
// Obscure semantics for undefined, but somehow checked in our unit tests... |