OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/api.h" | 5 #include "src/api.h" |
6 | 6 |
7 #include <string.h> // For memcpy, strlen. | 7 #include <string.h> // For memcpy, strlen. |
8 #ifdef V8_USE_ADDRESS_SANITIZER | 8 #ifdef V8_USE_ADDRESS_SANITIZER |
9 #include <sanitizer/asan_interface.h> | 9 #include <sanitizer/asan_interface.h> |
10 #endif // V8_USE_ADDRESS_SANITIZER | 10 #endif // V8_USE_ADDRESS_SANITIZER |
(...skipping 3030 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3041 | 3041 |
3042 void v8::Promise::Resolver::CheckCast(Value* that) { | 3042 void v8::Promise::Resolver::CheckCast(Value* that) { |
3043 Utils::ApiCheck(that->IsPromise(), | 3043 Utils::ApiCheck(that->IsPromise(), |
3044 "v8::Promise::Resolver::Cast()", | 3044 "v8::Promise::Resolver::Cast()", |
3045 "Could not convert to promise resolver"); | 3045 "Could not convert to promise resolver"); |
3046 } | 3046 } |
3047 | 3047 |
3048 | 3048 |
3049 void v8::ArrayBuffer::CheckCast(Value* that) { | 3049 void v8::ArrayBuffer::CheckCast(Value* that) { |
3050 i::Handle<i::Object> obj = Utils::OpenHandle(that); | 3050 i::Handle<i::Object> obj = Utils::OpenHandle(that); |
3051 Utils::ApiCheck(obj->IsJSArrayBuffer(), | 3051 Utils::ApiCheck( |
3052 "v8::ArrayBuffer::Cast()", | 3052 obj->IsJSArrayBuffer() && !i::JSArrayBuffer::cast(*obj)->is_shared(), |
3053 "Could not convert to ArrayBuffer"); | 3053 "v8::ArrayBuffer::Cast()", "Could not convert to ArrayBuffer"); |
3054 } | 3054 } |
3055 | 3055 |
3056 | 3056 |
3057 void v8::ArrayBufferView::CheckCast(Value* that) { | 3057 void v8::ArrayBufferView::CheckCast(Value* that) { |
3058 i::Handle<i::Object> obj = Utils::OpenHandle(that); | 3058 i::Handle<i::Object> obj = Utils::OpenHandle(that); |
3059 Utils::ApiCheck(obj->IsJSArrayBufferView(), | 3059 Utils::ApiCheck(obj->IsJSArrayBufferView(), |
3060 "v8::ArrayBufferView::Cast()", | 3060 "v8::ArrayBufferView::Cast()", |
3061 "Could not convert to ArrayBufferView"); | 3061 "Could not convert to ArrayBufferView"); |
3062 } | 3062 } |
3063 | 3063 |
3064 | 3064 |
3065 void v8::TypedArray::CheckCast(Value* that) { | 3065 void v8::TypedArray::CheckCast(Value* that) { |
3066 i::Handle<i::Object> obj = Utils::OpenHandle(that); | 3066 i::Handle<i::Object> obj = Utils::OpenHandle(that); |
3067 Utils::ApiCheck(obj->IsJSTypedArray(), | 3067 Utils::ApiCheck( |
3068 "v8::TypedArray::Cast()", | 3068 obj->IsJSTypedArray() && !i::JSTypedArray::cast(*obj)->is_shared(), |
3069 "Could not convert to TypedArray"); | 3069 "v8::TypedArray::Cast()", "Could not convert to TypedArray"); |
3070 } | 3070 } |
3071 | 3071 |
3072 | 3072 |
3073 #define CHECK_TYPED_ARRAY_CAST(Type, typeName, TYPE, ctype, size) \ | 3073 #define CHECK_TYPED_ARRAY_CAST(Type, typeName, TYPE, ctype, size) \ |
3074 void v8::Type##Array::CheckCast(Value* that) { \ | 3074 void v8::Type##Array::CheckCast(Value* that) { \ |
3075 i::Handle<i::Object> obj = Utils::OpenHandle(that); \ | 3075 i::Handle<i::Object> obj = Utils::OpenHandle(that); \ |
3076 Utils::ApiCheck(obj->IsJSTypedArray() && \ | 3076 Utils::ApiCheck( \ |
3077 i::JSTypedArray::cast(*obj)->type() == \ | 3077 obj->IsJSTypedArray() && \ |
3078 kExternal##Type##Array, \ | 3078 i::JSTypedArray::cast(*obj)->type() == kExternal##Type##Array && \ |
3079 "v8::" #Type "Array::Cast()", \ | 3079 !i::JSTypedArray::cast(*obj)->is_shared(), \ |
3080 "Could not convert to " #Type "Array"); \ | 3080 "v8::" #Type "Array::Cast()", "Could not convert to " #Type "Array"); \ |
3081 } | 3081 } |
3082 | 3082 |
3083 | 3083 |
3084 TYPED_ARRAYS(CHECK_TYPED_ARRAY_CAST) | 3084 TYPED_ARRAYS(CHECK_TYPED_ARRAY_CAST) |
3085 | 3085 |
3086 #undef CHECK_TYPED_ARRAY_CAST | 3086 #undef CHECK_TYPED_ARRAY_CAST |
3087 | 3087 |
3088 | 3088 |
3089 void v8::DataView::CheckCast(Value* that) { | 3089 void v8::DataView::CheckCast(Value* that) { |
3090 i::Handle<i::Object> obj = Utils::OpenHandle(that); | 3090 i::Handle<i::Object> obj = Utils::OpenHandle(that); |
3091 Utils::ApiCheck(obj->IsJSDataView(), | 3091 Utils::ApiCheck(obj->IsJSDataView(), |
3092 "v8::DataView::Cast()", | 3092 "v8::DataView::Cast()", |
3093 "Could not convert to DataView"); | 3093 "Could not convert to DataView"); |
3094 } | 3094 } |
3095 | 3095 |
3096 | 3096 |
| 3097 void v8::SharedArrayBuffer::CheckCast(Value* that) { |
| 3098 i::Handle<i::Object> obj = Utils::OpenHandle(that); |
| 3099 Utils::ApiCheck( |
| 3100 obj->IsJSArrayBuffer() && i::JSArrayBuffer::cast(*obj)->is_shared(), |
| 3101 "v8::SharedArrayBuffer::Cast()", |
| 3102 "Could not convert to SharedArrayBuffer"); |
| 3103 } |
| 3104 |
| 3105 |
| 3106 void v8::SharedTypedArray::CheckCast(Value* that) { |
| 3107 i::Handle<i::Object> obj = Utils::OpenHandle(that); |
| 3108 Utils::ApiCheck( |
| 3109 obj->IsJSTypedArray() && i::JSTypedArray::cast(*obj)->is_shared(), |
| 3110 "v8::SharedTypedArray::Cast()", "Could not convert to SharedTypedArray"); |
| 3111 } |
| 3112 |
| 3113 |
| 3114 #define CHECK_SHARED_TYPED_ARRAY_CAST(Type, typeName, TYPE, ctype, size) \ |
| 3115 void v8::Shared##Type##Array::CheckCast(Value* that) { \ |
| 3116 i::Handle<i::Object> obj = Utils::OpenHandle(that); \ |
| 3117 Utils::ApiCheck( \ |
| 3118 obj->IsJSTypedArray() && \ |
| 3119 i::JSTypedArray::cast(*obj)->type() == kExternal##Type##Array && \ |
| 3120 i::JSTypedArray::cast(*obj)->is_shared(), \ |
| 3121 "v8::Shared" #Type "Array::Cast()", \ |
| 3122 "Could not convert to Shared" #Type "Array"); \ |
| 3123 } |
| 3124 |
| 3125 |
| 3126 TYPED_ARRAYS(CHECK_SHARED_TYPED_ARRAY_CAST) |
| 3127 |
| 3128 #undef CHECK_SHARED_TYPED_ARRAY_CAST |
| 3129 |
| 3130 |
3097 void v8::Date::CheckCast(v8::Value* that) { | 3131 void v8::Date::CheckCast(v8::Value* that) { |
3098 i::Handle<i::Object> obj = Utils::OpenHandle(that); | 3132 i::Handle<i::Object> obj = Utils::OpenHandle(that); |
3099 i::Isolate* isolate = NULL; | 3133 i::Isolate* isolate = NULL; |
3100 if (obj->IsHeapObject()) isolate = i::HeapObject::cast(*obj)->GetIsolate(); | 3134 if (obj->IsHeapObject()) isolate = i::HeapObject::cast(*obj)->GetIsolate(); |
3101 Utils::ApiCheck(isolate != NULL && | 3135 Utils::ApiCheck(isolate != NULL && |
3102 obj->HasSpecificClassOf(isolate->heap()->Date_string()), | 3136 obj->HasSpecificClassOf(isolate->heap()->Date_string()), |
3103 "v8::Date::Cast()", | 3137 "v8::Date::Cast()", |
3104 "Could not convert to date"); | 3138 "Could not convert to date"); |
3105 } | 3139 } |
3106 | 3140 |
(...skipping 2314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5421 | 5455 |
5422 void v8::V8::SetArrayBufferAllocator( | 5456 void v8::V8::SetArrayBufferAllocator( |
5423 ArrayBuffer::Allocator* allocator) { | 5457 ArrayBuffer::Allocator* allocator) { |
5424 if (!Utils::ApiCheck(i::V8::ArrayBufferAllocator() == NULL, | 5458 if (!Utils::ApiCheck(i::V8::ArrayBufferAllocator() == NULL, |
5425 "v8::V8::SetArrayBufferAllocator", | 5459 "v8::V8::SetArrayBufferAllocator", |
5426 "ArrayBufferAllocator might only be set once")) | 5460 "ArrayBufferAllocator might only be set once")) |
5427 return; | 5461 return; |
5428 i::V8::SetArrayBufferAllocator(allocator); | 5462 i::V8::SetArrayBufferAllocator(allocator); |
5429 } | 5463 } |
5430 | 5464 |
| 5465 void v8::V8::SetSharedArrayBufferAllocator( |
| 5466 SharedArrayBuffer::Allocator* allocator) { |
| 5467 if (!Utils::ApiCheck(i::V8::SharedArrayBufferAllocator() == NULL, |
| 5468 "v8::V8::SetSharedArrayBufferAllocator", |
| 5469 "SharedArrayBufferAllocator might only be set once")) |
| 5470 return; |
| 5471 i::V8::SetSharedArrayBufferAllocator(allocator); |
| 5472 } |
| 5473 |
5431 | 5474 |
5432 bool v8::V8::Dispose() { | 5475 bool v8::V8::Dispose() { |
5433 i::V8::TearDown(); | 5476 i::V8::TearDown(); |
5434 #ifdef V8_USE_EXTERNAL_STARTUP_DATA | 5477 #ifdef V8_USE_EXTERNAL_STARTUP_DATA |
5435 i::DisposeNatives(); | 5478 i::DisposeNatives(); |
5436 #endif | 5479 #endif |
5437 return true; | 5480 return true; |
5438 } | 5481 } |
5439 | 5482 |
5440 | 5483 |
(...skipping 940 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6381 i::Handle<i::JSArrayBuffer> obj = Utils::OpenHandle(this); | 6424 i::Handle<i::JSArrayBuffer> obj = Utils::OpenHandle(this); |
6382 return static_cast<size_t>(obj->byte_length()->Number()); | 6425 return static_cast<size_t>(obj->byte_length()->Number()); |
6383 } | 6426 } |
6384 | 6427 |
6385 | 6428 |
6386 Local<ArrayBuffer> v8::ArrayBuffer::New(Isolate* isolate, size_t byte_length) { | 6429 Local<ArrayBuffer> v8::ArrayBuffer::New(Isolate* isolate, size_t byte_length) { |
6387 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); | 6430 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
6388 LOG_API(i_isolate, "v8::ArrayBuffer::New(size_t)"); | 6431 LOG_API(i_isolate, "v8::ArrayBuffer::New(size_t)"); |
6389 ENTER_V8(i_isolate); | 6432 ENTER_V8(i_isolate); |
6390 i::Handle<i::JSArrayBuffer> obj = | 6433 i::Handle<i::JSArrayBuffer> obj = |
6391 i_isolate->factory()->NewJSArrayBuffer(); | 6434 i_isolate->factory()->NewJSArrayBuffer(false); |
6392 i::Runtime::SetupArrayBufferAllocatingData(i_isolate, obj, byte_length); | 6435 i::Runtime::SetupArrayBufferAllocatingData(i_isolate, obj, byte_length); |
6393 return Utils::ToLocal(obj); | 6436 return Utils::ToLocal(obj); |
6394 } | 6437 } |
6395 | 6438 |
6396 | 6439 |
6397 Local<ArrayBuffer> v8::ArrayBuffer::New(Isolate* isolate, void* data, | 6440 Local<ArrayBuffer> v8::ArrayBuffer::New(Isolate* isolate, void* data, |
6398 size_t byte_length) { | 6441 size_t byte_length) { |
6399 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); | 6442 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
6400 LOG_API(i_isolate, "v8::ArrayBuffer::New(void*, size_t)"); | 6443 LOG_API(i_isolate, "v8::ArrayBuffer::New(void*, size_t)"); |
6401 ENTER_V8(i_isolate); | 6444 ENTER_V8(i_isolate); |
6402 i::Handle<i::JSArrayBuffer> obj = | 6445 i::Handle<i::JSArrayBuffer> obj = |
6403 i_isolate->factory()->NewJSArrayBuffer(); | 6446 i_isolate->factory()->NewJSArrayBuffer(false); |
6404 i::Runtime::SetupArrayBuffer(i_isolate, obj, true, data, byte_length); | 6447 i::Runtime::SetupArrayBuffer(i_isolate, obj, true, data, byte_length); |
6405 return Utils::ToLocal(obj); | 6448 return Utils::ToLocal(obj); |
6406 } | 6449 } |
6407 | 6450 |
6408 | 6451 |
6409 Local<ArrayBuffer> v8::ArrayBufferView::Buffer() { | 6452 Local<ArrayBuffer> v8::ArrayBufferView::Buffer() { |
6410 i::Handle<i::JSArrayBufferView> obj = Utils::OpenHandle(this); | 6453 i::Handle<i::JSArrayBufferView> obj = Utils::OpenHandle(this); |
6411 i::Handle<i::JSArrayBuffer> buffer; | 6454 i::Handle<i::JSArrayBuffer> buffer; |
6412 if (obj->IsJSDataView()) { | 6455 if (obj->IsJSDataView()) { |
6413 i::Handle<i::JSDataView> data_view(i::JSDataView::cast(*obj)); | 6456 i::Handle<i::JSDataView> data_view(i::JSDataView::cast(*obj)); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6480 "v8::" #Type "Array::New(Handle<ArrayBuffer>, size_t, size_t)"); \ | 6523 "v8::" #Type "Array::New(Handle<ArrayBuffer>, size_t, size_t)"); \ |
6481 ENTER_V8(isolate); \ | 6524 ENTER_V8(isolate); \ |
6482 if (!Utils::ApiCheck(length <= static_cast<size_t>(i::Smi::kMaxValue), \ | 6525 if (!Utils::ApiCheck(length <= static_cast<size_t>(i::Smi::kMaxValue), \ |
6483 "v8::" #Type \ | 6526 "v8::" #Type \ |
6484 "Array::New(Handle<ArrayBuffer>, size_t, size_t)", \ | 6527 "Array::New(Handle<ArrayBuffer>, size_t, size_t)", \ |
6485 "length exceeds max allowed value")) { \ | 6528 "length exceeds max allowed value")) { \ |
6486 return Local<Type##Array>(); \ | 6529 return Local<Type##Array>(); \ |
6487 } \ | 6530 } \ |
6488 i::Handle<i::JSArrayBuffer> buffer = Utils::OpenHandle(*array_buffer); \ | 6531 i::Handle<i::JSArrayBuffer> buffer = Utils::OpenHandle(*array_buffer); \ |
6489 i::Handle<i::JSTypedArray> obj = isolate->factory()->NewJSTypedArray( \ | 6532 i::Handle<i::JSTypedArray> obj = isolate->factory()->NewJSTypedArray( \ |
6490 v8::kExternal##Type##Array, buffer, byte_offset, length); \ | 6533 v8::kExternal##Type##Array, buffer, byte_offset, length, false); \ |
6491 return Utils::ToLocal##Type##Array(obj); \ | 6534 return Utils::ToLocal##Type##Array(obj); \ |
6492 } | 6535 } |
6493 | 6536 |
6494 | 6537 |
6495 TYPED_ARRAYS(TYPED_ARRAY_NEW) | 6538 TYPED_ARRAYS(TYPED_ARRAY_NEW) |
6496 #undef TYPED_ARRAY_NEW | 6539 #undef TYPED_ARRAY_NEW |
6497 | 6540 |
6498 Local<DataView> DataView::New(Handle<ArrayBuffer> array_buffer, | 6541 Local<DataView> DataView::New(Handle<ArrayBuffer> array_buffer, |
6499 size_t byte_offset, size_t byte_length) { | 6542 size_t byte_offset, size_t byte_length) { |
6500 i::Handle<i::JSArrayBuffer> buffer = Utils::OpenHandle(*array_buffer); | 6543 i::Handle<i::JSArrayBuffer> buffer = Utils::OpenHandle(*array_buffer); |
6501 i::Isolate* isolate = buffer->GetIsolate(); | 6544 i::Isolate* isolate = buffer->GetIsolate(); |
6502 LOG_API(isolate, "v8::DataView::New(void*, size_t, size_t)"); | 6545 LOG_API(isolate, "v8::DataView::New(void*, size_t, size_t)"); |
6503 ENTER_V8(isolate); | 6546 ENTER_V8(isolate); |
6504 i::Handle<i::JSDataView> obj = | 6547 i::Handle<i::JSDataView> obj = |
6505 isolate->factory()->NewJSDataView(buffer, byte_offset, byte_length); | 6548 isolate->factory()->NewJSDataView(buffer, byte_offset, byte_length); |
6506 return Utils::ToLocal(obj); | 6549 return Utils::ToLocal(obj); |
6507 } | 6550 } |
6508 | 6551 |
6509 | 6552 |
| 6553 bool v8::SharedArrayBuffer::IsExternal() const { |
| 6554 return Utils::OpenHandle(this)->is_external(); |
| 6555 } |
| 6556 |
| 6557 |
| 6558 v8::SharedArrayBuffer::Contents v8::SharedArrayBuffer::Externalize() { |
| 6559 i::Handle<i::JSArrayBuffer> obj = Utils::OpenHandle(this); |
| 6560 Utils::ApiCheck(!obj->is_external(), "v8::SharedArrayBuffer::Externalize", |
| 6561 "SharedArrayBuffer already externalized"); |
| 6562 obj->set_is_external(true); |
| 6563 size_t byte_length = static_cast<size_t>(obj->byte_length()->Number()); |
| 6564 Contents contents; |
| 6565 contents.data_ = obj->backing_store(); |
| 6566 contents.byte_length_ = byte_length; |
| 6567 return contents; |
| 6568 } |
| 6569 |
| 6570 |
| 6571 size_t v8::SharedArrayBuffer::ByteLength() const { |
| 6572 i::Handle<i::JSArrayBuffer> obj = Utils::OpenHandle(this); |
| 6573 return static_cast<size_t>(obj->byte_length()->Number()); |
| 6574 } |
| 6575 |
| 6576 |
| 6577 Local<SharedArrayBuffer> v8::SharedArrayBuffer::New(Isolate* isolate, |
| 6578 size_t byte_length) { |
| 6579 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
| 6580 LOG_API(i_isolate, "v8::SharedArrayBuffer::New(size_t)"); |
| 6581 ENTER_V8(i_isolate); |
| 6582 i::Handle<i::JSArrayBuffer> obj = |
| 6583 i_isolate->factory()->NewJSArrayBuffer(true); |
| 6584 i::Runtime::SetupArrayBufferAllocatingData(i_isolate, obj, byte_length, true, |
| 6585 true); |
| 6586 return Utils::ToLocalShared(obj); |
| 6587 } |
| 6588 |
| 6589 |
| 6590 Local<SharedArrayBuffer> v8::SharedArrayBuffer::New(Isolate* isolate, |
| 6591 void* data, |
| 6592 size_t byte_length) { |
| 6593 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
| 6594 LOG_API(i_isolate, "v8::SharedArrayBuffer::New(void*, size_t)"); |
| 6595 ENTER_V8(i_isolate); |
| 6596 i::Handle<i::JSArrayBuffer> obj = |
| 6597 i_isolate->factory()->NewJSArrayBuffer(true); |
| 6598 i::Runtime::SetupArrayBuffer(i_isolate, obj, true, data, byte_length, true); |
| 6599 return Utils::ToLocalShared(obj); |
| 6600 } |
| 6601 |
| 6602 |
| 6603 Local<SharedArrayBuffer> v8::SharedTypedArray::Buffer() { |
| 6604 i::Handle<i::JSTypedArray> obj = Utils::OpenHandle(this); |
| 6605 i::Handle<i::JSArrayBuffer> buffer = i::JSTypedArray::cast(*obj)->GetBuffer(); |
| 6606 return Utils::ToLocalShared(buffer); |
| 6607 } |
| 6608 |
| 6609 |
| 6610 size_t v8::SharedTypedArray::ByteOffset() { |
| 6611 i::Handle<i::JSTypedArray> obj = Utils::OpenHandle(this); |
| 6612 return static_cast<size_t>(obj->byte_offset()->Number()); |
| 6613 } |
| 6614 |
| 6615 |
| 6616 size_t v8::SharedTypedArray::ByteLength() { |
| 6617 i::Handle<i::JSTypedArray> obj = Utils::OpenHandle(this); |
| 6618 return static_cast<size_t>(obj->byte_length()->Number()); |
| 6619 } |
| 6620 |
| 6621 |
| 6622 size_t v8::SharedTypedArray::Length() { |
| 6623 i::Handle<i::JSTypedArray> obj = Utils::OpenHandle(this); |
| 6624 return static_cast<size_t>(obj->length()->Number()); |
| 6625 } |
| 6626 |
| 6627 |
| 6628 #define SHARED_TYPED_ARRAY_NEW(Type, type, TYPE, ctype, size) \ |
| 6629 Local<Shared##Type##Array> Shared##Type##Array::New( \ |
| 6630 Handle<SharedArrayBuffer> array_buffer, size_t byte_offset, \ |
| 6631 size_t length) { \ |
| 6632 i::Isolate* isolate = Utils::OpenHandle(*array_buffer)->GetIsolate(); \ |
| 6633 LOG_API(isolate, "v8::Shared" #Type \ |
| 6634 "Array::New(Handle<SharedArrayBuffer>, size_t, size_t)"); \ |
| 6635 ENTER_V8(isolate); \ |
| 6636 if (!Utils::ApiCheck( \ |
| 6637 length <= static_cast<size_t>(i::Smi::kMaxValue), \ |
| 6638 "v8::Shared" #Type \ |
| 6639 "Array::New(Handle<SharedArrayBuffer>, size_t, size_t)", \ |
| 6640 "length exceeds max allowed value")) { \ |
| 6641 return Local<Shared##Type##Array>(); \ |
| 6642 } \ |
| 6643 i::Handle<i::JSArrayBuffer> buffer = Utils::OpenHandle(*array_buffer); \ |
| 6644 i::Handle<i::JSTypedArray> obj = isolate->factory()->NewJSTypedArray( \ |
| 6645 v8::kExternal##Type##Array, buffer, byte_offset, length, true); \ |
| 6646 return Utils::ToLocalShared##Type##Array(obj); \ |
| 6647 } |
| 6648 |
| 6649 |
| 6650 TYPED_ARRAYS(SHARED_TYPED_ARRAY_NEW) |
| 6651 #undef SHARED_TYPED_ARRAY_NEW |
| 6652 |
| 6653 |
6510 Local<Symbol> v8::Symbol::New(Isolate* isolate, Local<String> name) { | 6654 Local<Symbol> v8::Symbol::New(Isolate* isolate, Local<String> name) { |
6511 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); | 6655 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
6512 LOG_API(i_isolate, "Symbol::New()"); | 6656 LOG_API(i_isolate, "Symbol::New()"); |
6513 ENTER_V8(i_isolate); | 6657 ENTER_V8(i_isolate); |
6514 i::Handle<i::Symbol> result = i_isolate->factory()->NewSymbol(); | 6658 i::Handle<i::Symbol> result = i_isolate->factory()->NewSymbol(); |
6515 if (!name.IsEmpty()) result->set_name(*Utils::OpenHandle(*name)); | 6659 if (!name.IsEmpty()) result->set_name(*Utils::OpenHandle(*name)); |
6516 return Utils::ToLocal(result); | 6660 return Utils::ToLocal(result); |
6517 } | 6661 } |
6518 | 6662 |
6519 | 6663 |
(...skipping 1563 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8083 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); | 8227 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); |
8084 Address callback_address = | 8228 Address callback_address = |
8085 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 8229 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |
8086 VMState<EXTERNAL> state(isolate); | 8230 VMState<EXTERNAL> state(isolate); |
8087 ExternalCallbackScope call_scope(isolate, callback_address); | 8231 ExternalCallbackScope call_scope(isolate, callback_address); |
8088 callback(info); | 8232 callback(info); |
8089 } | 8233 } |
8090 | 8234 |
8091 | 8235 |
8092 } } // namespace v8::internal | 8236 } } // namespace v8::internal |
OLD | NEW |