| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 6164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6175 | 6175 |
| 6176 void v8::ArrayBuffer::Neuter() { | 6176 void v8::ArrayBuffer::Neuter() { |
| 6177 i::Handle<i::JSArrayBuffer> obj = Utils::OpenHandle(this); | 6177 i::Handle<i::JSArrayBuffer> obj = Utils::OpenHandle(this); |
| 6178 i::Isolate* isolate = obj->GetIsolate(); | 6178 i::Isolate* isolate = obj->GetIsolate(); |
| 6179 ApiCheck(obj->is_external(), | 6179 ApiCheck(obj->is_external(), |
| 6180 "v8::ArrayBuffer::Neuter", | 6180 "v8::ArrayBuffer::Neuter", |
| 6181 "Only externalized ArrayBuffers can be neutered"); | 6181 "Only externalized ArrayBuffers can be neutered"); |
| 6182 LOG_API(obj->GetIsolate(), "v8::ArrayBuffer::Neuter()"); | 6182 LOG_API(obj->GetIsolate(), "v8::ArrayBuffer::Neuter()"); |
| 6183 ENTER_V8(isolate); | 6183 ENTER_V8(isolate); |
| 6184 | 6184 |
| 6185 for (i::Handle<i::Object> array_obj(obj->weak_first_array(), isolate); | 6185 for (i::Handle<i::Object> view_obj(obj->weak_first_view(), isolate); |
| 6186 !array_obj->IsUndefined();) { | 6186 !view_obj->IsUndefined();) { |
| 6187 i::Handle<i::JSTypedArray> typed_array(i::JSTypedArray::cast(*array_obj)); | 6187 i::Handle<i::JSArrayBufferView> view(i::JSArrayBufferView::cast(*view_obj)); |
| 6188 typed_array->Neuter(); | 6188 if (view->IsJSTypedArray()) { |
| 6189 array_obj = i::handle(typed_array->weak_next(), isolate); | 6189 i::JSTypedArray::cast(*view)->Neuter(); |
| 6190 } else if (view->IsJSDataView()) { |
| 6191 i::JSDataView::cast(*view)->Neuter(); |
| 6192 } else { |
| 6193 UNREACHABLE(); |
| 6194 } |
| 6195 view_obj = i::handle(view->weak_next(), isolate); |
| 6190 } | 6196 } |
| 6191 obj->Neuter(); | 6197 obj->Neuter(); |
| 6192 } | 6198 } |
| 6193 | 6199 |
| 6194 | 6200 |
| 6195 size_t v8::ArrayBuffer::ByteLength() const { | 6201 size_t v8::ArrayBuffer::ByteLength() const { |
| 6196 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 6202 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
| 6197 if (IsDeadCheck(isolate, "v8::ArrayBuffer::ByteLength()")) return 0; | 6203 if (IsDeadCheck(isolate, "v8::ArrayBuffer::ByteLength()")) return 0; |
| 6198 i::Handle<i::JSArrayBuffer> obj = Utils::OpenHandle(this); | 6204 i::Handle<i::JSArrayBuffer> obj = Utils::OpenHandle(this); |
| 6199 return static_cast<size_t>(obj->byte_length()->Number()); | 6205 return static_cast<size_t>(obj->byte_length()->Number()); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6279 i::Handle<i::JSTypedArray> obj = | 6285 i::Handle<i::JSTypedArray> obj = |
| 6280 isolate->factory()->NewJSTypedArray(array_type); | 6286 isolate->factory()->NewJSTypedArray(array_type); |
| 6281 i::Handle<i::JSArrayBuffer> buffer = Utils::OpenHandle(*array_buffer); | 6287 i::Handle<i::JSArrayBuffer> buffer = Utils::OpenHandle(*array_buffer); |
| 6282 | 6288 |
| 6283 ASSERT(byte_offset % sizeof(ElementType) == 0); | 6289 ASSERT(byte_offset % sizeof(ElementType) == 0); |
| 6284 ASSERT(byte_offset + length * sizeof(ElementType) <= | 6290 ASSERT(byte_offset + length * sizeof(ElementType) <= |
| 6285 static_cast<size_t>(buffer->byte_length()->Number())); | 6291 static_cast<size_t>(buffer->byte_length()->Number())); |
| 6286 | 6292 |
| 6287 obj->set_buffer(*buffer); | 6293 obj->set_buffer(*buffer); |
| 6288 | 6294 |
| 6289 obj->set_weak_next(buffer->weak_first_array()); | 6295 obj->set_weak_next(buffer->weak_first_view()); |
| 6290 buffer->set_weak_first_array(*obj); | 6296 buffer->set_weak_first_view(*obj); |
| 6291 | 6297 |
| 6292 i::Handle<i::Object> byte_offset_object = isolate->factory()->NewNumber( | 6298 i::Handle<i::Object> byte_offset_object = isolate->factory()->NewNumber( |
| 6293 static_cast<double>(byte_offset)); | 6299 static_cast<double>(byte_offset)); |
| 6294 obj->set_byte_offset(*byte_offset_object); | 6300 obj->set_byte_offset(*byte_offset_object); |
| 6295 | 6301 |
| 6296 i::Handle<i::Object> byte_length_object = isolate->factory()->NewNumber( | 6302 i::Handle<i::Object> byte_length_object = isolate->factory()->NewNumber( |
| 6297 static_cast<double>(length * sizeof(ElementType))); | 6303 static_cast<double>(length * sizeof(ElementType))); |
| 6298 obj->set_byte_length(*byte_length_object); | 6304 obj->set_byte_length(*byte_length_object); |
| 6299 | 6305 |
| 6300 i::Handle<i::Object> length_object = isolate->factory()->NewNumber( | 6306 i::Handle<i::Object> length_object = isolate->factory()->NewNumber( |
| (...skipping 1770 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8071 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); | 8077 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); |
| 8072 Address callback_address = | 8078 Address callback_address = |
| 8073 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 8079 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |
| 8074 VMState<EXTERNAL> state(isolate); | 8080 VMState<EXTERNAL> state(isolate); |
| 8075 ExternalCallbackScope call_scope(isolate, callback_address); | 8081 ExternalCallbackScope call_scope(isolate, callback_address); |
| 8076 return callback(info); | 8082 return callback(info); |
| 8077 } | 8083 } |
| 8078 | 8084 |
| 8079 | 8085 |
| 8080 } } // namespace v8::internal | 8086 } } // namespace v8::internal |
| OLD | NEW |