@@ -89,22 +89,14 @@ static void s_store_deleter(void* data, size_t length, void* deleter_data)
89
89
{
90
90
}
91
91
92
- void * fetch_store_data (std::shared_ptr<v8::BackingStore>& backing_store)
93
- {
94
- auto store = reinterpret_cast <const i::BackingStore*>(backing_store.get ());
95
- if (s_store_deleter == store->type_specific_data_ .deleter .callback )
96
- return store->type_specific_data_ .deleter .data ;
97
- return NULL ;
98
- }
99
-
100
- std::unique_ptr<v8::BackingStore> NewBackingStore (size_t byte_length, void * deleter_data)
92
+ std::unique_ptr<v8::BackingStore> NewBackingStore (size_t byte_length)
101
93
{
102
94
CHECK_LE (byte_length, i::JSArrayBuffer::kMaxByteLength );
103
95
104
96
uint8_t * data = new uint8_t [byte_length + sizeof (i::BackingStore)];
105
97
auto result = new ((i::BackingStore*)data) i::BackingStore (data + sizeof (i::BackingStore), byte_length, byte_length, byte_length,
106
98
i::SharedFlag::kNotShared , i::ResizableFlag::kNotResizable , false , true , false , true , false );
107
- result->type_specific_data_ .deleter = { s_store_deleter, deleter_data };
99
+ result->type_specific_data_ .deleter = { s_store_deleter, NULL };
108
100
109
101
return std::unique_ptr<v8::BackingStore>((v8::BackingStore*)result);
110
102
}
@@ -134,9 +126,7 @@ void* get_instance_pointer(Local<Object> o, uint16_t buffer_type)
134
126
if (instance_type != buffer_type)
135
127
return NULL ;
136
128
137
- v8::Local<v8::ArrayBufferView> arr = o.As <v8::ArrayBufferView>();
138
- std::shared_ptr<v8::BackingStore> store = arr->Buffer ()->GetBackingStore ();
139
- return fetch_store_data (store);
129
+ return o->GetAlignedPointerFromInternalField (0 );
140
130
}
141
131
142
132
return NULL ;
0 commit comments