Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1594)

Side by Side Diff: src/runtime/runtime-symbol.cc

Issue 1149863005: Move hash code from hidden string to a private symbol (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix MIPS Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/arguments.h" 7 #include "src/arguments.h"
8 #include "src/runtime/runtime-utils.h" 8 #include "src/runtime/runtime-utils.h"
9 9
10 namespace v8 { 10 namespace v8 {
(...skipping 19 matching lines...) Expand all
30 if (name->IsString()) symbol->set_name(*name); 30 if (name->IsString()) symbol->set_name(*name);
31 return *symbol; 31 return *symbol;
32 } 32 }
33 33
34 34
35 RUNTIME_FUNCTION(Runtime_CreatePrivateOwnSymbol) { 35 RUNTIME_FUNCTION(Runtime_CreatePrivateOwnSymbol) {
36 HandleScope scope(isolate); 36 HandleScope scope(isolate);
37 DCHECK(args.length() == 1); 37 DCHECK(args.length() == 1);
38 CONVERT_ARG_HANDLE_CHECKED(Object, name, 0); 38 CONVERT_ARG_HANDLE_CHECKED(Object, name, 0);
39 RUNTIME_ASSERT(name->IsString() || name->IsUndefined()); 39 RUNTIME_ASSERT(name->IsString() || name->IsUndefined());
40 Handle<Symbol> symbol = isolate->factory()->NewPrivateOwnSymbol(); 40 Handle<Symbol> symbol = isolate->factory()->NewPrivateOwnSymbol(name);
Toon Verwaest 2015/05/26 09:06:27 return *isolate-> ...
Erik Corry Chromium.org 2015/05/26 09:51:32 Done.
41 if (name->IsString()) symbol->set_name(*name);
42 return *symbol; 41 return *symbol;
43 } 42 }
44 43
45 44
46 RUNTIME_FUNCTION(Runtime_CreateGlobalPrivateOwnSymbol) { 45 RUNTIME_FUNCTION(Runtime_CreateGlobalPrivateOwnSymbol) {
47 HandleScope scope(isolate); 46 HandleScope scope(isolate);
48 DCHECK(args.length() == 1); 47 DCHECK(args.length() == 1);
49 CONVERT_ARG_HANDLE_CHECKED(String, name, 0); 48 CONVERT_ARG_HANDLE_CHECKED(String, name, 0);
50 Handle<JSObject> registry = isolate->GetSymbolRegistry(); 49 Handle<JSObject> registry = isolate->GetSymbolRegistry();
51 Handle<String> part = isolate->factory()->private_intern_string(); 50 Handle<String> part = isolate->factory()->private_intern_string();
52 Handle<Object> privates; 51 Handle<Object> privates;
53 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( 52 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
54 isolate, privates, Object::GetPropertyOrElement(registry, part)); 53 isolate, privates, Object::GetPropertyOrElement(registry, part));
Toon Verwaest 2015/05/26 09:06:27 GetProperty, part is not an element.
Erik Corry Chromium.org 2015/05/26 09:51:32 Done.
55 Handle<Object> symbol; 54 Handle<Object> symbol;
56 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( 55 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
57 isolate, symbol, Object::GetPropertyOrElement(privates, name)); 56 isolate, symbol, Object::GetPropertyOrElement(privates, name));
Toon Verwaest 2015/05/26 09:06:27 Same here. Given that SetProperty is used below, i
Erik Corry Chromium.org 2015/05/26 09:51:32 Done.
58 if (!symbol->IsSymbol()) { 57 if (!symbol->IsSymbol()) {
59 DCHECK(symbol->IsUndefined()); 58 DCHECK(symbol->IsUndefined());
60 symbol = isolate->factory()->NewPrivateSymbol(); 59 symbol = isolate->factory()->NewPrivateOwnSymbol(name);
61 Handle<Symbol>::cast(symbol)->set_name(*name);
62 Handle<Symbol>::cast(symbol)->set_is_own(true);
63 JSObject::SetProperty(Handle<JSObject>::cast(privates), name, symbol, 60 JSObject::SetProperty(Handle<JSObject>::cast(privates), name, symbol,
Toon Verwaest 2015/05/26 09:06:27 AddProperty
Erik Corry Chromium.org 2015/05/26 09:51:32 Done.
64 STRICT).Assert(); 61 STRICT).Assert();
65 } 62 }
66 return *symbol; 63 return *symbol;
67 } 64 }
68 65
69 66
70 RUNTIME_FUNCTION(Runtime_NewSymbolWrapper) { 67 RUNTIME_FUNCTION(Runtime_NewSymbolWrapper) {
71 HandleScope scope(isolate); 68 HandleScope scope(isolate);
72 DCHECK(args.length() == 1); 69 DCHECK(args.length() == 1);
73 CONVERT_ARG_HANDLE_CHECKED(Symbol, symbol, 0); 70 CONVERT_ARG_HANDLE_CHECKED(Symbol, symbol, 0);
(...skipping 17 matching lines...) Expand all
91 88
92 89
93 RUNTIME_FUNCTION(Runtime_SymbolIsPrivate) { 90 RUNTIME_FUNCTION(Runtime_SymbolIsPrivate) {
94 SealHandleScope shs(isolate); 91 SealHandleScope shs(isolate);
95 DCHECK(args.length() == 1); 92 DCHECK(args.length() == 1);
96 CONVERT_ARG_CHECKED(Symbol, symbol, 0); 93 CONVERT_ARG_CHECKED(Symbol, symbol, 0);
97 return isolate->heap()->ToBoolean(symbol->is_private()); 94 return isolate->heap()->ToBoolean(symbol->is_private());
98 } 95 }
99 } // namespace internal 96 } // namespace internal
100 } // namespace v8 97 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698