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 <stdlib.h> | 5 #include <stdlib.h> |
6 #include <limits> | 6 #include <limits> |
7 | 7 |
8 #include "src/v8.h" | 8 #include "src/v8.h" |
9 | 9 |
10 #include "src/accessors.h" | 10 #include "src/accessors.h" |
(...skipping 601 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
612 HandleScope scope(isolate); | 612 HandleScope scope(isolate); |
613 DCHECK(args.length() == 1); | 613 DCHECK(args.length() == 1); |
614 CONVERT_ARG_HANDLE_CHECKED(Object, name, 0); | 614 CONVERT_ARG_HANDLE_CHECKED(Object, name, 0); |
615 RUNTIME_ASSERT(name->IsString() || name->IsUndefined()); | 615 RUNTIME_ASSERT(name->IsString() || name->IsUndefined()); |
616 Handle<Symbol> symbol = isolate->factory()->NewPrivateOwnSymbol(); | 616 Handle<Symbol> symbol = isolate->factory()->NewPrivateOwnSymbol(); |
617 if (name->IsString()) symbol->set_name(*name); | 617 if (name->IsString()) symbol->set_name(*name); |
618 return *symbol; | 618 return *symbol; |
619 } | 619 } |
620 | 620 |
621 | 621 |
622 RUNTIME_FUNCTION(Runtime_CreateGlobalPrivateSymbol) { | 622 RUNTIME_FUNCTION(Runtime_CreateGlobalPrivateOwnSymbol) { |
623 HandleScope scope(isolate); | 623 HandleScope scope(isolate); |
624 DCHECK(args.length() == 1); | 624 DCHECK(args.length() == 1); |
625 CONVERT_ARG_HANDLE_CHECKED(String, name, 0); | 625 CONVERT_ARG_HANDLE_CHECKED(String, name, 0); |
626 Handle<JSObject> registry = isolate->GetSymbolRegistry(); | 626 Handle<JSObject> registry = isolate->GetSymbolRegistry(); |
627 Handle<String> part = isolate->factory()->private_intern_string(); | 627 Handle<String> part = isolate->factory()->private_intern_string(); |
628 Handle<Object> privates; | 628 Handle<Object> privates; |
629 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( | 629 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( |
630 isolate, privates, Object::GetPropertyOrElement(registry, part)); | 630 isolate, privates, Object::GetPropertyOrElement(registry, part)); |
631 Handle<Object> symbol; | 631 Handle<Object> symbol; |
632 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( | 632 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( |
633 isolate, symbol, Object::GetPropertyOrElement(privates, name)); | 633 isolate, symbol, Object::GetPropertyOrElement(privates, name)); |
634 if (!symbol->IsSymbol()) { | 634 if (!symbol->IsSymbol()) { |
635 DCHECK(symbol->IsUndefined()); | 635 DCHECK(symbol->IsUndefined()); |
636 symbol = isolate->factory()->NewPrivateSymbol(); | 636 symbol = isolate->factory()->NewPrivateSymbol(); |
637 Handle<Symbol>::cast(symbol)->set_name(*name); | 637 Handle<Symbol>::cast(symbol)->set_name(*name); |
| 638 Handle<Symbol>::cast(symbol)->set_is_own(true); |
638 JSObject::SetProperty(Handle<JSObject>::cast(privates), name, symbol, | 639 JSObject::SetProperty(Handle<JSObject>::cast(privates), name, symbol, |
639 STRICT).Assert(); | 640 STRICT).Assert(); |
640 } | 641 } |
641 return *symbol; | 642 return *symbol; |
642 } | 643 } |
643 | 644 |
644 | 645 |
645 RUNTIME_FUNCTION(Runtime_NewSymbolWrapper) { | 646 RUNTIME_FUNCTION(Runtime_NewSymbolWrapper) { |
646 HandleScope scope(isolate); | 647 HandleScope scope(isolate); |
647 DCHECK(args.length() == 1); | 648 DCHECK(args.length() == 1); |
(...skipping 14982 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
15630 } | 15631 } |
15631 return NULL; | 15632 return NULL; |
15632 } | 15633 } |
15633 | 15634 |
15634 | 15635 |
15635 const Runtime::Function* Runtime::FunctionForId(Runtime::FunctionId id) { | 15636 const Runtime::Function* Runtime::FunctionForId(Runtime::FunctionId id) { |
15636 return &(kIntrinsicFunctions[static_cast<int>(id)]); | 15637 return &(kIntrinsicFunctions[static_cast<int>(id)]); |
15637 } | 15638 } |
15638 | 15639 |
15639 } } // namespace v8::internal | 15640 } } // namespace v8::internal |
OLD | NEW |