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

Unified Diff: src/weak_collection.js

Issue 201593004: Stage ES6 promises and weak collections (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Comment Created 6 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/flag-definitions.h ('k') | test/mjsunit/es6/promises.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/weak_collection.js
diff --git a/src/collection.js b/src/weak_collection.js
similarity index 58%
copy from src/collection.js
copy to src/weak_collection.js
index 1f7aef4f0da6b02cf88974dd551992afe07105fc..81d4ab536e68b3184d2d386df6a192ba591d3fae 100644
--- a/src/collection.js
+++ b/src/weak_collection.js
@@ -31,206 +31,9 @@
// in runtime.js:
// var $Array = global.Array;
-var $Set = global.Set;
-var $Map = global.Map;
var $WeakMap = global.WeakMap;
var $WeakSet = global.WeakSet;
-// Global sentinel to be used instead of undefined keys, which are not
-// supported internally but required for Harmony sets and maps.
-var undefined_sentinel = {};
-
-
-// Map and Set uses SameValueZero which means that +0 and -0 should be treated
-// as the same value.
-function NormalizeKey(key) {
- if (IS_UNDEFINED(key)) {
- return undefined_sentinel;
- }
-
- if (key === 0) {
- return 0;
- }
-
- return key;
-}
-
-
-// -------------------------------------------------------------------
-// Harmony Set
-
-function SetConstructor() {
- if (%_IsConstructCall()) {
- %SetInitialize(this);
- } else {
- throw MakeTypeError('constructor_not_function', ['Set']);
- }
-}
-
-
-function SetAdd(key) {
- if (!IS_SET(this)) {
- throw MakeTypeError('incompatible_method_receiver',
- ['Set.prototype.add', this]);
- }
- return %SetAdd(this, NormalizeKey(key));
-}
-
-
-function SetHas(key) {
- if (!IS_SET(this)) {
- throw MakeTypeError('incompatible_method_receiver',
- ['Set.prototype.has', this]);
- }
- return %SetHas(this, NormalizeKey(key));
-}
-
-
-function SetDelete(key) {
- if (!IS_SET(this)) {
- throw MakeTypeError('incompatible_method_receiver',
- ['Set.prototype.delete', this]);
- }
- key = NormalizeKey(key);
- if (%SetHas(this, key)) {
- %SetDelete(this, key);
- return true;
- } else {
- return false;
- }
-}
-
-
-function SetGetSize() {
- if (!IS_SET(this)) {
- throw MakeTypeError('incompatible_method_receiver',
- ['Set.prototype.size', this]);
- }
- return %SetGetSize(this);
-}
-
-
-function SetClear() {
- if (!IS_SET(this)) {
- throw MakeTypeError('incompatible_method_receiver',
- ['Set.prototype.clear', this]);
- }
- // Replace the internal table with a new empty table.
- %SetInitialize(this);
-}
-
-
-// -------------------------------------------------------------------
-
-function SetUpSet() {
- %CheckIsBootstrapping();
-
- %SetCode($Set, SetConstructor);
- %FunctionSetPrototype($Set, new $Object());
- %SetProperty($Set.prototype, "constructor", $Set, DONT_ENUM);
-
- // Set up the non-enumerable functions on the Set prototype object.
- InstallGetter($Set.prototype, "size", SetGetSize);
- InstallFunctions($Set.prototype, DONT_ENUM, $Array(
- "add", SetAdd,
- "has", SetHas,
- "delete", SetDelete,
- "clear", SetClear
- ));
-}
-
-SetUpSet();
-
-
-// -------------------------------------------------------------------
-// Harmony Map
-
-function MapConstructor() {
- if (%_IsConstructCall()) {
- %MapInitialize(this);
- } else {
- throw MakeTypeError('constructor_not_function', ['Map']);
- }
-}
-
-
-function MapGet(key) {
- if (!IS_MAP(this)) {
- throw MakeTypeError('incompatible_method_receiver',
- ['Map.prototype.get', this]);
- }
- return %MapGet(this, NormalizeKey(key));
-}
-
-
-function MapSet(key, value) {
- if (!IS_MAP(this)) {
- throw MakeTypeError('incompatible_method_receiver',
- ['Map.prototype.set', this]);
- }
- return %MapSet(this, NormalizeKey(key), value);
-}
-
-
-function MapHas(key) {
- if (!IS_MAP(this)) {
- throw MakeTypeError('incompatible_method_receiver',
- ['Map.prototype.has', this]);
- }
- return %MapHas(this, NormalizeKey(key));
-}
-
-
-function MapDelete(key) {
- if (!IS_MAP(this)) {
- throw MakeTypeError('incompatible_method_receiver',
- ['Map.prototype.delete', this]);
- }
- return %MapDelete(this, NormalizeKey(key));
-}
-
-
-function MapGetSize() {
- if (!IS_MAP(this)) {
- throw MakeTypeError('incompatible_method_receiver',
- ['Map.prototype.size', this]);
- }
- return %MapGetSize(this);
-}
-
-
-function MapClear() {
- if (!IS_MAP(this)) {
- throw MakeTypeError('incompatible_method_receiver',
- ['Map.prototype.clear', this]);
- }
- // Replace the internal table with a new empty table.
- %MapInitialize(this);
-}
-
-
-// -------------------------------------------------------------------
-
-function SetUpMap() {
- %CheckIsBootstrapping();
-
- %SetCode($Map, MapConstructor);
- %FunctionSetPrototype($Map, new $Object());
- %SetProperty($Map.prototype, "constructor", $Map, DONT_ENUM);
-
- // Set up the non-enumerable functions on the Map prototype object.
- InstallGetter($Map.prototype, "size", MapGetSize);
- InstallFunctions($Map.prototype, DONT_ENUM, $Array(
- "get", MapGet,
- "set", MapSet,
- "has", MapHas,
- "delete", MapDelete,
- "clear", MapClear
- ));
-}
-
-SetUpMap();
-
// -------------------------------------------------------------------
// Harmony WeakMap
« no previous file with comments | « src/flag-definitions.h ('k') | test/mjsunit/es6/promises.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698