| 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 "use strict"; | 5 "use strict"; |
| 6 | 6 |
| 7 // This file relies on the fact that the following declaration has been made | 7 // This file relies on the fact that the following declaration has been made |
| 8 // in runtime.js: | 8 // in runtime.js: |
| 9 // var $Array = global.Array; | 9 // var $Array = global.Array; |
| 10 | 10 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 | 36 |
| 37 function SetConstructor() { | 37 function SetConstructor() { |
| 38 if (%_IsConstructCall()) { | 38 if (%_IsConstructCall()) { |
| 39 %SetInitialize(this); | 39 %SetInitialize(this); |
| 40 } else { | 40 } else { |
| 41 throw MakeTypeError('constructor_not_function', ['Set']); | 41 throw MakeTypeError('constructor_not_function', ['Set']); |
| 42 } | 42 } |
| 43 } | 43 } |
| 44 | 44 |
| 45 | 45 |
| 46 function SetAdd(key) { | 46 function SetAddJS(key) { |
| 47 if (!IS_SET(this)) { | 47 if (!IS_SET(this)) { |
| 48 throw MakeTypeError('incompatible_method_receiver', | 48 throw MakeTypeError('incompatible_method_receiver', |
| 49 ['Set.prototype.add', this]); | 49 ['Set.prototype.add', this]); |
| 50 } | 50 } |
| 51 return %SetAdd(this, NormalizeKey(key)); | 51 return %SetAdd(this, NormalizeKey(key)); |
| 52 } | 52 } |
| 53 | 53 |
| 54 | 54 |
| 55 function SetHas(key) { | 55 function SetHasJS(key) { |
| 56 if (!IS_SET(this)) { | 56 if (!IS_SET(this)) { |
| 57 throw MakeTypeError('incompatible_method_receiver', | 57 throw MakeTypeError('incompatible_method_receiver', |
| 58 ['Set.prototype.has', this]); | 58 ['Set.prototype.has', this]); |
| 59 } | 59 } |
| 60 return %SetHas(this, NormalizeKey(key)); | 60 return %SetHas(this, NormalizeKey(key)); |
| 61 } | 61 } |
| 62 | 62 |
| 63 | 63 |
| 64 function SetDelete(key) { | 64 function SetDeleteJS(key) { |
| 65 if (!IS_SET(this)) { | 65 if (!IS_SET(this)) { |
| 66 throw MakeTypeError('incompatible_method_receiver', | 66 throw MakeTypeError('incompatible_method_receiver', |
| 67 ['Set.prototype.delete', this]); | 67 ['Set.prototype.delete', this]); |
| 68 } | 68 } |
| 69 key = NormalizeKey(key); | 69 key = NormalizeKey(key); |
| 70 if (%SetHas(this, key)) { | 70 if (%SetHas(this, key)) { |
| 71 %SetDelete(this, key); | 71 %SetDelete(this, key); |
| 72 return true; | 72 return true; |
| 73 } else { | 73 } else { |
| 74 return false; | 74 return false; |
| 75 } | 75 } |
| 76 } | 76 } |
| 77 | 77 |
| 78 | 78 |
| 79 function SetGetSize() { | 79 function SetGetSizeJS() { |
| 80 if (!IS_SET(this)) { | 80 if (!IS_SET(this)) { |
| 81 throw MakeTypeError('incompatible_method_receiver', | 81 throw MakeTypeError('incompatible_method_receiver', |
| 82 ['Set.prototype.size', this]); | 82 ['Set.prototype.size', this]); |
| 83 } | 83 } |
| 84 return %SetGetSize(this); | 84 return %SetGetSize(this); |
| 85 } | 85 } |
| 86 | 86 |
| 87 | 87 |
| 88 function SetClear() { | 88 function SetClearJS() { |
| 89 if (!IS_SET(this)) { | 89 if (!IS_SET(this)) { |
| 90 throw MakeTypeError('incompatible_method_receiver', | 90 throw MakeTypeError('incompatible_method_receiver', |
| 91 ['Set.prototype.clear', this]); | 91 ['Set.prototype.clear', this]); |
| 92 } | 92 } |
| 93 %SetClear(this); | 93 %SetClear(this); |
| 94 } | 94 } |
| 95 | 95 |
| 96 | 96 |
| 97 function SetForEach(f, receiver) { | 97 function SetForEach(f, receiver) { |
| 98 if (!IS_SET(this)) { | 98 if (!IS_SET(this)) { |
| (...skipping 22 matching lines...) Expand all Loading... |
| 121 function SetUpSet() { | 121 function SetUpSet() { |
| 122 %CheckIsBootstrapping(); | 122 %CheckIsBootstrapping(); |
| 123 | 123 |
| 124 %SetCode($Set, SetConstructor); | 124 %SetCode($Set, SetConstructor); |
| 125 %FunctionSetPrototype($Set, new $Object()); | 125 %FunctionSetPrototype($Set, new $Object()); |
| 126 %SetProperty($Set.prototype, "constructor", $Set, DONT_ENUM); | 126 %SetProperty($Set.prototype, "constructor", $Set, DONT_ENUM); |
| 127 | 127 |
| 128 %FunctionSetLength(SetForEach, 1); | 128 %FunctionSetLength(SetForEach, 1); |
| 129 | 129 |
| 130 // Set up the non-enumerable functions on the Set prototype object. | 130 // Set up the non-enumerable functions on the Set prototype object. |
| 131 InstallGetter($Set.prototype, "size", SetGetSize); | 131 InstallGetter($Set.prototype, "size", SetGetSizeJS); |
| 132 InstallFunctions($Set.prototype, DONT_ENUM, $Array( | 132 InstallFunctions($Set.prototype, DONT_ENUM, $Array( |
| 133 "add", SetAdd, | 133 "add", SetAddJS, |
| 134 "has", SetHas, | 134 "has", SetHasJS, |
| 135 "delete", SetDelete, | 135 "delete", SetDeleteJS, |
| 136 "clear", SetClear, | 136 "clear", SetClearJS, |
| 137 "forEach", SetForEach | 137 "forEach", SetForEach |
| 138 )); | 138 )); |
| 139 } | 139 } |
| 140 | 140 |
| 141 SetUpSet(); | 141 SetUpSet(); |
| 142 | 142 |
| 143 | 143 |
| 144 // ------------------------------------------------------------------- | 144 // ------------------------------------------------------------------- |
| 145 // Harmony Map | 145 // Harmony Map |
| 146 | 146 |
| 147 function MapConstructor() { | 147 function MapConstructor() { |
| 148 if (%_IsConstructCall()) { | 148 if (%_IsConstructCall()) { |
| 149 %MapInitialize(this); | 149 %MapInitialize(this); |
| 150 } else { | 150 } else { |
| 151 throw MakeTypeError('constructor_not_function', ['Map']); | 151 throw MakeTypeError('constructor_not_function', ['Map']); |
| 152 } | 152 } |
| 153 } | 153 } |
| 154 | 154 |
| 155 | 155 |
| 156 function MapGet(key) { | 156 function MapGetJS(key) { |
| 157 if (!IS_MAP(this)) { | 157 if (!IS_MAP(this)) { |
| 158 throw MakeTypeError('incompatible_method_receiver', | 158 throw MakeTypeError('incompatible_method_receiver', |
| 159 ['Map.prototype.get', this]); | 159 ['Map.prototype.get', this]); |
| 160 } | 160 } |
| 161 return %MapGet(this, NormalizeKey(key)); | 161 return %MapGet(this, NormalizeKey(key)); |
| 162 } | 162 } |
| 163 | 163 |
| 164 | 164 |
| 165 function MapSet(key, value) { | 165 function MapSetJS(key, value) { |
| 166 if (!IS_MAP(this)) { | 166 if (!IS_MAP(this)) { |
| 167 throw MakeTypeError('incompatible_method_receiver', | 167 throw MakeTypeError('incompatible_method_receiver', |
| 168 ['Map.prototype.set', this]); | 168 ['Map.prototype.set', this]); |
| 169 } | 169 } |
| 170 return %MapSet(this, NormalizeKey(key), value); | 170 return %MapSet(this, NormalizeKey(key), value); |
| 171 } | 171 } |
| 172 | 172 |
| 173 | 173 |
| 174 function MapHas(key) { | 174 function MapHasJS(key) { |
| 175 if (!IS_MAP(this)) { | 175 if (!IS_MAP(this)) { |
| 176 throw MakeTypeError('incompatible_method_receiver', | 176 throw MakeTypeError('incompatible_method_receiver', |
| 177 ['Map.prototype.has', this]); | 177 ['Map.prototype.has', this]); |
| 178 } | 178 } |
| 179 return %MapHas(this, NormalizeKey(key)); | 179 return %MapHas(this, NormalizeKey(key)); |
| 180 } | 180 } |
| 181 | 181 |
| 182 | 182 |
| 183 function MapDelete(key) { | 183 function MapDeleteJS(key) { |
| 184 if (!IS_MAP(this)) { | 184 if (!IS_MAP(this)) { |
| 185 throw MakeTypeError('incompatible_method_receiver', | 185 throw MakeTypeError('incompatible_method_receiver', |
| 186 ['Map.prototype.delete', this]); | 186 ['Map.prototype.delete', this]); |
| 187 } | 187 } |
| 188 return %MapDelete(this, NormalizeKey(key)); | 188 return %MapDelete(this, NormalizeKey(key)); |
| 189 } | 189 } |
| 190 | 190 |
| 191 | 191 |
| 192 function MapGetSize() { | 192 function MapGetSizeJS() { |
| 193 if (!IS_MAP(this)) { | 193 if (!IS_MAP(this)) { |
| 194 throw MakeTypeError('incompatible_method_receiver', | 194 throw MakeTypeError('incompatible_method_receiver', |
| 195 ['Map.prototype.size', this]); | 195 ['Map.prototype.size', this]); |
| 196 } | 196 } |
| 197 return %MapGetSize(this); | 197 return %MapGetSize(this); |
| 198 } | 198 } |
| 199 | 199 |
| 200 | 200 |
| 201 function MapClear() { | 201 function MapClearJS() { |
| 202 if (!IS_MAP(this)) { | 202 if (!IS_MAP(this)) { |
| 203 throw MakeTypeError('incompatible_method_receiver', | 203 throw MakeTypeError('incompatible_method_receiver', |
| 204 ['Map.prototype.clear', this]); | 204 ['Map.prototype.clear', this]); |
| 205 } | 205 } |
| 206 %MapClear(this); | 206 %MapClear(this); |
| 207 } | 207 } |
| 208 | 208 |
| 209 | 209 |
| 210 function MapForEach(f, receiver) { | 210 function MapForEach(f, receiver) { |
| 211 if (!IS_MAP(this)) { | 211 if (!IS_MAP(this)) { |
| (...skipping 22 matching lines...) Expand all Loading... |
| 234 function SetUpMap() { | 234 function SetUpMap() { |
| 235 %CheckIsBootstrapping(); | 235 %CheckIsBootstrapping(); |
| 236 | 236 |
| 237 %SetCode($Map, MapConstructor); | 237 %SetCode($Map, MapConstructor); |
| 238 %FunctionSetPrototype($Map, new $Object()); | 238 %FunctionSetPrototype($Map, new $Object()); |
| 239 %SetProperty($Map.prototype, "constructor", $Map, DONT_ENUM); | 239 %SetProperty($Map.prototype, "constructor", $Map, DONT_ENUM); |
| 240 | 240 |
| 241 %FunctionSetLength(MapForEach, 1); | 241 %FunctionSetLength(MapForEach, 1); |
| 242 | 242 |
| 243 // Set up the non-enumerable functions on the Map prototype object. | 243 // Set up the non-enumerable functions on the Map prototype object. |
| 244 InstallGetter($Map.prototype, "size", MapGetSize); | 244 InstallGetter($Map.prototype, "size", MapGetSizeJS); |
| 245 InstallFunctions($Map.prototype, DONT_ENUM, $Array( | 245 InstallFunctions($Map.prototype, DONT_ENUM, $Array( |
| 246 "get", MapGet, | 246 "get", MapGetJS, |
| 247 "set", MapSet, | 247 "set", MapSetJS, |
| 248 "has", MapHas, | 248 "has", MapHasJS, |
| 249 "delete", MapDelete, | 249 "delete", MapDeleteJS, |
| 250 "clear", MapClear, | 250 "clear", MapClearJS, |
| 251 "forEach", MapForEach | 251 "forEach", MapForEach |
| 252 )); | 252 )); |
| 253 } | 253 } |
| 254 | 254 |
| 255 SetUpMap(); | 255 SetUpMap(); |
| OLD | NEW |