Revision: 23252
Author: [email protected]
Date: Wed Aug 20 19:21:56 2014 UTC
Log: Make all global private symbols own symbols.
[email protected], [email protected], [email protected],
[email protected]
Review URL: https://codereview.chromium.org/486763002
http://code.google.com/p/v8/source/detail?r=23252
Added:
/branches/bleeding_edge/test/mjsunit/runtime-gen/createglobalprivateownsymbol.js
Deleted:
/branches/bleeding_edge/test/mjsunit/runtime-gen/createglobalprivatesymbol.js
Modified:
/branches/bleeding_edge/src/array-iterator.js
/branches/bleeding_edge/src/macros.py
/branches/bleeding_edge/src/promise.js
/branches/bleeding_edge/src/runtime.cc
/branches/bleeding_edge/src/runtime.h
/branches/bleeding_edge/src/string-iterator.js
=======================================
--- /dev/null
+++
/branches/bleeding_edge/test/mjsunit/runtime-gen/createglobalprivateownsymbol.js
Wed Aug 20 19:21:56 2014 UTC
@@ -0,0 +1,5 @@
+// Copyright 2014 the V8 project authors. All rights reserved.
+// AUTO-GENERATED BY tools/generate-runtime-tests.py, DO NOT MODIFY
+// Flags: --allow-natives-syntax --harmony --harmony-proxies
+var _name = "foo";
+%CreateGlobalPrivateOwnSymbol(_name);
=======================================
---
/branches/bleeding_edge/test/mjsunit/runtime-gen/createglobalprivatesymbol.js
Fri Aug 8 09:58:19 2014 UTC
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright 2014 the V8 project authors. All rights reserved.
-// AUTO-GENERATED BY tools/generate-runtime-tests.py, DO NOT MODIFY
-// Flags: --allow-natives-syntax --harmony --harmony-proxies
-var _name = "foo";
-%CreateGlobalPrivateSymbol(_name);
=======================================
--- /branches/bleeding_edge/src/array-iterator.js Mon Jul 14 14:05:30 2014
UTC
+++ /branches/bleeding_edge/src/array-iterator.js Wed Aug 20 19:21:56 2014
UTC
@@ -50,7 +50,7 @@
function ArrayIteratorNext() {
var iterator = ToObject(this);
- if (!HAS_PRIVATE(iterator, arrayIteratorObjectSymbol)) {
+ if (!HAS_DEFINED_PRIVATE(iterator, arrayIteratorNextIndexSymbol)) {
throw MakeTypeError('incompatible_method_receiver',
['Array Iterator.prototype.next']);
}
=======================================
--- /branches/bleeding_edge/src/macros.py Mon Jun 23 07:10:25 2014 UTC
+++ /branches/bleeding_edge/src/macros.py Wed Aug 20 19:21:56 2014 UTC
@@ -170,10 +170,11 @@
# Private names.
# GET_PRIVATE should only be used if the property is known to exists on obj
# itself (it should really use %GetOwnProperty, but that would be way
slower).
-macro GLOBAL_PRIVATE(name) = (%CreateGlobalPrivateSymbol(name));
+macro GLOBAL_PRIVATE(name) = (%CreateGlobalPrivateOwnSymbol(name));
macro NEW_PRIVATE(name) = (%CreatePrivateSymbol(name));
macro IS_PRIVATE(sym) = (%SymbolIsPrivate(sym));
macro HAS_PRIVATE(obj, sym) = (%HasOwnProperty(obj, sym));
+macro HAS_DEFINED_PRIVATE(obj, sym) = (!IS_UNDEFINED(obj[sym]));
macro GET_PRIVATE(obj, sym) = (obj[sym]);
macro SET_PRIVATE(obj, sym, val) = (obj[sym] = val);
macro DELETE_PRIVATE(obj, sym) = (delete obj[sym]);
=======================================
--- /branches/bleeding_edge/src/promise.js Mon Aug 18 08:43:11 2014 UTC
+++ /branches/bleeding_edge/src/promise.js Wed Aug 20 19:21:56 2014 UTC
@@ -146,7 +146,7 @@
// For bootstrapper.
IsPromise = function IsPromise(x) {
- return IS_SPEC_OBJECT(x) && HAS_PRIVATE(x, promiseStatus);
+ return IS_SPEC_OBJECT(x) && HAS_DEFINED_PRIVATE(x, promiseStatus);
}
PromiseCreate = function PromiseCreate() {
@@ -162,7 +162,7 @@
// Check promiseDebug property to avoid duplicate event.
if (DEBUG_IS_ACTIVE &&
GET_PRIVATE(promise, promiseStatus) == 0 &&
- !HAS_PRIVATE(promise, promiseDebug)) {
+ !HAS_DEFINED_PRIVATE(promise, promiseDebug)) {
%DebugPromiseRejectEvent(promise, r);
}
PromiseDone(promise, -1, r, promiseOnReject)
=======================================
--- /branches/bleeding_edge/src/runtime.cc Wed Aug 20 16:25:40 2014 UTC
+++ /branches/bleeding_edge/src/runtime.cc Wed Aug 20 19:21:56 2014 UTC
@@ -619,7 +619,7 @@
}
-RUNTIME_FUNCTION(Runtime_CreateGlobalPrivateSymbol) {
+RUNTIME_FUNCTION(Runtime_CreateGlobalPrivateOwnSymbol) {
HandleScope scope(isolate);
DCHECK(args.length() == 1);
CONVERT_ARG_HANDLE_CHECKED(String, name, 0);
@@ -635,6 +635,7 @@
DCHECK(symbol->IsUndefined());
symbol = isolate->factory()->NewPrivateSymbol();
Handle<Symbol>::cast(symbol)->set_name(*name);
+ Handle<Symbol>::cast(symbol)->set_is_own(true);
JSObject::SetProperty(Handle<JSObject>::cast(privates), name, symbol,
STRICT).Assert();
}
=======================================
--- /branches/bleeding_edge/src/runtime.h Tue Aug 19 11:38:38 2014 UTC
+++ /branches/bleeding_edge/src/runtime.h Wed Aug 20 19:21:56 2014 UTC
@@ -259,7 +259,7 @@
/* Harmony symbols */ \
F(CreateSymbol, 1, 1) \
F(CreatePrivateSymbol, 1, 1) \
- F(CreateGlobalPrivateSymbol, 1, 1) \
+ F(CreateGlobalPrivateOwnSymbol, 1, 1) \
F(CreatePrivateOwnSymbol, 1, 1) \
F(NewSymbolWrapper, 1, 1) \
F(SymbolDescription, 1, 1) \
=======================================
--- /branches/bleeding_edge/src/string-iterator.js Mon Jul 14 14:05:30 2014
UTC
+++ /branches/bleeding_edge/src/string-iterator.js Wed Aug 20 19:21:56 2014
UTC
@@ -38,7 +38,7 @@
function StringIteratorNext() {
var iterator = ToObject(this);
- if (!HAS_PRIVATE(iterator, stringIteratorIteratedStringSymbol)) {
+ if (!HAS_DEFINED_PRIVATE(iterator, stringIteratorNextIndexSymbol)) {
throw MakeTypeError('incompatible_method_receiver',
['String Iterator.prototype.next']);
}
@@ -52,7 +52,8 @@
var length = TO_UINT32(s.length);
if (position >= length) {
- SET_PRIVATE(iterator, stringIteratorIteratedStringSymbol, UNDEFINED);
+ SET_PRIVATE(iterator, stringIteratorIteratedStringSymbol,
+ UNDEFINED);
return CreateIteratorResultObject(UNDEFINED, true);
}
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.