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 2507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2518 return getBoolProperty(this, "isConstructor"); | 2518 return getBoolProperty(this, "isConstructor"); |
2519 } | 2519 } |
2520 | 2520 |
2521 | 2521 |
2522 // --- N a t i v e W e a k M a p --- | 2522 // --- N a t i v e W e a k M a p --- |
2523 | 2523 |
2524 Local<NativeWeakMap> NativeWeakMap::New(Isolate* v8_isolate) { | 2524 Local<NativeWeakMap> NativeWeakMap::New(Isolate* v8_isolate) { |
2525 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate); | 2525 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate); |
2526 ENTER_V8(isolate); | 2526 ENTER_V8(isolate); |
2527 i::Handle<i::JSWeakMap> weakmap = isolate->factory()->NewJSWeakMap(); | 2527 i::Handle<i::JSWeakMap> weakmap = isolate->factory()->NewJSWeakMap(); |
2528 i::Runtime::WeakCollectionInitialize(isolate, weakmap); | 2528 i::JSWeakCollection::Initialize(weakmap, isolate); |
2529 return Utils::NativeWeakMapToLocal(weakmap); | 2529 return Utils::NativeWeakMapToLocal(weakmap); |
2530 } | 2530 } |
2531 | 2531 |
2532 | 2532 |
2533 void NativeWeakMap::Set(Local<Value> v8_key, Local<Value> v8_value) { | 2533 void NativeWeakMap::Set(Local<Value> v8_key, Local<Value> v8_value) { |
2534 i::Handle<i::JSWeakMap> weak_collection = Utils::OpenHandle(this); | 2534 i::Handle<i::JSWeakMap> weak_collection = Utils::OpenHandle(this); |
2535 i::Isolate* isolate = weak_collection->GetIsolate(); | 2535 i::Isolate* isolate = weak_collection->GetIsolate(); |
2536 ENTER_V8(isolate); | 2536 ENTER_V8(isolate); |
2537 i::HandleScope scope(isolate); | 2537 i::HandleScope scope(isolate); |
2538 i::Handle<i::Object> key = Utils::OpenHandle(*v8_key); | 2538 i::Handle<i::Object> key = Utils::OpenHandle(*v8_key); |
2539 i::Handle<i::Object> value = Utils::OpenHandle(*v8_value); | 2539 i::Handle<i::Object> value = Utils::OpenHandle(*v8_value); |
2540 if (!key->IsJSReceiver() && !key->IsSymbol()) { | 2540 if (!key->IsJSReceiver() && !key->IsSymbol()) { |
2541 DCHECK(false); | 2541 DCHECK(false); |
2542 return; | 2542 return; |
2543 } | 2543 } |
2544 i::Handle<i::ObjectHashTable> table( | 2544 i::Handle<i::ObjectHashTable> table( |
2545 i::ObjectHashTable::cast(weak_collection->table())); | 2545 i::ObjectHashTable::cast(weak_collection->table())); |
2546 if (!table->IsKey(*key)) { | 2546 if (!table->IsKey(*key)) { |
2547 DCHECK(false); | 2547 DCHECK(false); |
2548 return; | 2548 return; |
2549 } | 2549 } |
2550 int32_t hash = i::Object::GetOrCreateHash(isolate, key)->value(); | 2550 int32_t hash = i::Object::GetOrCreateHash(isolate, key)->value(); |
2551 i::Runtime::WeakCollectionSet(weak_collection, key, value, hash); | 2551 i::JSWeakCollection::Set(weak_collection, key, value, hash); |
2552 } | 2552 } |
2553 | 2553 |
2554 | 2554 |
2555 Local<Value> NativeWeakMap::Get(Local<Value> v8_key) { | 2555 Local<Value> NativeWeakMap::Get(Local<Value> v8_key) { |
2556 i::Handle<i::JSWeakMap> weak_collection = Utils::OpenHandle(this); | 2556 i::Handle<i::JSWeakMap> weak_collection = Utils::OpenHandle(this); |
2557 i::Isolate* isolate = weak_collection->GetIsolate(); | 2557 i::Isolate* isolate = weak_collection->GetIsolate(); |
2558 ENTER_V8(isolate); | 2558 ENTER_V8(isolate); |
2559 i::Handle<i::Object> key = Utils::OpenHandle(*v8_key); | 2559 i::Handle<i::Object> key = Utils::OpenHandle(*v8_key); |
2560 if (!key->IsJSReceiver() && !key->IsSymbol()) { | 2560 if (!key->IsJSReceiver() && !key->IsSymbol()) { |
2561 DCHECK(false); | 2561 DCHECK(false); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2604 if (!key->IsJSReceiver() && !key->IsSymbol()) { | 2604 if (!key->IsJSReceiver() && !key->IsSymbol()) { |
2605 DCHECK(false); | 2605 DCHECK(false); |
2606 return false; | 2606 return false; |
2607 } | 2607 } |
2608 i::Handle<i::ObjectHashTable> table( | 2608 i::Handle<i::ObjectHashTable> table( |
2609 i::ObjectHashTable::cast(weak_collection->table())); | 2609 i::ObjectHashTable::cast(weak_collection->table())); |
2610 if (!table->IsKey(*key)) { | 2610 if (!table->IsKey(*key)) { |
2611 DCHECK(false); | 2611 DCHECK(false); |
2612 return false; | 2612 return false; |
2613 } | 2613 } |
2614 return i::Runtime::WeakCollectionDelete(weak_collection, key); | 2614 int32_t hash = i::Object::GetOrCreateHash(isolate, key)->value(); |
| 2615 return i::JSWeakCollection::Delete(weak_collection, key, hash); |
2615 } | 2616 } |
2616 | 2617 |
2617 | 2618 |
2618 // --- J S O N --- | 2619 // --- J S O N --- |
2619 | 2620 |
2620 MaybeLocal<Value> JSON::Parse(Isolate* v8_isolate, Local<String> json_string) { | 2621 MaybeLocal<Value> JSON::Parse(Isolate* v8_isolate, Local<String> json_string) { |
2621 auto isolate = reinterpret_cast<i::Isolate*>(v8_isolate); | 2622 auto isolate = reinterpret_cast<i::Isolate*>(v8_isolate); |
2622 PREPARE_FOR_EXECUTION_WITH_ISOLATE(isolate, "JSON::Parse", Value); | 2623 PREPARE_FOR_EXECUTION_WITH_ISOLATE(isolate, "JSON::Parse", Value); |
2623 i::Handle<i::String> string = Utils::OpenHandle(*json_string); | 2624 i::Handle<i::String> string = Utils::OpenHandle(*json_string); |
2624 i::Handle<i::String> source = i::String::Flatten(string); | 2625 i::Handle<i::String> source = i::String::Flatten(string); |
(...skipping 5783 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8408 Address callback_address = | 8409 Address callback_address = |
8409 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 8410 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |
8410 VMState<EXTERNAL> state(isolate); | 8411 VMState<EXTERNAL> state(isolate); |
8411 ExternalCallbackScope call_scope(isolate, callback_address); | 8412 ExternalCallbackScope call_scope(isolate, callback_address); |
8412 callback(info); | 8413 callback(info); |
8413 } | 8414 } |
8414 | 8415 |
8415 | 8416 |
8416 } // namespace internal | 8417 } // namespace internal |
8417 } // namespace v8 | 8418 } // namespace v8 |
OLD | NEW |