Commit b7039334 authored by jochen@chromium.org's avatar jochen@chromium.org

Revert 20313 - "Ship promises and weak collections"

> R=mstarzinger@chromium.org
> BUG=
>
> Committed: https://code.google.com/p/v8/source/detail?r=20211
>
> Review URL: https://codereview.chromium.org/206163004

R=rossberg@chromium.org
TBR=rossberg@chromium.org
LOG=y
BUG=n

Review URL: https://codereview.chromium.org/219303002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20353 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent b8fab1cf
...@@ -5834,7 +5834,7 @@ Local<Object> Array::CloneElementAt(uint32_t index) { ...@@ -5834,7 +5834,7 @@ Local<Object> Array::CloneElementAt(uint32_t index) {
bool Value::IsPromise() const { bool Value::IsPromise() const {
i::Handle<i::Object> val = Utils::OpenHandle(this); i::Handle<i::Object> val = Utils::OpenHandle(this);
if (!val->IsJSObject()) return false; if (!i::FLAG_harmony_promises || !val->IsJSObject()) return false;
i::Handle<i::JSObject> obj = i::Handle<i::JSObject>::cast(val); i::Handle<i::JSObject> obj = i::Handle<i::JSObject>::cast(val);
i::Isolate* isolate = obj->GetIsolate(); i::Isolate* isolate = obj->GetIsolate();
LOG_API(isolate, "IsPromise"); LOG_API(isolate, "IsPromise");
......
...@@ -121,7 +121,7 @@ char* Bootstrapper::AllocateAutoDeletedArray(int bytes) { ...@@ -121,7 +121,7 @@ char* Bootstrapper::AllocateAutoDeletedArray(int bytes) {
void Bootstrapper::TearDown() { void Bootstrapper::TearDown() {
if (delete_these_non_arrays_on_tear_down_ != NULL) { if (delete_these_non_arrays_on_tear_down_ != NULL) {
int len = delete_these_non_arrays_on_tear_down_->length(); int len = delete_these_non_arrays_on_tear_down_->length();
ASSERT(len < 24); // Don't use this mechanism for unbounded allocations. ASSERT(len < 20); // Don't use this mechanism for unbounded allocations.
for (int i = 0; i < len; i++) { for (int i = 0; i < len; i++) {
delete delete_these_non_arrays_on_tear_down_->at(i); delete delete_these_non_arrays_on_tear_down_->at(i);
delete_these_non_arrays_on_tear_down_->at(i) = NULL; delete_these_non_arrays_on_tear_down_->at(i) = NULL;
...@@ -1081,18 +1081,6 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> inner_global, ...@@ -1081,18 +1081,6 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
native_context()->set_data_view_fun(*data_view_fun); native_context()->set_data_view_fun(*data_view_fun);
} }
{ // -- W e a k M a p
InstallFunction(global, "WeakMap", JS_WEAK_MAP_TYPE, JSWeakMap::kSize,
isolate->initial_object_prototype(),
Builtins::kIllegal, true, true);
}
{ // -- W e a k S e t
InstallFunction(global, "WeakSet", JS_WEAK_SET_TYPE, JSWeakSet::kSize,
isolate->initial_object_prototype(),
Builtins::kIllegal, true, true);
}
{ // --- arguments_boilerplate_ { // --- arguments_boilerplate_
// Make sure we can recognize argument objects at runtime. // Make sure we can recognize argument objects at runtime.
// This is done by introducing an anonymous function with // This is done by introducing an anonymous function with
...@@ -1340,6 +1328,19 @@ void Genesis::InitializeExperimentalGlobal() { ...@@ -1340,6 +1328,19 @@ void Genesis::InitializeExperimentalGlobal() {
} }
} }
if (FLAG_harmony_weak_collections) {
{ // -- W e a k M a p
InstallFunction(global, "WeakMap", JS_WEAK_MAP_TYPE, JSWeakMap::kSize,
isolate()->initial_object_prototype(),
Builtins::kIllegal, true, true);
}
{ // -- W e a k S e t
InstallFunction(global, "WeakSet", JS_WEAK_SET_TYPE, JSWeakSet::kSize,
isolate()->initial_object_prototype(),
Builtins::kIllegal, true, true);
}
}
if (FLAG_harmony_generators) { if (FLAG_harmony_generators) {
// Create generator meta-objects and install them on the builtins object. // Create generator meta-objects and install them on the builtins object.
Handle<JSObject> builtins(native_context()->builtins()); Handle<JSObject> builtins(native_context()->builtins());
...@@ -1534,7 +1535,6 @@ bool Genesis::CompileScriptCached(Isolate* isolate, ...@@ -1534,7 +1535,6 @@ bool Genesis::CompileScriptCached(Isolate* isolate,
void Genesis::InstallNativeFunctions() { void Genesis::InstallNativeFunctions() {
HandleScope scope(isolate()); HandleScope scope(isolate());
INSTALL_NATIVE(JSFunction, "CreateDate", create_date_fun); INSTALL_NATIVE(JSFunction, "CreateDate", create_date_fun);
INSTALL_NATIVE(JSFunction, "ToNumber", to_number_fun); INSTALL_NATIVE(JSFunction, "ToNumber", to_number_fun);
INSTALL_NATIVE(JSFunction, "ToString", to_string_fun); INSTALL_NATIVE(JSFunction, "ToString", to_string_fun);
INSTALL_NATIVE(JSFunction, "ToDetailString", to_detail_string_fun); INSTALL_NATIVE(JSFunction, "ToDetailString", to_detail_string_fun);
...@@ -1542,7 +1542,6 @@ void Genesis::InstallNativeFunctions() { ...@@ -1542,7 +1542,6 @@ void Genesis::InstallNativeFunctions() {
INSTALL_NATIVE(JSFunction, "ToInteger", to_integer_fun); INSTALL_NATIVE(JSFunction, "ToInteger", to_integer_fun);
INSTALL_NATIVE(JSFunction, "ToUint32", to_uint32_fun); INSTALL_NATIVE(JSFunction, "ToUint32", to_uint32_fun);
INSTALL_NATIVE(JSFunction, "ToInt32", to_int32_fun); INSTALL_NATIVE(JSFunction, "ToInt32", to_int32_fun);
INSTALL_NATIVE(JSFunction, "GlobalEval", global_eval_fun); INSTALL_NATIVE(JSFunction, "GlobalEval", global_eval_fun);
INSTALL_NATIVE(JSFunction, "Instantiate", instantiate_fun); INSTALL_NATIVE(JSFunction, "Instantiate", instantiate_fun);
INSTALL_NATIVE(JSFunction, "ConfigureTemplateInstance", INSTALL_NATIVE(JSFunction, "ConfigureTemplateInstance",
...@@ -1551,14 +1550,6 @@ void Genesis::InstallNativeFunctions() { ...@@ -1551,14 +1550,6 @@ void Genesis::InstallNativeFunctions() {
INSTALL_NATIVE(JSObject, "functionCache", function_cache); INSTALL_NATIVE(JSObject, "functionCache", function_cache);
INSTALL_NATIVE(JSFunction, "ToCompletePropertyDescriptor", INSTALL_NATIVE(JSFunction, "ToCompletePropertyDescriptor",
to_complete_property_descriptor); to_complete_property_descriptor);
INSTALL_NATIVE(JSFunction, "IsPromise", is_promise);
INSTALL_NATIVE(JSFunction, "PromiseCreate", promise_create);
INSTALL_NATIVE(JSFunction, "PromiseResolve", promise_resolve);
INSTALL_NATIVE(JSFunction, "PromiseReject", promise_reject);
INSTALL_NATIVE(JSFunction, "PromiseChain", promise_chain);
INSTALL_NATIVE(JSFunction, "PromiseCatch", promise_catch);
INSTALL_NATIVE(JSFunction, "NotifyChange", observers_notify_change); INSTALL_NATIVE(JSFunction, "NotifyChange", observers_notify_change);
INSTALL_NATIVE(JSFunction, "EnqueueSpliceRecord", observers_enqueue_splice); INSTALL_NATIVE(JSFunction, "EnqueueSpliceRecord", observers_enqueue_splice);
INSTALL_NATIVE(JSFunction, "BeginPerformSplice", INSTALL_NATIVE(JSFunction, "BeginPerformSplice",
...@@ -1573,6 +1564,15 @@ void Genesis::InstallExperimentalNativeFunctions() { ...@@ -1573,6 +1564,15 @@ void Genesis::InstallExperimentalNativeFunctions() {
INSTALL_NATIVE(JSFunction, "EnqueueExternalMicrotask", INSTALL_NATIVE(JSFunction, "EnqueueExternalMicrotask",
enqueue_external_microtask); enqueue_external_microtask);
if (FLAG_harmony_promises) {
INSTALL_NATIVE(JSFunction, "IsPromise", is_promise);
INSTALL_NATIVE(JSFunction, "PromiseCreate", promise_create);
INSTALL_NATIVE(JSFunction, "PromiseResolve", promise_resolve);
INSTALL_NATIVE(JSFunction, "PromiseReject", promise_reject);
INSTALL_NATIVE(JSFunction, "PromiseChain", promise_chain);
INSTALL_NATIVE(JSFunction, "PromiseCatch", promise_catch);
}
if (FLAG_harmony_proxies) { if (FLAG_harmony_proxies) {
INSTALL_NATIVE(JSFunction, "DerivedHasTrap", derived_has_trap); INSTALL_NATIVE(JSFunction, "DerivedHasTrap", derived_has_trap);
INSTALL_NATIVE(JSFunction, "DerivedGetTrap", derived_get_trap); INSTALL_NATIVE(JSFunction, "DerivedGetTrap", derived_get_trap);
...@@ -2022,6 +2022,8 @@ bool Genesis::InstallExperimentalNatives() { ...@@ -2022,6 +2022,8 @@ bool Genesis::InstallExperimentalNatives() {
INSTALL_EXPERIMENTAL_NATIVE(i, symbols, "symbol.js") INSTALL_EXPERIMENTAL_NATIVE(i, symbols, "symbol.js")
INSTALL_EXPERIMENTAL_NATIVE(i, proxies, "proxy.js") INSTALL_EXPERIMENTAL_NATIVE(i, proxies, "proxy.js")
INSTALL_EXPERIMENTAL_NATIVE(i, collections, "collection.js") INSTALL_EXPERIMENTAL_NATIVE(i, collections, "collection.js")
INSTALL_EXPERIMENTAL_NATIVE(i, weak_collections, "weak_collection.js")
INSTALL_EXPERIMENTAL_NATIVE(i, promises, "promise.js")
INSTALL_EXPERIMENTAL_NATIVE(i, generators, "generator.js") INSTALL_EXPERIMENTAL_NATIVE(i, generators, "generator.js")
INSTALL_EXPERIMENTAL_NATIVE(i, iteration, "array-iterator.js") INSTALL_EXPERIMENTAL_NATIVE(i, iteration, "array-iterator.js")
INSTALL_EXPERIMENTAL_NATIVE(i, strings, "harmony-string.js") INSTALL_EXPERIMENTAL_NATIVE(i, strings, "harmony-string.js")
......
...@@ -175,9 +175,12 @@ DEFINE_bool(harmony_modules, false, ...@@ -175,9 +175,12 @@ DEFINE_bool(harmony_modules, false,
"enable harmony modules (implies block scoping)") "enable harmony modules (implies block scoping)")
DEFINE_bool(harmony_symbols, false, DEFINE_bool(harmony_symbols, false,
"enable harmony symbols (a.k.a. private names)") "enable harmony symbols (a.k.a. private names)")
DEFINE_bool(harmony_promises, false, "enable harmony promises")
DEFINE_bool(harmony_proxies, false, "enable harmony proxies") DEFINE_bool(harmony_proxies, false, "enable harmony proxies")
DEFINE_bool(harmony_collections, false, DEFINE_bool(harmony_collections, false,
"enable harmony collections (sets, maps)") "enable harmony collections (sets, maps, weak sets, weak maps)")
DEFINE_bool(harmony_weak_collections, false,
"enable only harmony weak collections (weak sets and maps)")
DEFINE_bool(harmony_generators, false, "enable harmony generators") DEFINE_bool(harmony_generators, false, "enable harmony generators")
DEFINE_bool(harmony_iteration, false, "enable harmony iteration (for-of)") DEFINE_bool(harmony_iteration, false, "enable harmony iteration (for-of)")
DEFINE_bool(harmony_numeric_literals, false, DEFINE_bool(harmony_numeric_literals, false,
...@@ -197,10 +200,14 @@ DEFINE_implication(harmony, harmony_iteration) ...@@ -197,10 +200,14 @@ DEFINE_implication(harmony, harmony_iteration)
DEFINE_implication(harmony, harmony_numeric_literals) DEFINE_implication(harmony, harmony_numeric_literals)
DEFINE_implication(harmony, harmony_strings) DEFINE_implication(harmony, harmony_strings)
DEFINE_implication(harmony, harmony_arrays) DEFINE_implication(harmony, harmony_arrays)
DEFINE_implication(harmony_collections, harmony_weak_collections)
DEFINE_implication(harmony_promises, harmony_weak_collections)
DEFINE_implication(harmony_modules, harmony_scoping) DEFINE_implication(harmony_modules, harmony_scoping)
DEFINE_implication(harmony, es_staging) DEFINE_implication(harmony, es_staging)
DEFINE_implication(es_staging, harmony_maths) DEFINE_implication(es_staging, harmony_maths)
DEFINE_implication(es_staging, harmony_promises)
DEFINE_implication(es_staging, harmony_weak_collections)
// Flags for experimental implementation features. // Flags for experimental implementation features.
DEFINE_bool(packed_arrays, true, "optimizes arrays that have no holes") DEFINE_bool(packed_arrays, true, "optimizes arrays that have no holes")
......
...@@ -34,19 +34,7 @@ ...@@ -34,19 +34,7 @@
// var $WeakMap = global.WeakMap // var $WeakMap = global.WeakMap
var $Promise = function Promise(resolver) { var $Promise = Promise;
if (resolver === promiseRaw) return;
if (!%_IsConstructCall()) throw MakeTypeError('not_a_promise', [this]);
if (typeof resolver !== 'function')
throw MakeTypeError('resolver_not_a_function', [resolver]);
var promise = PromiseInit(this);
try {
resolver(function(x) { PromiseResolve(promise, x) },
function(r) { PromiseReject(promise, r) });
} catch (e) {
PromiseReject(promise, e);
}
}
//------------------------------------------------------------------- //-------------------------------------------------------------------
...@@ -64,6 +52,20 @@ function IsPromise(x) { ...@@ -64,6 +52,20 @@ function IsPromise(x) {
return IS_SPEC_OBJECT(x) && %HasLocalProperty(x, promiseStatus); return IS_SPEC_OBJECT(x) && %HasLocalProperty(x, promiseStatus);
} }
function Promise(resolver) {
if (resolver === promiseRaw) return;
if (!%_IsConstructCall()) throw MakeTypeError('not_a_promise', [this]);
if (typeof resolver !== 'function')
throw MakeTypeError('resolver_not_a_function', [resolver]);
var promise = PromiseInit(this);
try {
resolver(function(x) { PromiseResolve(promise, x) },
function(r) { PromiseReject(promise, r) });
} catch (e) {
PromiseReject(promise, e);
}
}
function PromiseSet(promise, status, value, onResolve, onReject) { function PromiseSet(promise, status, value, onResolve, onReject) {
SET_PRIVATE(promise, promiseStatus, status); SET_PRIVATE(promise, promiseStatus, status);
SET_PRIVATE(promise, promiseValue, value); SET_PRIVATE(promise, promiseValue, value);
...@@ -97,7 +99,7 @@ function PromiseReject(promise, r) { ...@@ -97,7 +99,7 @@ function PromiseReject(promise, r) {
function PromiseNopResolver() {} function PromiseNopResolver() {}
function PromiseCreate() { function PromiseCreate() {
return new $Promise(PromiseNopResolver) return new Promise(PromiseNopResolver)
} }
...@@ -106,7 +108,7 @@ function PromiseCreate() { ...@@ -106,7 +108,7 @@ function PromiseCreate() {
function PromiseDeferred() { function PromiseDeferred() {
if (this === $Promise) { if (this === $Promise) {
// Optimized case, avoid extra closure. // Optimized case, avoid extra closure.
var promise = PromiseInit(new $Promise(promiseRaw)); var promise = PromiseInit(new Promise(promiseRaw));
return { return {
promise: promise, promise: promise,
resolve: function(x) { PromiseResolve(promise, x) }, resolve: function(x) { PromiseResolve(promise, x) },
...@@ -125,7 +127,7 @@ function PromiseDeferred() { ...@@ -125,7 +127,7 @@ function PromiseDeferred() {
function PromiseResolved(x) { function PromiseResolved(x) {
if (this === $Promise) { if (this === $Promise) {
// Optimized case, avoid extra closure. // Optimized case, avoid extra closure.
return PromiseSet(new $Promise(promiseRaw), +1, x); return PromiseSet(new Promise(promiseRaw), +1, x);
} else { } else {
return new this(function(resolve, reject) { resolve(x) }); return new this(function(resolve, reject) { resolve(x) });
} }
...@@ -134,7 +136,7 @@ function PromiseResolved(x) { ...@@ -134,7 +136,7 @@ function PromiseResolved(x) {
function PromiseRejected(r) { function PromiseRejected(r) {
if (this === $Promise) { if (this === $Promise) {
// Optimized case, avoid extra closure. // Optimized case, avoid extra closure.
return PromiseSet(new $Promise(promiseRaw), -1, r); return PromiseSet(new Promise(promiseRaw), -1, r);
} else { } else {
return new this(function(resolve, reject) { reject(r) }); return new this(function(resolve, reject) { reject(r) });
} }
......
...@@ -22248,6 +22248,8 @@ TEST(EventLogging) { ...@@ -22248,6 +22248,8 @@ TEST(EventLogging) {
TEST(Promises) { TEST(Promises) {
i::FLAG_harmony_promises = true;
LocalContext context; LocalContext context;
v8::Isolate* isolate = context->GetIsolate(); v8::Isolate* isolate = context->GetIsolate();
v8::HandleScope scope(isolate); v8::HandleScope scope(isolate);
......
...@@ -36,6 +36,7 @@ namespace { ...@@ -36,6 +36,7 @@ namespace {
class HarmonyIsolate { class HarmonyIsolate {
public: public:
HarmonyIsolate() { HarmonyIsolate() {
i::FLAG_harmony_promises = true;
isolate_ = Isolate::New(); isolate_ = Isolate::New();
isolate_->Enter(); isolate_->Enter();
} }
......
...@@ -59,7 +59,7 @@ for (i = 0; i < scripts.length; i++) { ...@@ -59,7 +59,7 @@ for (i = 0; i < scripts.length; i++) {
} }
// This has to be updated if the number of native scripts change. // This has to be updated if the number of native scripts change.
assertTrue(named_native_count == 19 || named_native_count == 20); assertTrue(named_native_count == 17 || named_native_count == 18);
// Only the 'gc' extension is loaded. // Only the 'gc' extension is loaded.
assertEquals(1, extension_count); assertEquals(1, extension_count);
// This script and mjsunit.js has been loaded. If using d8, d8 loads // This script and mjsunit.js has been loaded. If using d8, d8 loads
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Flags: --allow-natives-syntax // Flags: --harmony-promises --allow-natives-syntax
var asyncAssertsExpected = 0; var asyncAssertsExpected = 0;
......
...@@ -25,6 +25,8 @@ ...@@ -25,6 +25,8 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Flags: --harmony-weak-collections
var key = {}; var key = {};
var map = new WeakMap; var map = new WeakMap;
Object.preventExtensions(key); Object.preventExtensions(key);
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Flags: --allow-natives-syntax // Flags: --allow-natives-syntax --harmony-weak-collections
var key1 = {}; var key1 = {};
var key2 = {}; var key2 = {};
......
...@@ -25,6 +25,8 @@ ...@@ -25,6 +25,8 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Flags: --harmony-weak-collections
(function test1() { (function test1() {
var wm1 = new WeakMap(); var wm1 = new WeakMap();
wm1.set(Object.prototype, 23); wm1.set(Object.prototype, 23);
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Flags: --expose-gc --allow-natives-syntax // Flags: --harmony-weak-collections --expose-gc --allow-natives-syntax
// Note: this test is superseded by harmony/collections.js. // Note: this test is superseded by harmony/collections.js.
...@@ -225,7 +225,7 @@ function TestPrototype(C) { ...@@ -225,7 +225,7 @@ function TestPrototype(C) {
assertTrue(C.prototype instanceof Object); assertTrue(C.prototype instanceof Object);
assertEquals({ assertEquals({
value: {}, value: {},
writable: false, writable: true, // TODO(2793): This should be non-writable.
enumerable: false, enumerable: false,
configurable: false configurable: false
}, Object.getOwnPropertyDescriptor(C, "prototype")); }, Object.getOwnPropertyDescriptor(C, "prototype"));
......
...@@ -25,7 +25,8 @@ ...@@ -25,7 +25,8 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Flags: --harmony-proxies --harmony-collections // Flags: --harmony-observation --harmony-proxies
// Flags: --harmony-collections --harmony-weak-collections
// Flags: --harmony-symbols --allow-natives-syntax // Flags: --harmony-symbols --allow-natives-syntax
var allObservers = []; var allObservers = [];
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Flags: --harmony-collections // Flags: --harmony-collections --harmony-weak-collections
// Flags: --expose-gc --allow-natives-syntax // Flags: --expose-gc --allow-natives-syntax
...@@ -290,20 +290,19 @@ assertEquals("WeakSet", WeakSet.name); ...@@ -290,20 +290,19 @@ assertEquals("WeakSet", WeakSet.name);
// Test prototype property of Set, Map, WeakMap and WeakSet. // Test prototype property of Set, Map, WeakMap and WeakSet.
// TODO(2793): Should all be non-writable, and the extra flag removed. function TestPrototype(C) {
function TestPrototype(C, writable) {
assertTrue(C.prototype instanceof Object); assertTrue(C.prototype instanceof Object);
assertEquals({ assertEquals({
value: {}, value: {},
writable: writable, writable: true, // TODO(2793): This should be non-writable.
enumerable: false, enumerable: false,
configurable: false configurable: false
}, Object.getOwnPropertyDescriptor(C, "prototype")); }, Object.getOwnPropertyDescriptor(C, "prototype"));
} }
TestPrototype(Set, true); TestPrototype(Set);
TestPrototype(Map, true); TestPrototype(Map);
TestPrototype(WeakMap, false); TestPrototype(WeakMap);
TestPrototype(WeakSet, false); TestPrototype(WeakSet);
// Test constructor property of the Set, Map, WeakMap and WeakSet prototype. // Test constructor property of the Set, Map, WeakMap and WeakSet prototype.
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Flags: --allow-natives-syntax // Flags: --harmony-observation --harmony-promises --allow-natives-syntax
var ordering = []; var ordering = [];
function reset() { function reset() {
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Flags: --harmony-symbols --harmony-collections // Flags: --harmony-symbols --harmony-collections --harmony-weak-collections
// Flags: --expose-gc --allow-natives-syntax // Flags: --expose-gc --allow-natives-syntax
var symbols = [] var symbols = []
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Flags: --harmony-proxies --harmony-collections // Flags: --harmony-proxies --harmony-collections --harmony-weak-collections
// Helper. // Helper.
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Flags: --allow-natives-syntax // Flags: --harmony-observation --allow-natives-syntax
// //
// Test passes if it does not crash. // Test passes if it does not crash.
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Flags: --harmony-symbols --harmony-collections // Flags: --harmony-symbols --harmony-collections --harmony-weak-collections
// Flags: --expose-gc --allow-natives-syntax // Flags: --expose-gc --allow-natives-syntax
var symbols = [] var symbols = []
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Flags: --harmony-symbols // Flags: --harmony_symbols --harmony-weak-collections
var v0 = new WeakMap; var v0 = new WeakMap;
var v1 = {}; var v1 = {};
......
...@@ -1073,8 +1073,6 @@ ...@@ -1073,8 +1073,6 @@
'../../src/regexp.js', '../../src/regexp.js',
'../../src/arraybuffer.js', '../../src/arraybuffer.js',
'../../src/typedarray.js', '../../src/typedarray.js',
'../../src/weak_collection.js',
'../../src/promise.js',
'../../src/object-observe.js', '../../src/object-observe.js',
'../../src/macros.py', '../../src/macros.py',
], ],
...@@ -1083,6 +1081,8 @@ ...@@ -1083,6 +1081,8 @@
'../../src/symbol.js', '../../src/symbol.js',
'../../src/proxy.js', '../../src/proxy.js',
'../../src/collection.js', '../../src/collection.js',
'../../src/weak_collection.js',
'../../src/promise.js',
'../../src/generator.js', '../../src/generator.js',
'../../src/array-iterator.js', '../../src/array-iterator.js',
'../../src/harmony-string.js', '../../src/harmony-string.js',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment