| 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 6295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6306 if (table->KeyAt(i)->IsTheHole()) continue; | 6306 if (table->KeyAt(i)->IsTheHole()) continue; |
| 6307 result->set(i * 2, table->KeyAt(i)); | 6307 result->set(i * 2, table->KeyAt(i)); |
| 6308 result->set(i * 2 + 1, table->ValueAt(i)); | 6308 result->set(i * 2 + 1, table->ValueAt(i)); |
| 6309 } | 6309 } |
| 6310 i::Handle<i::JSArray> result_array = | 6310 i::Handle<i::JSArray> result_array = |
| 6311 factory->NewJSArrayWithElements(result, i::FAST_ELEMENTS, length); | 6311 factory->NewJSArrayWithElements(result, i::FAST_ELEMENTS, length); |
| 6312 return Utils::ToLocal(result_array); | 6312 return Utils::ToLocal(result_array); |
| 6313 } | 6313 } |
| 6314 | 6314 |
| 6315 | 6315 |
| 6316 MaybeLocal<Map> Map::FromArray(Local<Context> context, Local<Array> array) { | |
| 6317 PREPARE_FOR_EXECUTION(context, "Map::FromArray", Map); | |
| 6318 if (array->Length() % 2 != 0) { | |
| 6319 return MaybeLocal<Map>(); | |
| 6320 } | |
| 6321 i::Handle<i::Object> result; | |
| 6322 i::Handle<i::Object> argv[] = {Utils::OpenHandle(*array)}; | |
| 6323 has_pending_exception = | |
| 6324 !i::Execution::Call(isolate, isolate->map_from_array(), | |
| 6325 isolate->factory()->undefined_value(), | |
| 6326 arraysize(argv), argv) | |
| 6327 .ToHandle(&result); | |
| 6328 RETURN_ON_FAILED_EXECUTION(Map); | |
| 6329 RETURN_ESCAPED(Local<Map>::Cast(Utils::ToLocal(result))); | |
| 6330 } | |
| 6331 | |
| 6332 | |
| 6333 Local<v8::Set> v8::Set::New(Isolate* isolate) { | 6316 Local<v8::Set> v8::Set::New(Isolate* isolate) { |
| 6334 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); | 6317 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
| 6335 LOG_API(i_isolate, "Set::New"); | 6318 LOG_API(i_isolate, "Set::New"); |
| 6336 ENTER_V8(i_isolate); | 6319 ENTER_V8(i_isolate); |
| 6337 i::Handle<i::JSSet> obj = i_isolate->factory()->NewJSSet(); | 6320 i::Handle<i::JSSet> obj = i_isolate->factory()->NewJSSet(); |
| 6338 return Utils::ToLocal(obj); | 6321 return Utils::ToLocal(obj); |
| 6339 } | 6322 } |
| 6340 | 6323 |
| 6341 | 6324 |
| 6342 size_t v8::Set::Size() const { | 6325 size_t v8::Set::Size() const { |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6407 if (!key->IsTheHole()) { | 6390 if (!key->IsTheHole()) { |
| 6408 result->set(i, key); | 6391 result->set(i, key); |
| 6409 } | 6392 } |
| 6410 } | 6393 } |
| 6411 i::Handle<i::JSArray> result_array = | 6394 i::Handle<i::JSArray> result_array = |
| 6412 factory->NewJSArrayWithElements(result, i::FAST_ELEMENTS, length); | 6395 factory->NewJSArrayWithElements(result, i::FAST_ELEMENTS, length); |
| 6413 return Utils::ToLocal(result_array); | 6396 return Utils::ToLocal(result_array); |
| 6414 } | 6397 } |
| 6415 | 6398 |
| 6416 | 6399 |
| 6417 MaybeLocal<Set> Set::FromArray(Local<Context> context, Local<Array> array) { | |
| 6418 PREPARE_FOR_EXECUTION(context, "Set::FromArray", Set); | |
| 6419 i::Handle<i::Object> result; | |
| 6420 i::Handle<i::Object> argv[] = {Utils::OpenHandle(*array)}; | |
| 6421 has_pending_exception = | |
| 6422 !i::Execution::Call(isolate, isolate->set_from_array(), | |
| 6423 isolate->factory()->undefined_value(), | |
| 6424 arraysize(argv), argv) | |
| 6425 .ToHandle(&result); | |
| 6426 RETURN_ON_FAILED_EXECUTION(Set); | |
| 6427 RETURN_ESCAPED(Local<Set>::Cast(Utils::ToLocal(result))); | |
| 6428 } | |
| 6429 | |
| 6430 | |
| 6431 bool Value::IsPromise() const { | 6400 bool Value::IsPromise() const { |
| 6432 auto self = Utils::OpenHandle(this); | 6401 auto self = Utils::OpenHandle(this); |
| 6433 return i::Object::IsPromise(self); | 6402 return i::Object::IsPromise(self); |
| 6434 } | 6403 } |
| 6435 | 6404 |
| 6436 | 6405 |
| 6437 MaybeLocal<Promise::Resolver> Promise::Resolver::New(Local<Context> context) { | 6406 MaybeLocal<Promise::Resolver> Promise::Resolver::New(Local<Context> context) { |
| 6438 PREPARE_FOR_EXECUTION(context, "Promise::Resolver::New", Resolver); | 6407 PREPARE_FOR_EXECUTION(context, "Promise::Resolver::New", Resolver); |
| 6439 i::Handle<i::Object> result; | 6408 i::Handle<i::Object> result; |
| 6440 has_pending_exception = | 6409 has_pending_exception = |
| (...skipping 2087 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8528 Address callback_address = | 8497 Address callback_address = |
| 8529 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 8498 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |
| 8530 VMState<EXTERNAL> state(isolate); | 8499 VMState<EXTERNAL> state(isolate); |
| 8531 ExternalCallbackScope call_scope(isolate, callback_address); | 8500 ExternalCallbackScope call_scope(isolate, callback_address); |
| 8532 callback(info); | 8501 callback(info); |
| 8533 } | 8502 } |
| 8534 | 8503 |
| 8535 | 8504 |
| 8536 } // namespace internal | 8505 } // namespace internal |
| 8537 } // namespace v8 | 8506 } // namespace v8 |
| OLD | NEW |