JavaScriptCore should have some ES6 conformance tests
https://bugs.webkit.org/show_bug.cgi?id=148771

Reviewed by Chris Dumez.

Source/JavaScriptCore:

I created 590 independent, reduced test cases that collectively tell us
whether we pass or fail the conformance matrix @ http://kangax.github.io/compat-table/es6/.

* tests/es6: Added.
* tests/es6.yaml: Added.
* tests/es6/Array.prototype_methods_Array.prototype.copyWithin.js: Added.
(test):
* tests/es6/Array.prototype_methods_Array.prototype.entries.js: Added.
(test):
* tests/es6/Array.prototype_methods_Array.prototype.fill.js: Added.
(test):
* tests/es6/Array.prototype_methods_Array.prototype.find.js: Added.
(test):
* tests/es6/Array.prototype_methods_Array.prototype.findIndex.js: Added.
(test):
* tests/es6/Array.prototype_methods_Array.prototype.keys.js: Added.
(test):
* tests/es6/Array.prototype_methods_Array.prototype.values.js: Added.
(test):
* tests/es6/Array.prototype_methods_Array.prototype[Symbol.iterator].js: Added.
(test):
* tests/es6/Array.prototype_methods_Array.prototype[Symbol.unscopables].js: Added.
(test):
* tests/es6/Array.prototype_methods_Array_iterator_prototype_chain.js: Added.
(test):
* tests/es6/Array_is_subclassable_Array.from.js: Added.
(test.C):
(test):
* tests/es6/Array_is_subclassable_Array.isArray_support.js: Added.
(test.C):
(test):
* tests/es6/Array_is_subclassable_Array.of.js: Added.
(test.C):
(test):
* tests/es6/Array_is_subclassable_Array.prototype.concat.js: Added.
(test.C):
(test):
* tests/es6/Array_is_subclassable_Array.prototype.filter.js: Added.
(test.C):
(test):
* tests/es6/Array_is_subclassable_Array.prototype.map.js: Added.
(test.C):
(test):
* tests/es6/Array_is_subclassable_Array.prototype.slice.js: Added.
(test.C):
(test):
* tests/es6/Array_is_subclassable_Array.prototype.splice.js: Added.
(test.C):
(test):
* tests/es6/Array_is_subclassable_correct_prototype_chain.js: Added.
(test.C):
(test):
* tests/es6/Array_is_subclassable_length_property_accessing.js: Added.
(test.C):
(test):
* tests/es6/Array_is_subclassable_length_property_setting.js: Added.
(test.C):
(test):
* tests/es6/Array_static_methods_Array.from_array-like_objects.js: Added.
(test):
* tests/es6/Array_static_methods_Array.from_generator_instances.js: Added.
(test.iterable):
(test):
* tests/es6/Array_static_methods_Array.from_generic_iterables.js: Added.
(test):
* tests/es6/Array_static_methods_Array.from_instances_of_generic_iterables.js: Added.
(test):
* tests/es6/Array_static_methods_Array.from_iterator_closing.js: Added.
(test.):
(test):
* tests/es6/Array_static_methods_Array.from_map_function_array-like_objects.js: Added.
(test):
* tests/es6/Array_static_methods_Array.from_map_function_generator_instances.js: Added.
(test.iterable):
(test):
* tests/es6/Array_static_methods_Array.from_map_function_generic_iterables.js: Added.
(test):
* tests/es6/Array_static_methods_Array.from_map_function_instances_of_iterables.js: Added.
(test):
* tests/es6/Array_static_methods_Array.of.js: Added.
(test):
* tests/es6/Array_static_methods_Array[Symbol.species].js: Added.
(test):
* tests/es6/Function_is_subclassable_Function.prototype.apply.js: Added.
(test.C):
(test):
* tests/es6/Function_is_subclassable_Function.prototype.bind.js: Added.
(test.C):
(test):
* tests/es6/Function_is_subclassable_Function.prototype.call.js: Added.
(test.C):
(test):
* tests/es6/Function_is_subclassable_can_be_called.js: Added.
(test.C):
(test):
* tests/es6/Function_is_subclassable_can_be_used_with_new.js: Added.
(test.C):
(test):
* tests/es6/Function_is_subclassable_correct_prototype_chain.js: Added.
(test.C):
(test):
* tests/es6/HTML-style_comments.js: Added.
(test):
* tests/es6/Map_-0_key_converts_to_+0.js: Added.
(test.set var):
* tests/es6/Map_Map.prototype.clear.js: Added.
(test):
* tests/es6/Map_Map.prototype.delete.js: Added.
(test):
* tests/es6/Map_Map.prototype.entries.js: Added.
(test):
* tests/es6/Map_Map.prototype.forEach.js: Added.
(test):
* tests/es6/Map_Map.prototype.keys.js: Added.
(test):
* tests/es6/Map_Map.prototype.set_returns_this.js: Added.
* tests/es6/Map_Map.prototype.size.js: Added.
* tests/es6/Map_Map.prototype.values.js: Added.
(test):
* tests/es6/Map_Map.prototype[Symbol.iterator].js: Added.
(test):
* tests/es6/Map_Map[Symbol.species].js: Added.
(test):
* tests/es6/Map_Map_iterator_prototype_chain.js: Added.
(test):
* tests/es6/Map_basic_functionality.js: Added.
* tests/es6/Map_constructor_accepts_null.js: Added.
(test):
* tests/es6/Map_constructor_arguments.js: Added.
* tests/es6/Map_constructor_invokes_set.js: Added.
* tests/es6/Map_constructor_requires_new.js: Added.
(test):
* tests/es6/Map_iterator_closing.js: Added.
(test.):
(test):
* tests/es6/Math_methods_Math.acosh.js: Added.
(test):
* tests/es6/Math_methods_Math.asinh.js: Added.
(test):
* tests/es6/Math_methods_Math.atanh.js: Added.
(test):
* tests/es6/Math_methods_Math.cbrt.js: Added.
(test):
* tests/es6/Math_methods_Math.clz32.js: Added.
(test):
* tests/es6/Math_methods_Math.cosh.js: Added.
(test):
* tests/es6/Math_methods_Math.expm1.js: Added.
(test):
* tests/es6/Math_methods_Math.fround.js: Added.
(test):
* tests/es6/Math_methods_Math.hypot.js: Added.
(test):
* tests/es6/Math_methods_Math.imul.js: Added.
(test):
* tests/es6/Math_methods_Math.log10.js: Added.
(test):
* tests/es6/Math_methods_Math.log1p.js: Added.
(test):
* tests/es6/Math_methods_Math.log2.js: Added.
(test):
* tests/es6/Math_methods_Math.sign.js: Added.
(test):
* tests/es6/Math_methods_Math.sinh.js: Added.
(test):
* tests/es6/Math_methods_Math.tanh.js: Added.
(test):
* tests/es6/Math_methods_Math.trunc.js: Added.
(test):
* tests/es6/Number_properties_Number.EPSILON.js: Added.
(test):
* tests/es6/Number_properties_Number.MAX_SAFE_INTEGER.js: Added.
(test):
* tests/es6/Number_properties_Number.MIN_SAFE_INTEGER.js: Added.
(test):
* tests/es6/Number_properties_Number.isFinite.js: Added.
(test):
* tests/es6/Number_properties_Number.isInteger.js: Added.
(test):
* tests/es6/Number_properties_Number.isNaN.js: Added.
(test):
* tests/es6/Number_properties_Number.isSafeInteger.js: Added.
(test):
* tests/es6/Object.prototype.__proto___absent_from_Object.createnull.js: Added.
(test):
* tests/es6/Object.prototype.__proto___correct_property_descriptor.js: Added.
(test.A):
(test):
* tests/es6/Object.prototype.__proto___get_prototype.js: Added.
(test.A):
(test):
* tests/es6/Object.prototype.__proto___present_in_Object.getOwnPropertyNames.js: Added.
(test):
* tests/es6/Object.prototype.__proto___present_in_hasOwnProperty.js: Added.
(test):
* tests/es6/Object.prototype.__proto___set_prototype.js: Added.
(test):
* tests/es6/Object_static_methods_Object.assign.js: Added.
(test):
* tests/es6/Object_static_methods_Object.getOwnPropertySymbols.js: Added.
(test):
* tests/es6/Object_static_methods_Object.is.js: Added.
(test):
* tests/es6/Object_static_methods_Object.setPrototypeOf.js: Added.
(test):
* tests/es6/Object_static_methods_accept_primitives_Object.freeze.js: Added.
(test):
* tests/es6/Object_static_methods_accept_primitives_Object.getOwnPropertyDescriptor.js: Added.
(test):
* tests/es6/Object_static_methods_accept_primitives_Object.getOwnPropertyNames.js: Added.
(test):
* tests/es6/Object_static_methods_accept_primitives_Object.getPrototypeOf.js: Added.
(test):
* tests/es6/Object_static_methods_accept_primitives_Object.isExtensible.js: Added.
(test):
* tests/es6/Object_static_methods_accept_primitives_Object.isFrozen.js: Added.
(test):
* tests/es6/Object_static_methods_accept_primitives_Object.isSealed.js: Added.
(test):
* tests/es6/Object_static_methods_accept_primitives_Object.keys.js: Added.
(test):
* tests/es6/Object_static_methods_accept_primitives_Object.preventExtensions.js: Added.
(test):
* tests/es6/Object_static_methods_accept_primitives_Object.seal.js: Added.
(test):
* tests/es6/Promise_Promise.all.js: Added.
(test):
* tests/es6/Promise_Promise.all_generic_iterables.js: Added.
(test):
* tests/es6/Promise_Promise.race.js: Added.
(test):
* tests/es6/Promise_Promise.race_generic_iterables.js: Added.
(test):
* tests/es6/Promise_Promise[Symbol.species].js: Added.
(test):
* tests/es6/Promise_basic_functionality.js: Added.
(test.thenFn):
(test.catchFn):
(test.shouldNotRun):
(test):
* tests/es6/Promise_constructor_requires_new.js: Added.
(test):
* tests/es6/Promise_is_subclassable_Promise.all.js: Added.
(test.P):
(test):
* tests/es6/Promise_is_subclassable_Promise.race.js: Added.
(test.P):
(test):
* tests/es6/Promise_is_subclassable_basic_functionality.js: Added.
(test.P):
(test):
(test.catchFn):
(test.shouldNotRun):
* tests/es6/Promise_is_subclassable_correct_prototype_chain.js: Added.
(test.C):
(test):
* tests/es6/Proxy_Array.isArray_support.js: Added.
(test):
* tests/es6/Proxy_JSON.stringify_support.js: Added.
(test):
* tests/es6/Proxy_Proxy.revocable.js: Added.
(test.):
(test.get var):
(test):
* tests/es6/Proxy_apply_handler.js: Added.
(test.proxied):
(test.host.):
(test):
* tests/es6/Proxy_construct_handler.js: Added.
(test.proxied):
(test.):
(test):
* tests/es6/Proxy_constructor_requires_new.js: Added.
(test):
* tests/es6/Proxy_defineProperty_handler.js: Added.
(test.):
(test):
* tests/es6/Proxy_deleteProperty_handler.js: Added.
(test.):
(test):
* tests/es6/Proxy_enumerate_handler.js: Added.
(test.):
(test):
* tests/es6/Proxy_getOwnPropertyDescriptor_handler.js: Added.
(test.):
(test):
* tests/es6/Proxy_getPrototypeOf_handler.js: Added.
(test.):
(test):
* tests/es6/Proxy_get_handler.js: Added.
(test.):
* tests/es6/Proxy_get_handler_instances_of_proxies.js: Added.
(test.):
* tests/es6/Proxy_has_handler.js: Added.
(test.):
(test):
* tests/es6/Proxy_has_handler_instances_of_proxies.js: Added.
(test.):
(test):
* tests/es6/Proxy_internal_defineProperty_calls_SetIntegrityLevel.js: Added.
(test.):
(test):
* tests/es6/Proxy_internal_defineProperty_calls_[[Set]].js: Added.
(test.):
(test):
* tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.copyWithin.js: Added.
(test.):
(test):
* tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.pop.js: Added.
(test.):
(test):
* tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.reverse.js: Added.
(test.):
(test):
* tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.shift.js: Added.
(test.):
(test):
* tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.splice.js: Added.
(test.):
(test):
* tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.unshift.js: Added.
(test.):
(test):
* tests/es6/Proxy_internal_getOwnPropertyDescriptor_calls_Function.prototype.bind.js: Added.
(test.):
(test):
* tests/es6/Proxy_internal_getOwnPropertyDescriptor_calls_Object.assign.js: Added.
(test.):
(test):
* tests/es6/Proxy_internal_getOwnPropertyDescriptor_calls_Object.prototype.hasOwnProperty.js: Added.
(test.):
(test):
* tests/es6/Proxy_internal_getOwnPropertyDescriptor_calls_[[Set]].js: Added.
(test.):
(test):
* tests/es6/Proxy_internal_get_calls_Array.from.js: Added.
(test.get var):
(test.):
* tests/es6/Proxy_internal_get_calls_Array.prototype.concat.js: Added.
(test.):
(test.get var):
* tests/es6/Proxy_internal_get_calls_Array.prototype.pop.js: Added.
(test.):
(test.get var):
* tests/es6/Proxy_internal_get_calls_Array.prototype.reverse.js: Added.
(test.):
(test.get var):
* tests/es6/Proxy_internal_get_calls_Array.prototype.shift.js: Added.
(test.):
(test.get var):
* tests/es6/Proxy_internal_get_calls_Array.prototype.splice.js: Added.
(test.):
(test.get var):
* tests/es6/Proxy_internal_get_calls_Array.prototype.toString.js: Added.
(test.get var):
(test.):
* tests/es6/Proxy_internal_get_calls_Array.prototype_iteration_methods.js: Added.
(test.get var):
(test.):
* tests/es6/Proxy_internal_get_calls_ClassDefinitionEvaluation.js: Added.
(test.):
(test.get var):
(test):
* tests/es6/Proxy_internal_get_calls_CreateDynamicFunction.js: Added.
(test.):
(test.get var):
* tests/es6/Proxy_internal_get_calls_CreateListFromArrayLike.js: Added.
(test.get var):
(test.):
(test.get Function):
* tests/es6/Proxy_internal_get_calls_Date.prototype.toJSON.js: Added.
(test.get var):
(test.):
* tests/es6/Proxy_internal_get_calls_Error.prototype.toString.js: Added.
(test.get var):
(test.):
* tests/es6/Proxy_internal_get_calls_Function.prototype.bind.js: Added.
(test.):
(test.get var):
* tests/es6/Proxy_internal_get_calls_HasBinding.js: Added.
(test.get var):
(test.):
(test.get p):
* tests/es6/Proxy_internal_get_calls_IteratorComplete_IteratorValue.js: Added.
(test.get var):
(test.iterable.Symbol.iterator.return.next.):
(test.iterable.Symbol.iterator.return.next):
(test.iterable.Symbol.iterator):
* tests/es6/Proxy_internal_get_calls_JSON.stringify.js: Added.
(test.get var):
(test.):
* tests/es6/Proxy_internal_get_calls_Object.assign.js: Added.
(test.get var):
(test.):
(test.get Object):
* tests/es6/Proxy_internal_get_calls_Object.defineProperties.js: Added.
(test.get var):
(test.):
(test.get Object):
* tests/es6/Proxy_internal_get_calls_Promise_resolve_functions.js: Added.
(test.get var):
(test.):
(test.get new):
* tests/es6/Proxy_internal_get_calls_RegExp.prototype.flags.js: Added.
(test.get var):
(test.):
* tests/es6/Proxy_internal_get_calls_RegExp.prototype.test.js: Added.
(test.get var.p.new.Proxy):
(test.get var):
(test.):
* tests/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.match].js: Added.
(test.get var.p.new.Proxy):
(test.get var):
(test.):
* tests/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.replace].js: Added.
(test.get var.p.new.Proxy):
(test.get var):
(test.):
* tests/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.search].js: Added.
(test.get var.p.new.Proxy):
(test.get var):
(test.):
* tests/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.split].js: Added.
(test.p.new.Proxy):
(test.get var):
(test.):
* tests/es6/Proxy_internal_get_calls_RegExp_constructor.js: Added.
(test.get var):
(test.):
* tests/es6/Proxy_internal_get_calls_String.prototype.match.js: Added.
(test.get var):
(test.):
* tests/es6/Proxy_internal_get_calls_String.prototype.replace.js: Added.
(test.get var):
(test.):
* tests/es6/Proxy_internal_get_calls_String.prototype.search.js: Added.
(test.get var):
(test.):
* tests/es6/Proxy_internal_get_calls_String.prototype.split.js: Added.
(test.get var):
(test.):
* tests/es6/Proxy_internal_get_calls_String.raw.js: Added.
(test.get var):
(test.):
* tests/es6/Proxy_internal_get_calls_ToPrimitive.js: Added.
(test.get var):
(test.):
* tests/es6/Proxy_internal_get_calls_ToPropertyDescriptor.js: Added.
(test.get var):
(test.):
(test.set get try):
* tests/es6/Proxy_internal_get_calls_instanceof_operator.js: Added.
(test.):
(test.get var):
* tests/es6/Proxy_internal_ownKeys_calls_SerializeJSONObject.js: Added.
(test.):
(test):
* tests/es6/Proxy_internal_ownKeys_calls_SetIntegrityLevel.js: Added.
(test.):
(test):
* tests/es6/Proxy_internal_ownKeys_calls_TestIntegrityLevel.js: Added.
(test.):
(test):
* tests/es6/Proxy_internal_set_calls_Array.from.js: Added.
(test.set var):
(test.):
(test.set Array):
* tests/es6/Proxy_internal_set_calls_Array.of.js: Added.
(test.set var):
(test.):
(test.set Array):
* tests/es6/Proxy_internal_set_calls_Array.prototype.copyWithin.js: Added.
(test.):
(test.set var):
* tests/es6/Proxy_internal_set_calls_Array.prototype.fill.js: Added.
(test.):
(test.set var):
* tests/es6/Proxy_internal_set_calls_Array.prototype.pop.js: Added.
(test.):
(test.set var):
* tests/es6/Proxy_internal_set_calls_Array.prototype.push.js: Added.
(test.):
(test.set var):
* tests/es6/Proxy_internal_set_calls_Array.prototype.reverse.js: Added.
(test.):
(test.set var):
* tests/es6/Proxy_internal_set_calls_Array.prototype.shift.js: Added.
(test.):
(test.set var):
* tests/es6/Proxy_internal_set_calls_Array.prototype.splice.js: Added.
(test.):
(test.set var):
* tests/es6/Proxy_internal_set_calls_Array.prototype.unshift.js: Added.
(test.):
(test.set var):
* tests/es6/Proxy_internal_set_calls_Object.assign.js: Added.
(test.set var):
(test.):
(test.set Object):
* tests/es6/Proxy_isExtensible_handler.js: Added.
(test.):
(test):
* tests/es6/Proxy_ownKeys_handler.js: Added.
(test.):
(test):
* tests/es6/Proxy_preventExtensions_handler.js: Added.
(test.):
(test):
* tests/es6/Proxy_setPrototypeOf_handler.js: Added.
(test.):
(test):
* tests/es6/Proxy_set_handler.js: Added.
(test.):
* tests/es6/Proxy_set_handler_instances_of_proxies.js: Added.
(test.):
* tests/es6/Reflect_Reflect.apply.js: Added.
(test):
* tests/es6/Reflect_Reflect.construct.js: Added.
(test):
* tests/es6/Reflect_Reflect.construct_creates_instance_from_newTarget_argument.js: Added.
(test.F):
(test):
* tests/es6/Reflect_Reflect.construct_sets_new.target_meta_property.js: Added.
(test):
* tests/es6/Reflect_Reflect.defineProperty.js: Added.
(test):
* tests/es6/Reflect_Reflect.deleteProperty.js: Added.
(test):
* tests/es6/Reflect_Reflect.enumerate.js: Added.
(test):
* tests/es6/Reflect_Reflect.get.js: Added.
* tests/es6/Reflect_Reflect.getOwnPropertyDescriptor.js: Added.
(test):
* tests/es6/Reflect_Reflect.getPrototypeOf.js: Added.
(test):
* tests/es6/Reflect_Reflect.has.js: Added.
(test):
* tests/es6/Reflect_Reflect.isExtensible.js: Added.
(test):
* tests/es6/Reflect_Reflect.ownKeys_string_keys.js: Added.
(test):
* tests/es6/Reflect_Reflect.ownKeys_symbol_keys.js: Added.
(test):
* tests/es6/Reflect_Reflect.preventExtensions.js: Added.
(test):
* tests/es6/Reflect_Reflect.set.js: Added.
* tests/es6/Reflect_Reflect.setPrototypeOf.js: Added.
(test):
* tests/es6/RegExp.prototype.compile.js: Added.
(test):
* tests/es6/RegExp.prototype_properties_RegExp.prototype.flags.js: Added.
(test):
* tests/es6/RegExp.prototype_properties_RegExp.prototype[Symbol.match].js: Added.
(test):
* tests/es6/RegExp.prototype_properties_RegExp.prototype[Symbol.replace].js: Added.
(test):
* tests/es6/RegExp.prototype_properties_RegExp.prototype[Symbol.search].js: Added.
(test):
* tests/es6/RegExp.prototype_properties_RegExp.prototype[Symbol.split].js: Added.
(test):
* tests/es6/RegExp.prototype_properties_RegExp[Symbol.species].js: Added.
(test):
* tests/es6/RegExp_is_subclassable_RegExp.prototype.exec.js: Added.
(test.R):
(test):
* tests/es6/RegExp_is_subclassable_RegExp.prototype.test.js: Added.
(test.R):
(test):
* tests/es6/RegExp_is_subclassable_basic_functionality.js: Added.
(test.R):
(test):
* tests/es6/RegExp_is_subclassable_correct_prototype_chain.js: Added.
(test.R):
(test):
* tests/es6/RegExp_syntax_extensions_hyphens_in_character_sets.js: Added.
(test):
* tests/es6/RegExp_syntax_extensions_incomplete_patterns_and_quantifiers.js: Added.
* tests/es6/RegExp_syntax_extensions_invalid_Unicode_escapes.js: Added.
(test):
* tests/es6/RegExp_syntax_extensions_invalid_backreferences_become_octal_escapes.js: Added.
(test):
* tests/es6/RegExp_syntax_extensions_invalid_character_escapes.js: Added.
(test):
* tests/es6/RegExp_syntax_extensions_invalid_control-character_escapes.js: Added.
(test):
* tests/es6/RegExp_syntax_extensions_invalid_hexadecimal_escapes.js: Added.
(test):
* tests/es6/RegExp_syntax_extensions_octal_escape_sequences.js: Added.
(test):
* tests/es6/RegExp_y_and_u_flags_u_flag.js: Added.
(test):
* tests/es6/RegExp_y_and_u_flags_u_flag_Unicode_code_point_escapes.js: Added.
(test):
* tests/es6/RegExp_y_and_u_flags_y_flag.js: Added.
(test):
* tests/es6/RegExp_y_and_u_flags_y_flag_lastIndex.js: Added.
(test):
* tests/es6/Set_-0_key_converts_to_+0.js: Added.
(test.set forEach):
* tests/es6/Set_Set.prototype.add_returns_this.js: Added.
* tests/es6/Set_Set.prototype.clear.js: Added.
(test):
* tests/es6/Set_Set.prototype.delete.js: Added.
(test):
* tests/es6/Set_Set.prototype.entries.js: Added.
(test):
* tests/es6/Set_Set.prototype.forEach.js: Added.
(test):
* tests/es6/Set_Set.prototype.keys.js: Added.
(test):
* tests/es6/Set_Set.prototype.size.js: Added.
* tests/es6/Set_Set.prototype.values.js: Added.
(test):
* tests/es6/Set_Set.prototype[Symbol.iterator].js: Added.
(test):
* tests/es6/Set_Set[Symbol.species].js: Added.
(test):
* tests/es6/Set_Set_iterator_prototype_chain.js: Added.
(test):
* tests/es6/Set_basic_functionality.js: Added.
* tests/es6/Set_constructor_accepts_null.js: Added.
(test):
* tests/es6/Set_constructor_arguments.js: Added.
* tests/es6/Set_constructor_invokes_add.js: Added.
(test.Set.prototype.add):
(test):
* tests/es6/Set_constructor_requires_new.js: Added.
(test):
* tests/es6/Set_iterator_closing.js: Added.
(test.):
(test.Set.prototype.add):
(test):
* tests/es6/String.prototype_HTML_methods_existence.js: Added.
(test):
* tests/es6/String.prototype_HTML_methods_quotes_in_arguments_are_escaped.js: Added.
(test):
* tests/es6/String.prototype_HTML_methods_tags_names_are_lowercase.js: Added.
(test):
* tests/es6/String.prototype_methods_String.prototype.codePointAt.js: Added.
(test):
* tests/es6/String.prototype_methods_String.prototype.endsWith.js: Added.
(test):
* tests/es6/String.prototype_methods_String.prototype.includes.js: Added.
(test):
* tests/es6/String.prototype_methods_String.prototype.normalize.js: Added.
(test):
* tests/es6/String.prototype_methods_String.prototype.repeat.js: Added.
(test):
* tests/es6/String.prototype_methods_String.prototype.startsWith.js: Added.
(test):
* tests/es6/String.prototype_methods_String.prototype[Symbol.iterator].js: Added.
(test):
* tests/es6/String.prototype_methods_String_iterator_prototype_chain.js: Added.
(test):
* tests/es6/String_static_methods_String.fromCodePoint.js: Added.
(test):
* tests/es6/String_static_methods_String.raw.js: Added.
(test):
* tests/es6/Symbol_JSON.stringify_ignores_symbols.js: Added.
(test):
* tests/es6/Symbol_Object.defineProperty_support.js: Added.
(test):
* tests/es6/Symbol_Objectsymbol.js: Added.
(test):
* tests/es6/Symbol_basic_functionality.js: Added.
(test):
* tests/es6/Symbol_can_convert_with_String.js: Added.
(test):
* tests/es6/Symbol_cannot_coerce_to_string_or_number.js: Added.
(test):
* tests/es6/Symbol_global_symbol_registry.js: Added.
(test):
* tests/es6/Symbol_new_Symbol_throws.js: Added.
(test):
* tests/es6/Symbol_symbol_keys_are_hidden_to_pre-ES6_code.js: Added.
(test):
* tests/es6/Symbol_typeof_support.js: Added.
(test):
* tests/es6/Unicode_code_point_escapes_in_identifiers.js: Added.
(test):
* tests/es6/Unicode_code_point_escapes_in_strings.js: Added.
(test):
* tests/es6/WeakMap_WeakMap.prototype.delete.js: Added.
(test):
* tests/es6/WeakMap_WeakMap.prototype.set_returns_this.js: Added.
* tests/es6/WeakMap_basic_functionality.js: Added.
* tests/es6/WeakMap_constructor_accepts_null.js: Added.
(test):
* tests/es6/WeakMap_constructor_arguments.js: Added.
* tests/es6/WeakMap_constructor_invokes_set.js: Added.
* tests/es6/WeakMap_constructor_requires_new.js: Added.
(test):
* tests/es6/WeakMap_frozen_objects_as_keys.js: Added.
* tests/es6/WeakMap_iterator_closing.js: Added.
(test.):
(test):
* tests/es6/WeakMap_no_WeakMap.prototype.clear_method.js: Added.
* tests/es6/WeakSet_WeakSet.prototype.add_returns_this.js: Added.
(test):
* tests/es6/WeakSet_WeakSet.prototype.delete.js: Added.
(test):
* tests/es6/WeakSet_basic_functionality.js: Added.
(test):
* tests/es6/WeakSet_constructor_accepts_null.js: Added.
(test):
* tests/es6/WeakSet_constructor_arguments.js: Added.
(test):
* tests/es6/WeakSet_constructor_invokes_add.js: Added.
(test.WeakSet.prototype.add):
(test):
* tests/es6/WeakSet_constructor_requires_new.js: Added.
(test):
* tests/es6/WeakSet_iterator_closing.js: Added.
(test.):
(test):
* tests/es6/WeakSet_no_WeakSet.prototype.clear_method.js: Added.
(test):
* tests/es6/__proto___in_object_literals_basic_support.js: Added.
(test):
* tests/es6/__proto___in_object_literals_multiple___proto___is_an_error.js: Added.
(test):
* tests/es6/__proto___in_object_literals_not_a_computed_property.js: Added.
(test):
* tests/es6/__proto___in_object_literals_not_a_shorthand_method.js: Added.
(test):
* tests/es6/__proto___in_object_literals_not_a_shorthand_property.js: Added.
(test):
* tests/es6/arrow_functions_0_parameters.js: Added.
(test):
* tests/es6/arrow_functions_1_parameter_no_brackets.js: Added.
(test):
* tests/es6/arrow_functions_cant_be_bound_can_be_curried.js: Added.
(test.d.y):
(test):
* tests/es6/arrow_functions_correct_precedence.js: Added.
(test):
* tests/es6/arrow_functions_lexical_arguments_binding.js: Added.
(test.f):
(test):
* tests/es6/arrow_functions_lexical_new.target_binding.js: Added.
(test.C):
(test):
* tests/es6/arrow_functions_lexical_super_binding.js: Added.
(test.B.prototype.qux):
(test.B):
(test.C.prototype.baz):
(test.C):
(test):
* tests/es6/arrow_functions_lexical_this_binding.js: Added.
(test.d.y):
(test):
* tests/es6/arrow_functions_multiple_parameters.js: Added.
(test):
* tests/es6/arrow_functions_no_line_break_between_params_and_code_=_code.js: Added.
(test):
* tests/es6/arrow_functions_no_prototype_property.js: Added.
(test):
* tests/es6/arrow_functions_this_unchanged_by_call_or_apply.js: Added.
(test.d.y):
(test):
* tests/es6/block-level_function_declaration.js: Added.
(test.f):
(test):
* tests/es6/class_accessor_properties.js: Added.
(test.C.prototype.get foo):
(test.C.prototype.set bar):
(test.C):
(test):
* tests/es6/class_anonymous_class.js: Added.
* tests/es6/class_class_expression.js: Added.
(test.return.typeof.C):
(test):
* tests/es6/class_class_name_is_lexically_scoped.js: Added.
(test.C.prototype.method):
(test.C):
(test):
* tests/es6/class_class_statement.js: Added.
(test.C):
(test):
* tests/es6/class_computed_accessor_properties.js: Added.
(test.C.prototype.get garply):
(test.C.prototype.set grault):
(test.C):
(test):
* tests/es6/class_computed_names_temporal_dead_zone.js: Added.
(test.try.B.prototype.C):
(test.try.B):
(test):
* tests/es6/class_computed_prototype_methods.js: Added.
(test.C.prototype.foo):
(test.C):
(test):
* tests/es6/class_computed_static_accessor_properties.js: Added.
(test.C.prototype.get garply):
(test.C.prototype.set grault):
(test.C):
(test):
* tests/es6/class_computed_static_methods.js: Added.
(test.C.foo):
(test.C):
(test):
* tests/es6/class_constructor.js: Added.
(test.C):
(test):
* tests/es6/class_constructor_requires_new.js: Added.
(test.C):
(test):
* tests/es6/class_extends.js: Added.
(test.B):
(test.C):
(test):
* tests/es6/class_extends_expressions.js: Added.
(test.C):
(test):
* tests/es6/class_extends_null.js: Added.
(test.C):
(test):
* tests/es6/class_implicit_strict_mode.js: Added.
(test.C.method):
(test.C):
(test):
* tests/es6/class_is_block-scoped.js: Added.
(test.C):
(test):
* tests/es6/class_methods_arent_enumerable.js: Added.
(test.C.prototype.foo):
(test.C.bar):
(test.C):
(test):
* tests/es6/class_new.target.js: Added.
(test.new.f):
(test.A):
(test.B):
(test):
* tests/es6/class_prototype_methods.js: Added.
(test.C.prototype.method):
(test.C):
(test):
* tests/es6/class_static_accessor_properties.js: Added.
(test.C.prototype.get foo):
(test.C.prototype.set bar):
(test.C):
(test):
* tests/es6/class_static_methods.js: Added.
(test.C.method):
(test.C):
(test):
* tests/es6/class_string-keyed_methods.js: Added.
(test.C.prototype.string_appeared_here):
(test.C):
(test):
* tests/es6/const_basic_support.js: Added.
(test):
* tests/es6/const_basic_support_strict_mode.js: Added.
(test):
* tests/es6/const_is_block-scoped.js: Added.
(test):
* tests/es6/const_is_block-scoped_strict_mode.js: Added.
(test):
* tests/es6/const_redefining_a_const_is_an_error.js: Added.
(test):
* tests/es6/const_redefining_a_const_strict_mode.js: Added.
(test):
* tests/es6/const_temporal_dead_zone.js: Added.
(test.passed):
(test):
* tests/es6/const_temporal_dead_zone_strict_mode.js: Added.
(test.passed):
(test):
* tests/es6/default_function_parameters_arguments_object_interaction.js: Added.
(test):
* tests/es6/default_function_parameters_basic_functionality.js: Added.
(test):
* tests/es6/default_function_parameters_defaults_can_refer_to_previous_params.js: Added.
(test):
* tests/es6/default_function_parameters_explicit_undefined_defers_to_the_default.js: Added.
(test):
* tests/es6/default_function_parameters_new_Function_support.js: Added.
(test):
* tests/es6/default_function_parameters_separate_scope.js: Added.
(test.return):
(test):
* tests/es6/default_function_parameters_temporal_dead_zone.js: Added.
(test):
* tests/es6/destructuring_chained_iterable_destructuring.js: Added.
(test):
* tests/es6/destructuring_chained_object_destructuring.js: Added.
(test):
* tests/es6/destructuring_computed_properties.js: Added.
(test):
* tests/es6/destructuring_defaults.js: Added.
(test):
* tests/es6/destructuring_defaults_in_parameters.js: Added.
(test):
* tests/es6/destructuring_defaults_in_parameters_new_Function_support.js: Added.
(test):
* tests/es6/destructuring_defaults_in_parameters_separate_scope.js: Added.
(test.return):
(test):
* tests/es6/destructuring_defaults_let_temporal_dead_zone.js: Added.
(test):
* tests/es6/destructuring_empty_patterns.js: Added.
(test):
* tests/es6/destructuring_empty_patterns_in_parameters.js: Added.
(test):
* tests/es6/destructuring_in_for-in_loop_heads.js: Added.
(test):
* tests/es6/destructuring_in_for-of_loop_heads.js: Added.
(test):
* tests/es6/destructuring_in_parameters.js: Added.
(test):
* tests/es6/destructuring_in_parameters_arguments_interaction.js: Added.
(test):
* tests/es6/destructuring_in_parameters_function_length_property.js: Added.
(test):
* tests/es6/destructuring_in_parameters_new_Function_support.js: Added.
(test):
* tests/es6/destructuring_iterable_destructuring_expression.js: Added.
(test):
* tests/es6/destructuring_iterator_closing.js: Added.
(test.):
(test):
* tests/es6/destructuring_multiples_in_a_single_var_statement.js: Added.
(test):
* tests/es6/destructuring_nested.js: Added.
(test):
* tests/es6/destructuring_nested_rest.js: Added.
(test):
* tests/es6/destructuring_object_destructuring_expression.js: Added.
(test):
* tests/es6/destructuring_object_destructuring_with_primitives.js: Added.
(test):
* tests/es6/destructuring_parenthesised_left-hand-side_is_a_syntax_error.js: Added.
(test):
* tests/es6/destructuring_rest.js: Added.
(test):
* tests/es6/destructuring_throws_on_null_and_undefined.js: Added.
(test):
* tests/es6/destructuring_trailing_commas_in_iterable_patterns.js: Added.
(test):
* tests/es6/destructuring_trailing_commas_in_object_patterns.js: Added.
(test):
* tests/es6/destructuring_with_arrays.js: Added.
(test):
* tests/es6/destructuring_with_astral_plane_strings.js: Added.
(test):
* tests/es6/destructuring_with_generator_instances.js: Added.
(test.c):
(test.e):
(test):
* tests/es6/destructuring_with_generic_iterables.js: Added.
(test):
* tests/es6/destructuring_with_instances_of_generic_iterables.js: Added.
(test):
* tests/es6/destructuring_with_objects.js: Added.
(test):
* tests/es6/destructuring_with_sparse_arrays.js: Added.
(test):
* tests/es6/destructuring_with_strings.js: Added.
(test):
* tests/es6/for..of_loops_iterator_closing_break.js: Added.
(test.):
(test):
* tests/es6/for..of_loops_iterator_closing_throw.js: Added.
(test.):
(test):
* tests/es6/for..of_loops_with_arrays.js: Added.
(test):
* tests/es6/for..of_loops_with_astral_plane_strings.js: Added.
(test):
* tests/es6/for..of_loops_with_generator_instances.js: Added.
(test.iterable):
(test):
* tests/es6/for..of_loops_with_generic_iterables.js: Added.
(test):
* tests/es6/for..of_loops_with_instances_of_generic_iterables.js: Added.
(test):
* tests/es6/for..of_loops_with_sparse_arrays.js: Added.
(test):
* tests/es6/for..of_loops_with_strings.js: Added.
(test):
* tests/es6/function_name_property_accessor_properties.js: Added.
(test.o.get foo):
(test.o.set foo):
* tests/es6/function_name_property_bound_functions.js: Added.
(test.foo):
(test):
* tests/es6/function_name_property_class_expressions.js: Added.
(test.return.foo):
(test.name.string_appeared_here.typeof.bar.name):
(test.name.string_appeared_here.typeof.bar):
(test):
* tests/es6/function_name_property_class_prototype_methods.js: Added.
(test.C.prototype.foo):
(test.C):
(test):
* tests/es6/function_name_property_class_statements.js: Added.
(test.foo):
(test.bar.name):
(test.bar):
(test):
* tests/es6/function_name_property_class_static_methods.js: Added.
(test.C.foo):
(test.C):
(test):
* tests/es6/function_name_property_function_expressions.js: Added.
(test):
* tests/es6/function_name_property_function_statements.js: Added.
(test.foo):
(test):
* tests/es6/function_name_property_isnt_writable_is_configurable.js: Added.
(test):
* tests/es6/function_name_property_new_Function.js: Added.
(test):
* tests/es6/function_name_property_object_methods_class.js: Added.
(test.o):
* tests/es6/function_name_property_object_methods_function.js: Added.
(test.o.foo):
(test.o.bar):
(test.o.qux):
(test):
* tests/es6/function_name_property_shorthand_methods.js: Added.
(test):
* tests/es6/function_name_property_shorthand_methods_no_lexical_binding.js: Added.
(test):
* tests/es6/function_name_property_symbol-keyed_methods.js: Added.
(test.o.sym1):
(test.o.sym2):
(test):
* tests/es6/function_name_property_variables_class.js: Added.
(test.bar):
(test.qux):
* tests/es6/function_name_property_variables_function.js: Added.
(test.foo):
(test.bar):
(test):
* tests/es6/generators_%GeneratorPrototype%.constructor.js: Added.
(test.g):
(test):
* tests/es6/generators_%GeneratorPrototype%.js: Added.
(test.generatorFn):
(test):
* tests/es6/generators_%GeneratorPrototype%.return.js: Added.
(test.generator):
(test):
* tests/es6/generators_%GeneratorPrototype%.throw.js: Added.
(test.generator):
(test):
* tests/es6/generators_basic_functionality.js: Added.
(test.generator):
(test):
* tests/es6/generators_cant_use_this_with_new.js: Added.
(test.generator):
(test):
* tests/es6/generators_computed_shorthand_generators.js: Added.
(test):
* tests/es6/generators_computed_shorthand_generators_classes.js: Added.
(test.C.prototype.garply):
(test.C):
(test):
* tests/es6/generators_correct_this_binding.js: Added.
(test.generator):
(test):
* tests/es6/generators_generator_function_expressions.js: Added.
(test.generator):
(test):
* tests/es6/generators_sending.js: Added.
(test.generator):
(test):
* tests/es6/generators_shorthand_generator_methods.js: Added.
(test):
* tests/es6/generators_shorthand_generator_methods_classes.js: Added.
(test.C.prototype.generator):
(test.C):
(test):
* tests/es6/generators_string-keyed_shorthand_generator_methods.js: Added.
(test):
* tests/es6/generators_yield_*_arrays.js: Added.
(test.iterator):
(test):
* tests/es6/generators_yield_*_astral_plane_strings.js: Added.
(test.iterator):
(test):
* tests/es6/generators_yield_*_generator_instances.js: Added.
(test.iterator):
(test):
* tests/es6/generators_yield_*_generic_iterables.js: Added.
(test.iterator):
(test):
* tests/es6/generators_yield_*_instances_of_iterables.js: Added.
(test.iterator):
(test):
* tests/es6/generators_yield_*_iterator_closing.js: Added.
(test.):
(test.gen):
(test):
* tests/es6/generators_yield_*_iterator_closing_via_throw.js: Added.
(test.):
(test.gen):
(test):
* tests/es6/generators_yield_*_on_non-iterables_is_a_runtime_error.js: Added.
(test.iterator):
(test):
* tests/es6/generators_yield_*_sparse_arrays.js: Added.
(test.iterator):
(test):
* tests/es6/generators_yield_*_strings.js: Added.
(test.iterator):
(test):
* tests/es6/generators_yield_operator_precedence.js: Added.
(test.generator):
(test):
* tests/es6/let_basic_support.js: Added.
(test):
* tests/es6/let_basic_support_strict_mode.js: Added.
(test):
* tests/es6/let_for-loop_iteration_scope.js: Added.
(test):
* tests/es6/let_for-loop_iteration_scope_strict_mode.js: Added.
(test):
* tests/es6/let_for-loop_statement_scope.js: Added.
(test):
* tests/es6/let_for-loop_statement_scope_strict_mode.js: Added.
(test):
* tests/es6/let_is_block-scoped.js: Added.
(test):
* tests/es6/let_is_block-scoped_strict_mode.js: Added.
(test):
* tests/es6/let_temporal_dead_zone.js: Added.
(test.passed):
(test):
* tests/es6/let_temporal_dead_zone_strict_mode.js: Added.
(test.passed):
(test):
* tests/es6/miscellaneous_Invalid_Date.js: Added.
(test):
* tests/es6/miscellaneous_RegExp_constructor_can_alter_flags.js: Added.
(test):
* tests/es6/miscellaneous_String.prototype_case_methods_Unicode_support.js: Added.
(test):
* tests/es6/miscellaneous_accessors_arent_constructors.js: Added.
(test.get catch):
(test):
* tests/es6/miscellaneous_built-in_prototypes_are_not_instances.js: Added.
(test):
* tests/es6/miscellaneous_duplicate_property_names_in_strict_mode.js: Added.
(test):
* tests/es6/miscellaneous_function_length_is_configurable.js: Added.
(test.fn):
(test):
* tests/es6/miscellaneous_no_assignments_allowed_in_for-in_head.js: Added.
(test):
* tests/es6/miscellaneous_no_escaped_reserved_words_as_identifiers.js: Added.
(test):
* tests/es6/miscellaneous_no_semicolon_needed_after_do-while.js: Added.
(test):
* tests/es6/miscellaneous_subclassables_Boolean_is_subclassable.js: Added.
(test.C):
(test):
* tests/es6/miscellaneous_subclassables_Map_is_subclassable.js: Added.
(test):
* tests/es6/miscellaneous_subclassables_Number_is_subclassable.js: Added.
(test.C):
(test):
* tests/es6/miscellaneous_subclassables_Set_is_subclassable.js: Added.
(test):
* tests/es6/miscellaneous_subclassables_String_is_subclassable.js: Added.
(test.C):
(test):
* tests/es6/new.target_assignment_is_an_early_error.js: Added.
(test.new.f):
(test):
* tests/es6/new.target_in_constructors.js: Added.
(test.new.f):
(test):
* tests/es6/non-strict_function_semantics_function_statements_in_if-statement_clauses.js: Added.
(test.foo):
(test.else.bar):
(test.baz):
(test.qux):
(test.else.qux):
(test):
* tests/es6/non-strict_function_semantics_hoisted_block-level_function_declaration.js: Added.
(test.f):
(test.g):
(test.h):
(test):
* tests/es6/non-strict_function_semantics_labeled_function_statements.js: Added.
(test.label):
(test):
* tests/es6/object_literal_extensions_computed_accessors.js: Added.
(test.obj.get x):
(test.obj.set x):
(test):
* tests/es6/object_literal_extensions_computed_properties.js: Added.
(test):
* tests/es6/object_literal_extensions_computed_shorthand_methods.js: Added.
(test):
* tests/es6/object_literal_extensions_shorthand_methods.js: Added.
(test):
* tests/es6/object_literal_extensions_shorthand_properties.js: Added.
(test):
* tests/es6/object_literal_extensions_string-keyed_shorthand_methods.js: Added.
(test):
* tests/es6/octal_and_binary_literals_binary_literals.js: Added.
(test):
* tests/es6/octal_and_binary_literals_binary_supported_by_Number.js: Added.
(test):
* tests/es6/octal_and_binary_literals_octal_literals.js: Added.
(test):
* tests/es6/octal_and_binary_literals_octal_supported_by_Number.js: Added.
(test):
* tests/es6/own_property_order_JSON.parse.js: Added.
(test):
* tests/es6/own_property_order_JSON.stringify.js: Added.
(test):
* tests/es6/own_property_order_Object.assign.js: Added.
* tests/es6/own_property_order_Object.getOwnPropertyNames.js: Added.
(test):
* tests/es6/own_property_order_Object.keys.js: Added.
(test):
* tests/es6/own_property_order_Reflect.ownKeys_string_key_order.js: Added.
(test):
* tests/es6/own_property_order_Reflect.ownKeys_symbol_key_order.js: Added.
(test):
* tests/es6/own_property_order_for..in.js: Added.
(test):
* tests/es6/proper_tail_calls_tail_call_optimisation_direct_recursion.js: Added.
(test):
* tests/es6/proper_tail_calls_tail_call_optimisation_mutual_recursion.js: Added.
(test.f):
(test.g):
(test):
* tests/es6/prototype_of_bound_functions_arrow_functions.js: Added.
(test.correctProtoBound):
(test):
* tests/es6/prototype_of_bound_functions_basic_functions.js: Added.
(test.correctProtoBound.f):
(test.correctProtoBound):
(test):
* tests/es6/prototype_of_bound_functions_classes.js: Added.
(test.correctProtoBound.C):
(test.correctProtoBound):
(test):
* tests/es6/prototype_of_bound_functions_generator_functions.js: Added.
(test.correctProtoBound.f):
(test.correctProtoBound):
(test):
* tests/es6/prototype_of_bound_functions_subclasses.js: Added.
(test.correctProtoBound.C):
(test.correctProtoBound):
(test):
* tests/es6/rest_parameters_arguments_object_interaction.js: Added.
(test):
* tests/es6/rest_parameters_basic_functionality.js: Added.
(test):
* tests/es6/rest_parameters_cant_be_used_in_setters.js: Added.
(test):
* tests/es6/rest_parameters_function_length_property.js: Added.
(test):
* tests/es6/rest_parameters_new_Function_support.js: Added.
(test):
* tests/es6/spread_..._operator_spreading_non-iterables_is_a_runtime_error.js: Added.
(test):
* tests/es6/spread_..._operator_with_arrays_in_array_literals.js: Added.
(test):
* tests/es6/spread_..._operator_with_arrays_in_function_calls.js: Added.
(test):
* tests/es6/spread_..._operator_with_astral_plane_strings_in_array_literals.js: Added.
(test):
* tests/es6/spread_..._operator_with_astral_plane_strings_in_function_calls.js: Added.
(test):
* tests/es6/spread_..._operator_with_generator_instances_in_arrays.js: Added.
(test.iterable):
(test):
* tests/es6/spread_..._operator_with_generator_instances_in_calls.js: Added.
(test.iterable):
(test):
* tests/es6/spread_..._operator_with_generic_iterables_in_arrays.js: Added.
(test):
* tests/es6/spread_..._operator_with_generic_iterables_in_calls.js: Added.
(test):
* tests/es6/spread_..._operator_with_instances_of_iterables_in_arrays.js: Added.
(test):
* tests/es6/spread_..._operator_with_instances_of_iterables_in_calls.js: Added.
(test):
* tests/es6/spread_..._operator_with_sparse_arrays_in_array_literals.js: Added.
(test):
* tests/es6/spread_..._operator_with_sparse_arrays_in_function_calls.js: Added.
(test):
* tests/es6/spread_..._operator_with_strings_in_array_literals.js: Added.
(test):
* tests/es6/spread_..._operator_with_strings_in_function_calls.js: Added.
(test):
* tests/es6/super_constructor_calls_use_correct_new.target_binding.js: Added.
(test.B):
(test):
* tests/es6/super_expression_in_constructors.js: Added.
(test.B):
(test.C):
(test):
* tests/es6/super_in_methods_method_calls.js: Added.
(test.B.prototype.qux):
(test.B):
(test.C.prototype.qux):
(test.C):
(test):
* tests/es6/super_in_methods_property_access.js: Added.
(test.B):
(test.C.prototype.quux):
(test.C):
(test):
* tests/es6/super_is_statically_bound.js: Added.
(test.B.prototype.qux):
(test.B):
(test.C.prototype.qux):
(test.C):
(test):
* tests/es6/super_method_calls_use_correct_this_binding.js: Added.
(test.B.prototype.qux):
(test.B):
(test.C.prototype.qux):
(test.C):
(test):
* tests/es6/super_statement_in_constructors.js: Added.
(test.B):
(test):
* tests/es6/template_strings_basic_functionality.js: Added.
(test):
* tests/es6/template_strings_line_break_normalisation.js: Added.
(test):
* tests/es6/template_strings_passed_array_is_frozen.js: Added.
(test):
* tests/es6/template_strings_tagged_template_strings.js: Added.
(test.fn):
(test):
* tests/es6/template_strings_toString_conversion.js: Added.
(test.a.toString):
(test.a.valueOf):
(test):
* tests/es6/typed_arrays_%TypedArray%.from.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.of.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.prototype.copyWithin.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.prototype.entries.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.prototype.every.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.prototype.fill.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.prototype.filter.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.prototype.find.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.prototype.findIndex.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.prototype.forEach.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.prototype.indexOf.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.prototype.join.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.prototype.keys.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.prototype.lastIndexOf.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.prototype.map.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.prototype.reduce.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.prototype.reduceRight.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.prototype.reverse.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.prototype.slice.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.prototype.some.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.prototype.sort.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.prototype.subarray.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.prototype.values.js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%.prototype[Symbol.iterator].js: Added.
(test):
* tests/es6/typed_arrays_%TypedArray%[Symbol.species].js: Added.
(test):
* tests/es6/typed_arrays_ArrayBuffer[Symbol.species].js: Added.
(test):
* tests/es6/typed_arrays_DataView_Float32.js: Added.
(test):
* tests/es6/typed_arrays_DataView_Float64.js: Added.
(test):
* tests/es6/typed_arrays_DataView_Int16.js: Added.
(test):
* tests/es6/typed_arrays_DataView_Int32.js: Added.
(test):
* tests/es6/typed_arrays_DataView_Int8.js: Added.
(test):
* tests/es6/typed_arrays_DataView_Uint16.js: Added.
(test):
* tests/es6/typed_arrays_DataView_Uint32.js: Added.
(test):
* tests/es6/typed_arrays_DataView_Uint8.js: Added.
(test):
* tests/es6/typed_arrays_Float32Array.js: Added.
(test):
* tests/es6/typed_arrays_Float64Array.js: Added.
(test):
* tests/es6/typed_arrays_Int16Array.js: Added.
(test):
* tests/es6/typed_arrays_Int32Array.js: Added.
(test):
* tests/es6/typed_arrays_Int8Array.js: Added.
(test):
* tests/es6/typed_arrays_Uint16Array.js: Added.
(test):
* tests/es6/typed_arrays_Uint32Array.js: Added.
(test):
* tests/es6/typed_arrays_Uint8Array.js: Added.
(test):
* tests/es6/typed_arrays_Uint8ClampedArray.js: Added.
(test):
* tests/es6/typed_arrays_constructors_require_new.js: Added.
(test):
* tests/es6/typed_arrays_correct_prototype_chains.js: Added.
(test):
* tests/es6/well-known_symbols_Symbol.hasInstance.js: Added.
(test.C):
(test.):
(test):
* tests/es6/well-known_symbols_Symbol.isConcatSpreadable.js: Added.
(test):
* tests/es6/well-known_symbols_Symbol.iterator_arguments_object.js: Added.
(test):
* tests/es6/well-known_symbols_Symbol.iterator_existence.js: Added.
(test):
* tests/es6/well-known_symbols_Symbol.match.js: Added.
(test.O.Symbol.match):
(test):
* tests/es6/well-known_symbols_Symbol.replace.js: Added.
(test.O.Symbol.replace):
(test):
* tests/es6/well-known_symbols_Symbol.search.js: Added.
(test.O.Symbol.search):
(test):
* tests/es6/well-known_symbols_Symbol.species_Array.prototype.concat.js: Added.
(test.obj.Symbol.species):
(test):
* tests/es6/well-known_symbols_Symbol.species_Array.prototype.filter.js: Added.
(test.obj.Symbol.species):
(test):
* tests/es6/well-known_symbols_Symbol.species_Array.prototype.map.js: Added.
(test.obj.Symbol.species):
(test):
* tests/es6/well-known_symbols_Symbol.species_Array.prototype.slice.js: Added.
(test.obj.Symbol.species):
(test):
* tests/es6/well-known_symbols_Symbol.species_Array.prototype.splice.js: Added.
(test.obj.Symbol.species):
(test):
* tests/es6/well-known_symbols_Symbol.species_RegExp.prototype[Symbol.split].js: Added.
(test.obj.Symbol.species):
(test):
* tests/es6/well-known_symbols_Symbol.species_existence.js: Added.
(test):
* tests/es6/well-known_symbols_Symbol.split.js: Added.
(test.O.Symbol.split):
(test):
* tests/es6/well-known_symbols_Symbol.toPrimitive.js: Added.
(test.a.Symbol.toPrimitive):
(test.b.Symbol.toPrimitive):
(test.c.Symbol.toPrimitive):
(test):
* tests/es6/well-known_symbols_Symbol.toStringTag.js: Added.
(test):
* tests/es6/well-known_symbols_Symbol.toStringTag_misc._built-ins.js: Added.
(test):
* tests/es6/well-known_symbols_Symbol.unscopables.js: Added.
(test):

Tools:

* Scripts/run-javascriptcore-tests:
(runJSCStressTests): Added es6 as a test suite.

* Scripts/run-jsc-stress-tests: Added es6 as a test suite.

Some of these tests currently fail, so I also added a way to expect
failure for now. We'll migrate failing tests to expected passes as we
fix them.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@189333 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog
index 511fe8c..98d1fe8 100644
--- a/Source/JavaScriptCore/ChangeLog
+++ b/Source/JavaScriptCore/ChangeLog
@@ -1,3 +1,1494 @@
+2015-09-03  Geoffrey Garen  <ggaren@apple.com>
+
+        JavaScriptCore should have some ES6 conformance tests
+        https://bugs.webkit.org/show_bug.cgi?id=148771
+
+        Reviewed by Chris Dumez.
+
+        I created 590 independent, reduced test cases that collectively tell us
+        whether we pass or fail the conformance matrix @ http://kangax.github.io/compat-table/es6/.
+
+        * tests/es6: Added.
+        * tests/es6.yaml: Added.
+        * tests/es6/Array.prototype_methods_Array.prototype.copyWithin.js: Added.
+        (test):
+        * tests/es6/Array.prototype_methods_Array.prototype.entries.js: Added.
+        (test):
+        * tests/es6/Array.prototype_methods_Array.prototype.fill.js: Added.
+        (test):
+        * tests/es6/Array.prototype_methods_Array.prototype.find.js: Added.
+        (test):
+        * tests/es6/Array.prototype_methods_Array.prototype.findIndex.js: Added.
+        (test):
+        * tests/es6/Array.prototype_methods_Array.prototype.keys.js: Added.
+        (test):
+        * tests/es6/Array.prototype_methods_Array.prototype.values.js: Added.
+        (test):
+        * tests/es6/Array.prototype_methods_Array.prototype[Symbol.iterator].js: Added.
+        (test):
+        * tests/es6/Array.prototype_methods_Array.prototype[Symbol.unscopables].js: Added.
+        (test):
+        * tests/es6/Array.prototype_methods_Array_iterator_prototype_chain.js: Added.
+        (test):
+        * tests/es6/Array_is_subclassable_Array.from.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/Array_is_subclassable_Array.isArray_support.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/Array_is_subclassable_Array.of.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/Array_is_subclassable_Array.prototype.concat.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/Array_is_subclassable_Array.prototype.filter.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/Array_is_subclassable_Array.prototype.map.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/Array_is_subclassable_Array.prototype.slice.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/Array_is_subclassable_Array.prototype.splice.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/Array_is_subclassable_correct_prototype_chain.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/Array_is_subclassable_length_property_accessing.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/Array_is_subclassable_length_property_setting.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/Array_static_methods_Array.from_array-like_objects.js: Added.
+        (test):
+        * tests/es6/Array_static_methods_Array.from_generator_instances.js: Added.
+        (test.iterable):
+        (test):
+        * tests/es6/Array_static_methods_Array.from_generic_iterables.js: Added.
+        (test):
+        * tests/es6/Array_static_methods_Array.from_instances_of_generic_iterables.js: Added.
+        (test):
+        * tests/es6/Array_static_methods_Array.from_iterator_closing.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Array_static_methods_Array.from_map_function_array-like_objects.js: Added.
+        (test):
+        * tests/es6/Array_static_methods_Array.from_map_function_generator_instances.js: Added.
+        (test.iterable):
+        (test):
+        * tests/es6/Array_static_methods_Array.from_map_function_generic_iterables.js: Added.
+        (test):
+        * tests/es6/Array_static_methods_Array.from_map_function_instances_of_iterables.js: Added.
+        (test):
+        * tests/es6/Array_static_methods_Array.of.js: Added.
+        (test):
+        * tests/es6/Array_static_methods_Array[Symbol.species].js: Added.
+        (test):
+        * tests/es6/Function_is_subclassable_Function.prototype.apply.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/Function_is_subclassable_Function.prototype.bind.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/Function_is_subclassable_Function.prototype.call.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/Function_is_subclassable_can_be_called.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/Function_is_subclassable_can_be_used_with_new.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/Function_is_subclassable_correct_prototype_chain.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/HTML-style_comments.js: Added.
+        (test):
+        * tests/es6/Map_-0_key_converts_to_+0.js: Added.
+        (test.set var):
+        * tests/es6/Map_Map.prototype.clear.js: Added.
+        (test):
+        * tests/es6/Map_Map.prototype.delete.js: Added.
+        (test):
+        * tests/es6/Map_Map.prototype.entries.js: Added.
+        (test):
+        * tests/es6/Map_Map.prototype.forEach.js: Added.
+        (test):
+        * tests/es6/Map_Map.prototype.keys.js: Added.
+        (test):
+        * tests/es6/Map_Map.prototype.set_returns_this.js: Added.
+        * tests/es6/Map_Map.prototype.size.js: Added.
+        * tests/es6/Map_Map.prototype.values.js: Added.
+        (test):
+        * tests/es6/Map_Map.prototype[Symbol.iterator].js: Added.
+        (test):
+        * tests/es6/Map_Map[Symbol.species].js: Added.
+        (test):
+        * tests/es6/Map_Map_iterator_prototype_chain.js: Added.
+        (test):
+        * tests/es6/Map_basic_functionality.js: Added.
+        * tests/es6/Map_constructor_accepts_null.js: Added.
+        (test):
+        * tests/es6/Map_constructor_arguments.js: Added.
+        * tests/es6/Map_constructor_invokes_set.js: Added.
+        * tests/es6/Map_constructor_requires_new.js: Added.
+        (test):
+        * tests/es6/Map_iterator_closing.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Math_methods_Math.acosh.js: Added.
+        (test):
+        * tests/es6/Math_methods_Math.asinh.js: Added.
+        (test):
+        * tests/es6/Math_methods_Math.atanh.js: Added.
+        (test):
+        * tests/es6/Math_methods_Math.cbrt.js: Added.
+        (test):
+        * tests/es6/Math_methods_Math.clz32.js: Added.
+        (test):
+        * tests/es6/Math_methods_Math.cosh.js: Added.
+        (test):
+        * tests/es6/Math_methods_Math.expm1.js: Added.
+        (test):
+        * tests/es6/Math_methods_Math.fround.js: Added.
+        (test):
+        * tests/es6/Math_methods_Math.hypot.js: Added.
+        (test):
+        * tests/es6/Math_methods_Math.imul.js: Added.
+        (test):
+        * tests/es6/Math_methods_Math.log10.js: Added.
+        (test):
+        * tests/es6/Math_methods_Math.log1p.js: Added.
+        (test):
+        * tests/es6/Math_methods_Math.log2.js: Added.
+        (test):
+        * tests/es6/Math_methods_Math.sign.js: Added.
+        (test):
+        * tests/es6/Math_methods_Math.sinh.js: Added.
+        (test):
+        * tests/es6/Math_methods_Math.tanh.js: Added.
+        (test):
+        * tests/es6/Math_methods_Math.trunc.js: Added.
+        (test):
+        * tests/es6/Number_properties_Number.EPSILON.js: Added.
+        (test):
+        * tests/es6/Number_properties_Number.MAX_SAFE_INTEGER.js: Added.
+        (test):
+        * tests/es6/Number_properties_Number.MIN_SAFE_INTEGER.js: Added.
+        (test):
+        * tests/es6/Number_properties_Number.isFinite.js: Added.
+        (test):
+        * tests/es6/Number_properties_Number.isInteger.js: Added.
+        (test):
+        * tests/es6/Number_properties_Number.isNaN.js: Added.
+        (test):
+        * tests/es6/Number_properties_Number.isSafeInteger.js: Added.
+        (test):
+        * tests/es6/Object.prototype.__proto___absent_from_Object.createnull.js: Added.
+        (test):
+        * tests/es6/Object.prototype.__proto___correct_property_descriptor.js: Added.
+        (test.A):
+        (test):
+        * tests/es6/Object.prototype.__proto___get_prototype.js: Added.
+        (test.A):
+        (test):
+        * tests/es6/Object.prototype.__proto___present_in_Object.getOwnPropertyNames.js: Added.
+        (test):
+        * tests/es6/Object.prototype.__proto___present_in_hasOwnProperty.js: Added.
+        (test):
+        * tests/es6/Object.prototype.__proto___set_prototype.js: Added.
+        (test):
+        * tests/es6/Object_static_methods_Object.assign.js: Added.
+        (test):
+        * tests/es6/Object_static_methods_Object.getOwnPropertySymbols.js: Added.
+        (test):
+        * tests/es6/Object_static_methods_Object.is.js: Added.
+        (test):
+        * tests/es6/Object_static_methods_Object.setPrototypeOf.js: Added.
+        (test):
+        * tests/es6/Object_static_methods_accept_primitives_Object.freeze.js: Added.
+        (test):
+        * tests/es6/Object_static_methods_accept_primitives_Object.getOwnPropertyDescriptor.js: Added.
+        (test):
+        * tests/es6/Object_static_methods_accept_primitives_Object.getOwnPropertyNames.js: Added.
+        (test):
+        * tests/es6/Object_static_methods_accept_primitives_Object.getPrototypeOf.js: Added.
+        (test):
+        * tests/es6/Object_static_methods_accept_primitives_Object.isExtensible.js: Added.
+        (test):
+        * tests/es6/Object_static_methods_accept_primitives_Object.isFrozen.js: Added.
+        (test):
+        * tests/es6/Object_static_methods_accept_primitives_Object.isSealed.js: Added.
+        (test):
+        * tests/es6/Object_static_methods_accept_primitives_Object.keys.js: Added.
+        (test):
+        * tests/es6/Object_static_methods_accept_primitives_Object.preventExtensions.js: Added.
+        (test):
+        * tests/es6/Object_static_methods_accept_primitives_Object.seal.js: Added.
+        (test):
+        * tests/es6/Promise_Promise.all.js: Added.
+        (test):
+        * tests/es6/Promise_Promise.all_generic_iterables.js: Added.
+        (test):
+        * tests/es6/Promise_Promise.race.js: Added.
+        (test):
+        * tests/es6/Promise_Promise.race_generic_iterables.js: Added.
+        (test):
+        * tests/es6/Promise_Promise[Symbol.species].js: Added.
+        (test):
+        * tests/es6/Promise_basic_functionality.js: Added.
+        (test.thenFn):
+        (test.catchFn):
+        (test.shouldNotRun):
+        (test):
+        * tests/es6/Promise_constructor_requires_new.js: Added.
+        (test):
+        * tests/es6/Promise_is_subclassable_Promise.all.js: Added.
+        (test.P):
+        (test):
+        * tests/es6/Promise_is_subclassable_Promise.race.js: Added.
+        (test.P):
+        (test):
+        * tests/es6/Promise_is_subclassable_basic_functionality.js: Added.
+        (test.P):
+        (test):
+        (test.catchFn):
+        (test.shouldNotRun):
+        * tests/es6/Promise_is_subclassable_correct_prototype_chain.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/Proxy_Array.isArray_support.js: Added.
+        (test):
+        * tests/es6/Proxy_JSON.stringify_support.js: Added.
+        (test):
+        * tests/es6/Proxy_Proxy.revocable.js: Added.
+        (test.):
+        (test.get var):
+        (test):
+        * tests/es6/Proxy_apply_handler.js: Added.
+        (test.proxied):
+        (test.host.):
+        (test):
+        * tests/es6/Proxy_construct_handler.js: Added.
+        (test.proxied):
+        (test.):
+        (test):
+        * tests/es6/Proxy_constructor_requires_new.js: Added.
+        (test):
+        * tests/es6/Proxy_defineProperty_handler.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_deleteProperty_handler.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_enumerate_handler.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_getOwnPropertyDescriptor_handler.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_getPrototypeOf_handler.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_get_handler.js: Added.
+        (test.):
+        * tests/es6/Proxy_get_handler_instances_of_proxies.js: Added.
+        (test.):
+        * tests/es6/Proxy_has_handler.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_has_handler_instances_of_proxies.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_internal_defineProperty_calls_SetIntegrityLevel.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_internal_defineProperty_calls_[[Set]].js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.copyWithin.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.pop.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.reverse.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.shift.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.splice.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.unshift.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_internal_getOwnPropertyDescriptor_calls_Function.prototype.bind.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_internal_getOwnPropertyDescriptor_calls_Object.assign.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_internal_getOwnPropertyDescriptor_calls_Object.prototype.hasOwnProperty.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_internal_getOwnPropertyDescriptor_calls_[[Set]].js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_internal_get_calls_Array.from.js: Added.
+        (test.get var):
+        (test.):
+        * tests/es6/Proxy_internal_get_calls_Array.prototype.concat.js: Added.
+        (test.):
+        (test.get var):
+        * tests/es6/Proxy_internal_get_calls_Array.prototype.pop.js: Added.
+        (test.):
+        (test.get var):
+        * tests/es6/Proxy_internal_get_calls_Array.prototype.reverse.js: Added.
+        (test.):
+        (test.get var):
+        * tests/es6/Proxy_internal_get_calls_Array.prototype.shift.js: Added.
+        (test.):
+        (test.get var):
+        * tests/es6/Proxy_internal_get_calls_Array.prototype.splice.js: Added.
+        (test.):
+        (test.get var):
+        * tests/es6/Proxy_internal_get_calls_Array.prototype.toString.js: Added.
+        (test.get var):
+        (test.):
+        * tests/es6/Proxy_internal_get_calls_Array.prototype_iteration_methods.js: Added.
+        (test.get var):
+        (test.):
+        * tests/es6/Proxy_internal_get_calls_ClassDefinitionEvaluation.js: Added.
+        (test.):
+        (test.get var):
+        (test):
+        * tests/es6/Proxy_internal_get_calls_CreateDynamicFunction.js: Added.
+        (test.):
+        (test.get var):
+        * tests/es6/Proxy_internal_get_calls_CreateListFromArrayLike.js: Added.
+        (test.get var):
+        (test.):
+        (test.get Function):
+        * tests/es6/Proxy_internal_get_calls_Date.prototype.toJSON.js: Added.
+        (test.get var):
+        (test.):
+        * tests/es6/Proxy_internal_get_calls_Error.prototype.toString.js: Added.
+        (test.get var):
+        (test.):
+        * tests/es6/Proxy_internal_get_calls_Function.prototype.bind.js: Added.
+        (test.):
+        (test.get var):
+        * tests/es6/Proxy_internal_get_calls_HasBinding.js: Added.
+        (test.get var):
+        (test.):
+        (test.get p):
+        * tests/es6/Proxy_internal_get_calls_IteratorComplete_IteratorValue.js: Added.
+        (test.get var):
+        (test.iterable.Symbol.iterator.return.next.):
+        (test.iterable.Symbol.iterator.return.next):
+        (test.iterable.Symbol.iterator):
+        * tests/es6/Proxy_internal_get_calls_JSON.stringify.js: Added.
+        (test.get var):
+        (test.):
+        * tests/es6/Proxy_internal_get_calls_Object.assign.js: Added.
+        (test.get var):
+        (test.):
+        (test.get Object):
+        * tests/es6/Proxy_internal_get_calls_Object.defineProperties.js: Added.
+        (test.get var):
+        (test.):
+        (test.get Object):
+        * tests/es6/Proxy_internal_get_calls_Promise_resolve_functions.js: Added.
+        (test.get var):
+        (test.):
+        (test.get new):
+        * tests/es6/Proxy_internal_get_calls_RegExp.prototype.flags.js: Added.
+        (test.get var):
+        (test.):
+        * tests/es6/Proxy_internal_get_calls_RegExp.prototype.test.js: Added.
+        (test.get var.p.new.Proxy):
+        (test.get var):
+        (test.):
+        * tests/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.match].js: Added.
+        (test.get var.p.new.Proxy):
+        (test.get var):
+        (test.):
+        * tests/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.replace].js: Added.
+        (test.get var.p.new.Proxy):
+        (test.get var):
+        (test.):
+        * tests/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.search].js: Added.
+        (test.get var.p.new.Proxy):
+        (test.get var):
+        (test.):
+        * tests/es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.split].js: Added.
+        (test.p.new.Proxy):
+        (test.get var):
+        (test.):
+        * tests/es6/Proxy_internal_get_calls_RegExp_constructor.js: Added.
+        (test.get var):
+        (test.):
+        * tests/es6/Proxy_internal_get_calls_String.prototype.match.js: Added.
+        (test.get var):
+        (test.):
+        * tests/es6/Proxy_internal_get_calls_String.prototype.replace.js: Added.
+        (test.get var):
+        (test.):
+        * tests/es6/Proxy_internal_get_calls_String.prototype.search.js: Added.
+        (test.get var):
+        (test.):
+        * tests/es6/Proxy_internal_get_calls_String.prototype.split.js: Added.
+        (test.get var):
+        (test.):
+        * tests/es6/Proxy_internal_get_calls_String.raw.js: Added.
+        (test.get var):
+        (test.):
+        * tests/es6/Proxy_internal_get_calls_ToPrimitive.js: Added.
+        (test.get var):
+        (test.):
+        * tests/es6/Proxy_internal_get_calls_ToPropertyDescriptor.js: Added.
+        (test.get var):
+        (test.):
+        (test.set get try):
+        * tests/es6/Proxy_internal_get_calls_instanceof_operator.js: Added.
+        (test.):
+        (test.get var):
+        * tests/es6/Proxy_internal_ownKeys_calls_SerializeJSONObject.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_internal_ownKeys_calls_SetIntegrityLevel.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_internal_ownKeys_calls_TestIntegrityLevel.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_internal_set_calls_Array.from.js: Added.
+        (test.set var):
+        (test.):
+        (test.set Array):
+        * tests/es6/Proxy_internal_set_calls_Array.of.js: Added.
+        (test.set var):
+        (test.):
+        (test.set Array):
+        * tests/es6/Proxy_internal_set_calls_Array.prototype.copyWithin.js: Added.
+        (test.):
+        (test.set var):
+        * tests/es6/Proxy_internal_set_calls_Array.prototype.fill.js: Added.
+        (test.):
+        (test.set var):
+        * tests/es6/Proxy_internal_set_calls_Array.prototype.pop.js: Added.
+        (test.):
+        (test.set var):
+        * tests/es6/Proxy_internal_set_calls_Array.prototype.push.js: Added.
+        (test.):
+        (test.set var):
+        * tests/es6/Proxy_internal_set_calls_Array.prototype.reverse.js: Added.
+        (test.):
+        (test.set var):
+        * tests/es6/Proxy_internal_set_calls_Array.prototype.shift.js: Added.
+        (test.):
+        (test.set var):
+        * tests/es6/Proxy_internal_set_calls_Array.prototype.splice.js: Added.
+        (test.):
+        (test.set var):
+        * tests/es6/Proxy_internal_set_calls_Array.prototype.unshift.js: Added.
+        (test.):
+        (test.set var):
+        * tests/es6/Proxy_internal_set_calls_Object.assign.js: Added.
+        (test.set var):
+        (test.):
+        (test.set Object):
+        * tests/es6/Proxy_isExtensible_handler.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_ownKeys_handler.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_preventExtensions_handler.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_setPrototypeOf_handler.js: Added.
+        (test.):
+        (test):
+        * tests/es6/Proxy_set_handler.js: Added.
+        (test.):
+        * tests/es6/Proxy_set_handler_instances_of_proxies.js: Added.
+        (test.):
+        * tests/es6/Reflect_Reflect.apply.js: Added.
+        (test):
+        * tests/es6/Reflect_Reflect.construct.js: Added.
+        (test):
+        * tests/es6/Reflect_Reflect.construct_creates_instance_from_newTarget_argument.js: Added.
+        (test.F):
+        (test):
+        * tests/es6/Reflect_Reflect.construct_sets_new.target_meta_property.js: Added.
+        (test):
+        * tests/es6/Reflect_Reflect.defineProperty.js: Added.
+        (test):
+        * tests/es6/Reflect_Reflect.deleteProperty.js: Added.
+        (test):
+        * tests/es6/Reflect_Reflect.enumerate.js: Added.
+        (test):
+        * tests/es6/Reflect_Reflect.get.js: Added.
+        * tests/es6/Reflect_Reflect.getOwnPropertyDescriptor.js: Added.
+        (test):
+        * tests/es6/Reflect_Reflect.getPrototypeOf.js: Added.
+        (test):
+        * tests/es6/Reflect_Reflect.has.js: Added.
+        (test):
+        * tests/es6/Reflect_Reflect.isExtensible.js: Added.
+        (test):
+        * tests/es6/Reflect_Reflect.ownKeys_string_keys.js: Added.
+        (test):
+        * tests/es6/Reflect_Reflect.ownKeys_symbol_keys.js: Added.
+        (test):
+        * tests/es6/Reflect_Reflect.preventExtensions.js: Added.
+        (test):
+        * tests/es6/Reflect_Reflect.set.js: Added.
+        * tests/es6/Reflect_Reflect.setPrototypeOf.js: Added.
+        (test):
+        * tests/es6/RegExp.prototype.compile.js: Added.
+        (test):
+        * tests/es6/RegExp.prototype_properties_RegExp.prototype.flags.js: Added.
+        (test):
+        * tests/es6/RegExp.prototype_properties_RegExp.prototype[Symbol.match].js: Added.
+        (test):
+        * tests/es6/RegExp.prototype_properties_RegExp.prototype[Symbol.replace].js: Added.
+        (test):
+        * tests/es6/RegExp.prototype_properties_RegExp.prototype[Symbol.search].js: Added.
+        (test):
+        * tests/es6/RegExp.prototype_properties_RegExp.prototype[Symbol.split].js: Added.
+        (test):
+        * tests/es6/RegExp.prototype_properties_RegExp[Symbol.species].js: Added.
+        (test):
+        * tests/es6/RegExp_is_subclassable_RegExp.prototype.exec.js: Added.
+        (test.R):
+        (test):
+        * tests/es6/RegExp_is_subclassable_RegExp.prototype.test.js: Added.
+        (test.R):
+        (test):
+        * tests/es6/RegExp_is_subclassable_basic_functionality.js: Added.
+        (test.R):
+        (test):
+        * tests/es6/RegExp_is_subclassable_correct_prototype_chain.js: Added.
+        (test.R):
+        (test):
+        * tests/es6/RegExp_syntax_extensions_hyphens_in_character_sets.js: Added.
+        (test):
+        * tests/es6/RegExp_syntax_extensions_incomplete_patterns_and_quantifiers.js: Added.
+        * tests/es6/RegExp_syntax_extensions_invalid_Unicode_escapes.js: Added.
+        (test):
+        * tests/es6/RegExp_syntax_extensions_invalid_backreferences_become_octal_escapes.js: Added.
+        (test):
+        * tests/es6/RegExp_syntax_extensions_invalid_character_escapes.js: Added.
+        (test):
+        * tests/es6/RegExp_syntax_extensions_invalid_control-character_escapes.js: Added.
+        (test):
+        * tests/es6/RegExp_syntax_extensions_invalid_hexadecimal_escapes.js: Added.
+        (test):
+        * tests/es6/RegExp_syntax_extensions_octal_escape_sequences.js: Added.
+        (test):
+        * tests/es6/RegExp_y_and_u_flags_u_flag.js: Added.
+        (test):
+        * tests/es6/RegExp_y_and_u_flags_u_flag_Unicode_code_point_escapes.js: Added.
+        (test):
+        * tests/es6/RegExp_y_and_u_flags_y_flag.js: Added.
+        (test):
+        * tests/es6/RegExp_y_and_u_flags_y_flag_lastIndex.js: Added.
+        (test):
+        * tests/es6/Set_-0_key_converts_to_+0.js: Added.
+        (test.set forEach):
+        * tests/es6/Set_Set.prototype.add_returns_this.js: Added.
+        * tests/es6/Set_Set.prototype.clear.js: Added.
+        (test):
+        * tests/es6/Set_Set.prototype.delete.js: Added.
+        (test):
+        * tests/es6/Set_Set.prototype.entries.js: Added.
+        (test):
+        * tests/es6/Set_Set.prototype.forEach.js: Added.
+        (test):
+        * tests/es6/Set_Set.prototype.keys.js: Added.
+        (test):
+        * tests/es6/Set_Set.prototype.size.js: Added.
+        * tests/es6/Set_Set.prototype.values.js: Added.
+        (test):
+        * tests/es6/Set_Set.prototype[Symbol.iterator].js: Added.
+        (test):
+        * tests/es6/Set_Set[Symbol.species].js: Added.
+        (test):
+        * tests/es6/Set_Set_iterator_prototype_chain.js: Added.
+        (test):
+        * tests/es6/Set_basic_functionality.js: Added.
+        * tests/es6/Set_constructor_accepts_null.js: Added.
+        (test):
+        * tests/es6/Set_constructor_arguments.js: Added.
+        * tests/es6/Set_constructor_invokes_add.js: Added.
+        (test.Set.prototype.add):
+        (test):
+        * tests/es6/Set_constructor_requires_new.js: Added.
+        (test):
+        * tests/es6/Set_iterator_closing.js: Added.
+        (test.):
+        (test.Set.prototype.add):
+        (test):
+        * tests/es6/String.prototype_HTML_methods_existence.js: Added.
+        (test):
+        * tests/es6/String.prototype_HTML_methods_quotes_in_arguments_are_escaped.js: Added.
+        (test):
+        * tests/es6/String.prototype_HTML_methods_tags_names_are_lowercase.js: Added.
+        (test):
+        * tests/es6/String.prototype_methods_String.prototype.codePointAt.js: Added.
+        (test):
+        * tests/es6/String.prototype_methods_String.prototype.endsWith.js: Added.
+        (test):
+        * tests/es6/String.prototype_methods_String.prototype.includes.js: Added.
+        (test):
+        * tests/es6/String.prototype_methods_String.prototype.normalize.js: Added.
+        (test):
+        * tests/es6/String.prototype_methods_String.prototype.repeat.js: Added.
+        (test):
+        * tests/es6/String.prototype_methods_String.prototype.startsWith.js: Added.
+        (test):
+        * tests/es6/String.prototype_methods_String.prototype[Symbol.iterator].js: Added.
+        (test):
+        * tests/es6/String.prototype_methods_String_iterator_prototype_chain.js: Added.
+        (test):
+        * tests/es6/String_static_methods_String.fromCodePoint.js: Added.
+        (test):
+        * tests/es6/String_static_methods_String.raw.js: Added.
+        (test):
+        * tests/es6/Symbol_JSON.stringify_ignores_symbols.js: Added.
+        (test):
+        * tests/es6/Symbol_Object.defineProperty_support.js: Added.
+        (test):
+        * tests/es6/Symbol_Objectsymbol.js: Added.
+        (test):
+        * tests/es6/Symbol_basic_functionality.js: Added.
+        (test):
+        * tests/es6/Symbol_can_convert_with_String.js: Added.
+        (test):
+        * tests/es6/Symbol_cannot_coerce_to_string_or_number.js: Added.
+        (test):
+        * tests/es6/Symbol_global_symbol_registry.js: Added.
+        (test):
+        * tests/es6/Symbol_new_Symbol_throws.js: Added.
+        (test):
+        * tests/es6/Symbol_symbol_keys_are_hidden_to_pre-ES6_code.js: Added.
+        (test):
+        * tests/es6/Symbol_typeof_support.js: Added.
+        (test):
+        * tests/es6/Unicode_code_point_escapes_in_identifiers.js: Added.
+        (test):
+        * tests/es6/Unicode_code_point_escapes_in_strings.js: Added.
+        (test):
+        * tests/es6/WeakMap_WeakMap.prototype.delete.js: Added.
+        (test):
+        * tests/es6/WeakMap_WeakMap.prototype.set_returns_this.js: Added.
+        * tests/es6/WeakMap_basic_functionality.js: Added.
+        * tests/es6/WeakMap_constructor_accepts_null.js: Added.
+        (test):
+        * tests/es6/WeakMap_constructor_arguments.js: Added.
+        * tests/es6/WeakMap_constructor_invokes_set.js: Added.
+        * tests/es6/WeakMap_constructor_requires_new.js: Added.
+        (test):
+        * tests/es6/WeakMap_frozen_objects_as_keys.js: Added.
+        * tests/es6/WeakMap_iterator_closing.js: Added.
+        (test.):
+        (test):
+        * tests/es6/WeakMap_no_WeakMap.prototype.clear_method.js: Added.
+        * tests/es6/WeakSet_WeakSet.prototype.add_returns_this.js: Added.
+        (test):
+        * tests/es6/WeakSet_WeakSet.prototype.delete.js: Added.
+        (test):
+        * tests/es6/WeakSet_basic_functionality.js: Added.
+        (test):
+        * tests/es6/WeakSet_constructor_accepts_null.js: Added.
+        (test):
+        * tests/es6/WeakSet_constructor_arguments.js: Added.
+        (test):
+        * tests/es6/WeakSet_constructor_invokes_add.js: Added.
+        (test.WeakSet.prototype.add):
+        (test):
+        * tests/es6/WeakSet_constructor_requires_new.js: Added.
+        (test):
+        * tests/es6/WeakSet_iterator_closing.js: Added.
+        (test.):
+        (test):
+        * tests/es6/WeakSet_no_WeakSet.prototype.clear_method.js: Added.
+        (test):
+        * tests/es6/__proto___in_object_literals_basic_support.js: Added.
+        (test):
+        * tests/es6/__proto___in_object_literals_multiple___proto___is_an_error.js: Added.
+        (test):
+        * tests/es6/__proto___in_object_literals_not_a_computed_property.js: Added.
+        (test):
+        * tests/es6/__proto___in_object_literals_not_a_shorthand_method.js: Added.
+        (test):
+        * tests/es6/__proto___in_object_literals_not_a_shorthand_property.js: Added.
+        (test):
+        * tests/es6/arrow_functions_0_parameters.js: Added.
+        (test):
+        * tests/es6/arrow_functions_1_parameter_no_brackets.js: Added.
+        (test):
+        * tests/es6/arrow_functions_cant_be_bound_can_be_curried.js: Added.
+        (test.d.y):
+        (test):
+        * tests/es6/arrow_functions_correct_precedence.js: Added.
+        (test):
+        * tests/es6/arrow_functions_lexical_arguments_binding.js: Added.
+        (test.f):
+        (test):
+        * tests/es6/arrow_functions_lexical_new.target_binding.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/arrow_functions_lexical_super_binding.js: Added.
+        (test.B.prototype.qux):
+        (test.B):
+        (test.C.prototype.baz):
+        (test.C):
+        (test):
+        * tests/es6/arrow_functions_lexical_this_binding.js: Added.
+        (test.d.y):
+        (test):
+        * tests/es6/arrow_functions_multiple_parameters.js: Added.
+        (test):
+        * tests/es6/arrow_functions_no_line_break_between_params_and_code_=_code.js: Added.
+        (test):
+        * tests/es6/arrow_functions_no_prototype_property.js: Added.
+        (test):
+        * tests/es6/arrow_functions_this_unchanged_by_call_or_apply.js: Added.
+        (test.d.y):
+        (test):
+        * tests/es6/block-level_function_declaration.js: Added.
+        (test.f):
+        (test):
+        * tests/es6/class_accessor_properties.js: Added.
+        (test.C.prototype.get foo):
+        (test.C.prototype.set bar):
+        (test.C):
+        (test):
+        * tests/es6/class_anonymous_class.js: Added.
+        * tests/es6/class_class_expression.js: Added.
+        (test.return.typeof.C):
+        (test):
+        * tests/es6/class_class_name_is_lexically_scoped.js: Added.
+        (test.C.prototype.method):
+        (test.C):
+        (test):
+        * tests/es6/class_class_statement.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/class_computed_accessor_properties.js: Added.
+        (test.C.prototype.get garply):
+        (test.C.prototype.set grault):
+        (test.C):
+        (test):
+        * tests/es6/class_computed_names_temporal_dead_zone.js: Added.
+        (test.try.B.prototype.C):
+        (test.try.B):
+        (test):
+        * tests/es6/class_computed_prototype_methods.js: Added.
+        (test.C.prototype.foo):
+        (test.C):
+        (test):
+        * tests/es6/class_computed_static_accessor_properties.js: Added.
+        (test.C.prototype.get garply):
+        (test.C.prototype.set grault):
+        (test.C):
+        (test):
+        * tests/es6/class_computed_static_methods.js: Added.
+        (test.C.foo):
+        (test.C):
+        (test):
+        * tests/es6/class_constructor.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/class_constructor_requires_new.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/class_extends.js: Added.
+        (test.B):
+        (test.C):
+        (test):
+        * tests/es6/class_extends_expressions.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/class_extends_null.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/class_implicit_strict_mode.js: Added.
+        (test.C.method):
+        (test.C):
+        (test):
+        * tests/es6/class_is_block-scoped.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/class_methods_arent_enumerable.js: Added.
+        (test.C.prototype.foo):
+        (test.C.bar):
+        (test.C):
+        (test):
+        * tests/es6/class_new.target.js: Added.
+        (test.new.f):
+        (test.A):
+        (test.B):
+        (test):
+        * tests/es6/class_prototype_methods.js: Added.
+        (test.C.prototype.method):
+        (test.C):
+        (test):
+        * tests/es6/class_static_accessor_properties.js: Added.
+        (test.C.prototype.get foo):
+        (test.C.prototype.set bar):
+        (test.C):
+        (test):
+        * tests/es6/class_static_methods.js: Added.
+        (test.C.method):
+        (test.C):
+        (test):
+        * tests/es6/class_string-keyed_methods.js: Added.
+        (test.C.prototype.string_appeared_here):
+        (test.C):
+        (test):
+        * tests/es6/const_basic_support.js: Added.
+        (test):
+        * tests/es6/const_basic_support_strict_mode.js: Added.
+        (test):
+        * tests/es6/const_is_block-scoped.js: Added.
+        (test):
+        * tests/es6/const_is_block-scoped_strict_mode.js: Added.
+        (test):
+        * tests/es6/const_redefining_a_const_is_an_error.js: Added.
+        (test):
+        * tests/es6/const_redefining_a_const_strict_mode.js: Added.
+        (test):
+        * tests/es6/const_temporal_dead_zone.js: Added.
+        (test.passed):
+        (test):
+        * tests/es6/const_temporal_dead_zone_strict_mode.js: Added.
+        (test.passed):
+        (test):
+        * tests/es6/default_function_parameters_arguments_object_interaction.js: Added.
+        (test):
+        * tests/es6/default_function_parameters_basic_functionality.js: Added.
+        (test):
+        * tests/es6/default_function_parameters_defaults_can_refer_to_previous_params.js: Added.
+        (test):
+        * tests/es6/default_function_parameters_explicit_undefined_defers_to_the_default.js: Added.
+        (test):
+        * tests/es6/default_function_parameters_new_Function_support.js: Added.
+        (test):
+        * tests/es6/default_function_parameters_separate_scope.js: Added.
+        (test.return):
+        (test):
+        * tests/es6/default_function_parameters_temporal_dead_zone.js: Added.
+        (test):
+        * tests/es6/destructuring_chained_iterable_destructuring.js: Added.
+        (test):
+        * tests/es6/destructuring_chained_object_destructuring.js: Added.
+        (test):
+        * tests/es6/destructuring_computed_properties.js: Added.
+        (test):
+        * tests/es6/destructuring_defaults.js: Added.
+        (test):
+        * tests/es6/destructuring_defaults_in_parameters.js: Added.
+        (test):
+        * tests/es6/destructuring_defaults_in_parameters_new_Function_support.js: Added.
+        (test):
+        * tests/es6/destructuring_defaults_in_parameters_separate_scope.js: Added.
+        (test.return):
+        (test):
+        * tests/es6/destructuring_defaults_let_temporal_dead_zone.js: Added.
+        (test):
+        * tests/es6/destructuring_empty_patterns.js: Added.
+        (test):
+        * tests/es6/destructuring_empty_patterns_in_parameters.js: Added.
+        (test):
+        * tests/es6/destructuring_in_for-in_loop_heads.js: Added.
+        (test):
+        * tests/es6/destructuring_in_for-of_loop_heads.js: Added.
+        (test):
+        * tests/es6/destructuring_in_parameters.js: Added.
+        (test):
+        * tests/es6/destructuring_in_parameters_arguments_interaction.js: Added.
+        (test):
+        * tests/es6/destructuring_in_parameters_function_length_property.js: Added.
+        (test):
+        * tests/es6/destructuring_in_parameters_new_Function_support.js: Added.
+        (test):
+        * tests/es6/destructuring_iterable_destructuring_expression.js: Added.
+        (test):
+        * tests/es6/destructuring_iterator_closing.js: Added.
+        (test.):
+        (test):
+        * tests/es6/destructuring_multiples_in_a_single_var_statement.js: Added.
+        (test):
+        * tests/es6/destructuring_nested.js: Added.
+        (test):
+        * tests/es6/destructuring_nested_rest.js: Added.
+        (test):
+        * tests/es6/destructuring_object_destructuring_expression.js: Added.
+        (test):
+        * tests/es6/destructuring_object_destructuring_with_primitives.js: Added.
+        (test):
+        * tests/es6/destructuring_parenthesised_left-hand-side_is_a_syntax_error.js: Added.
+        (test):
+        * tests/es6/destructuring_rest.js: Added.
+        (test):
+        * tests/es6/destructuring_throws_on_null_and_undefined.js: Added.
+        (test):
+        * tests/es6/destructuring_trailing_commas_in_iterable_patterns.js: Added.
+        (test):
+        * tests/es6/destructuring_trailing_commas_in_object_patterns.js: Added.
+        (test):
+        * tests/es6/destructuring_with_arrays.js: Added.
+        (test):
+        * tests/es6/destructuring_with_astral_plane_strings.js: Added.
+        (test):
+        * tests/es6/destructuring_with_generator_instances.js: Added.
+        (test.c):
+        (test.e):
+        (test):
+        * tests/es6/destructuring_with_generic_iterables.js: Added.
+        (test):
+        * tests/es6/destructuring_with_instances_of_generic_iterables.js: Added.
+        (test):
+        * tests/es6/destructuring_with_objects.js: Added.
+        (test):
+        * tests/es6/destructuring_with_sparse_arrays.js: Added.
+        (test):
+        * tests/es6/destructuring_with_strings.js: Added.
+        (test):
+        * tests/es6/for..of_loops_iterator_closing_break.js: Added.
+        (test.):
+        (test):
+        * tests/es6/for..of_loops_iterator_closing_throw.js: Added.
+        (test.):
+        (test):
+        * tests/es6/for..of_loops_with_arrays.js: Added.
+        (test):
+        * tests/es6/for..of_loops_with_astral_plane_strings.js: Added.
+        (test):
+        * tests/es6/for..of_loops_with_generator_instances.js: Added.
+        (test.iterable):
+        (test):
+        * tests/es6/for..of_loops_with_generic_iterables.js: Added.
+        (test):
+        * tests/es6/for..of_loops_with_instances_of_generic_iterables.js: Added.
+        (test):
+        * tests/es6/for..of_loops_with_sparse_arrays.js: Added.
+        (test):
+        * tests/es6/for..of_loops_with_strings.js: Added.
+        (test):
+        * tests/es6/function_name_property_accessor_properties.js: Added.
+        (test.o.get foo):
+        (test.o.set foo):
+        * tests/es6/function_name_property_bound_functions.js: Added.
+        (test.foo):
+        (test):
+        * tests/es6/function_name_property_class_expressions.js: Added.
+        (test.return.foo):
+        (test.name.string_appeared_here.typeof.bar.name):
+        (test.name.string_appeared_here.typeof.bar):
+        (test):
+        * tests/es6/function_name_property_class_prototype_methods.js: Added.
+        (test.C.prototype.foo):
+        (test.C):
+        (test):
+        * tests/es6/function_name_property_class_statements.js: Added.
+        (test.foo):
+        (test.bar.name):
+        (test.bar):
+        (test):
+        * tests/es6/function_name_property_class_static_methods.js: Added.
+        (test.C.foo):
+        (test.C):
+        (test):
+        * tests/es6/function_name_property_function_expressions.js: Added.
+        (test):
+        * tests/es6/function_name_property_function_statements.js: Added.
+        (test.foo):
+        (test):
+        * tests/es6/function_name_property_isnt_writable_is_configurable.js: Added.
+        (test):
+        * tests/es6/function_name_property_new_Function.js: Added.
+        (test):
+        * tests/es6/function_name_property_object_methods_class.js: Added.
+        (test.o):
+        * tests/es6/function_name_property_object_methods_function.js: Added.
+        (test.o.foo):
+        (test.o.bar):
+        (test.o.qux):
+        (test):
+        * tests/es6/function_name_property_shorthand_methods.js: Added.
+        (test):
+        * tests/es6/function_name_property_shorthand_methods_no_lexical_binding.js: Added.
+        (test):
+        * tests/es6/function_name_property_symbol-keyed_methods.js: Added.
+        (test.o.sym1):
+        (test.o.sym2):
+        (test):
+        * tests/es6/function_name_property_variables_class.js: Added.
+        (test.bar):
+        (test.qux):
+        * tests/es6/function_name_property_variables_function.js: Added.
+        (test.foo):
+        (test.bar):
+        (test):
+        * tests/es6/generators_%GeneratorPrototype%.constructor.js: Added.
+        (test.g):
+        (test):
+        * tests/es6/generators_%GeneratorPrototype%.js: Added.
+        (test.generatorFn):
+        (test):
+        * tests/es6/generators_%GeneratorPrototype%.return.js: Added.
+        (test.generator):
+        (test):
+        * tests/es6/generators_%GeneratorPrototype%.throw.js: Added.
+        (test.generator):
+        (test):
+        * tests/es6/generators_basic_functionality.js: Added.
+        (test.generator):
+        (test):
+        * tests/es6/generators_cant_use_this_with_new.js: Added.
+        (test.generator):
+        (test):
+        * tests/es6/generators_computed_shorthand_generators.js: Added.
+        (test):
+        * tests/es6/generators_computed_shorthand_generators_classes.js: Added.
+        (test.C.prototype.garply):
+        (test.C):
+        (test):
+        * tests/es6/generators_correct_this_binding.js: Added.
+        (test.generator):
+        (test):
+        * tests/es6/generators_generator_function_expressions.js: Added.
+        (test.generator):
+        (test):
+        * tests/es6/generators_sending.js: Added.
+        (test.generator):
+        (test):
+        * tests/es6/generators_shorthand_generator_methods.js: Added.
+        (test):
+        * tests/es6/generators_shorthand_generator_methods_classes.js: Added.
+        (test.C.prototype.generator):
+        (test.C):
+        (test):
+        * tests/es6/generators_string-keyed_shorthand_generator_methods.js: Added.
+        (test):
+        * tests/es6/generators_yield_*_arrays.js: Added.
+        (test.iterator):
+        (test):
+        * tests/es6/generators_yield_*_astral_plane_strings.js: Added.
+        (test.iterator):
+        (test):
+        * tests/es6/generators_yield_*_generator_instances.js: Added.
+        (test.iterator):
+        (test):
+        * tests/es6/generators_yield_*_generic_iterables.js: Added.
+        (test.iterator):
+        (test):
+        * tests/es6/generators_yield_*_instances_of_iterables.js: Added.
+        (test.iterator):
+        (test):
+        * tests/es6/generators_yield_*_iterator_closing.js: Added.
+        (test.):
+        (test.gen):
+        (test):
+        * tests/es6/generators_yield_*_iterator_closing_via_throw.js: Added.
+        (test.):
+        (test.gen):
+        (test):
+        * tests/es6/generators_yield_*_on_non-iterables_is_a_runtime_error.js: Added.
+        (test.iterator):
+        (test):
+        * tests/es6/generators_yield_*_sparse_arrays.js: Added.
+        (test.iterator):
+        (test):
+        * tests/es6/generators_yield_*_strings.js: Added.
+        (test.iterator):
+        (test):
+        * tests/es6/generators_yield_operator_precedence.js: Added.
+        (test.generator):
+        (test):
+        * tests/es6/let_basic_support.js: Added.
+        (test):
+        * tests/es6/let_basic_support_strict_mode.js: Added.
+        (test):
+        * tests/es6/let_for-loop_iteration_scope.js: Added.
+        (test):
+        * tests/es6/let_for-loop_iteration_scope_strict_mode.js: Added.
+        (test):
+        * tests/es6/let_for-loop_statement_scope.js: Added.
+        (test):
+        * tests/es6/let_for-loop_statement_scope_strict_mode.js: Added.
+        (test):
+        * tests/es6/let_is_block-scoped.js: Added.
+        (test):
+        * tests/es6/let_is_block-scoped_strict_mode.js: Added.
+        (test):
+        * tests/es6/let_temporal_dead_zone.js: Added.
+        (test.passed):
+        (test):
+        * tests/es6/let_temporal_dead_zone_strict_mode.js: Added.
+        (test.passed):
+        (test):
+        * tests/es6/miscellaneous_Invalid_Date.js: Added.
+        (test):
+        * tests/es6/miscellaneous_RegExp_constructor_can_alter_flags.js: Added.
+        (test):
+        * tests/es6/miscellaneous_String.prototype_case_methods_Unicode_support.js: Added.
+        (test):
+        * tests/es6/miscellaneous_accessors_arent_constructors.js: Added.
+        (test.get catch):
+        (test):
+        * tests/es6/miscellaneous_built-in_prototypes_are_not_instances.js: Added.
+        (test):
+        * tests/es6/miscellaneous_duplicate_property_names_in_strict_mode.js: Added.
+        (test):
+        * tests/es6/miscellaneous_function_length_is_configurable.js: Added.
+        (test.fn):
+        (test):
+        * tests/es6/miscellaneous_no_assignments_allowed_in_for-in_head.js: Added.
+        (test):
+        * tests/es6/miscellaneous_no_escaped_reserved_words_as_identifiers.js: Added.
+        (test):
+        * tests/es6/miscellaneous_no_semicolon_needed_after_do-while.js: Added.
+        (test):
+        * tests/es6/miscellaneous_subclassables_Boolean_is_subclassable.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/miscellaneous_subclassables_Map_is_subclassable.js: Added.
+        (test):
+        * tests/es6/miscellaneous_subclassables_Number_is_subclassable.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/miscellaneous_subclassables_Set_is_subclassable.js: Added.
+        (test):
+        * tests/es6/miscellaneous_subclassables_String_is_subclassable.js: Added.
+        (test.C):
+        (test):
+        * tests/es6/new.target_assignment_is_an_early_error.js: Added.
+        (test.new.f):
+        (test):
+        * tests/es6/new.target_in_constructors.js: Added.
+        (test.new.f):
+        (test):
+        * tests/es6/non-strict_function_semantics_function_statements_in_if-statement_clauses.js: Added.
+        (test.foo):
+        (test.else.bar):
+        (test.baz):
+        (test.qux):
+        (test.else.qux):
+        (test):
+        * tests/es6/non-strict_function_semantics_hoisted_block-level_function_declaration.js: Added.
+        (test.f):
+        (test.g):
+        (test.h):
+        (test):
+        * tests/es6/non-strict_function_semantics_labeled_function_statements.js: Added.
+        (test.label):
+        (test):
+        * tests/es6/object_literal_extensions_computed_accessors.js: Added.
+        (test.obj.get x):
+        (test.obj.set x):
+        (test):
+        * tests/es6/object_literal_extensions_computed_properties.js: Added.
+        (test):
+        * tests/es6/object_literal_extensions_computed_shorthand_methods.js: Added.
+        (test):
+        * tests/es6/object_literal_extensions_shorthand_methods.js: Added.
+        (test):
+        * tests/es6/object_literal_extensions_shorthand_properties.js: Added.
+        (test):
+        * tests/es6/object_literal_extensions_string-keyed_shorthand_methods.js: Added.
+        (test):
+        * tests/es6/octal_and_binary_literals_binary_literals.js: Added.
+        (test):
+        * tests/es6/octal_and_binary_literals_binary_supported_by_Number.js: Added.
+        (test):
+        * tests/es6/octal_and_binary_literals_octal_literals.js: Added.
+        (test):
+        * tests/es6/octal_and_binary_literals_octal_supported_by_Number.js: Added.
+        (test):
+        * tests/es6/own_property_order_JSON.parse.js: Added.
+        (test):
+        * tests/es6/own_property_order_JSON.stringify.js: Added.
+        (test):
+        * tests/es6/own_property_order_Object.assign.js: Added.
+        * tests/es6/own_property_order_Object.getOwnPropertyNames.js: Added.
+        (test):
+        * tests/es6/own_property_order_Object.keys.js: Added.
+        (test):
+        * tests/es6/own_property_order_Reflect.ownKeys_string_key_order.js: Added.
+        (test):
+        * tests/es6/own_property_order_Reflect.ownKeys_symbol_key_order.js: Added.
+        (test):
+        * tests/es6/own_property_order_for..in.js: Added.
+        (test):
+        * tests/es6/proper_tail_calls_tail_call_optimisation_direct_recursion.js: Added.
+        (test):
+        * tests/es6/proper_tail_calls_tail_call_optimisation_mutual_recursion.js: Added.
+        (test.f):
+        (test.g):
+        (test):
+        * tests/es6/prototype_of_bound_functions_arrow_functions.js: Added.
+        (test.correctProtoBound):
+        (test):
+        * tests/es6/prototype_of_bound_functions_basic_functions.js: Added.
+        (test.correctProtoBound.f):
+        (test.correctProtoBound):
+        (test):
+        * tests/es6/prototype_of_bound_functions_classes.js: Added.
+        (test.correctProtoBound.C):
+        (test.correctProtoBound):
+        (test):
+        * tests/es6/prototype_of_bound_functions_generator_functions.js: Added.
+        (test.correctProtoBound.f):
+        (test.correctProtoBound):
+        (test):
+        * tests/es6/prototype_of_bound_functions_subclasses.js: Added.
+        (test.correctProtoBound.C):
+        (test.correctProtoBound):
+        (test):
+        * tests/es6/rest_parameters_arguments_object_interaction.js: Added.
+        (test):
+        * tests/es6/rest_parameters_basic_functionality.js: Added.
+        (test):
+        * tests/es6/rest_parameters_cant_be_used_in_setters.js: Added.
+        (test):
+        * tests/es6/rest_parameters_function_length_property.js: Added.
+        (test):
+        * tests/es6/rest_parameters_new_Function_support.js: Added.
+        (test):
+        * tests/es6/spread_..._operator_spreading_non-iterables_is_a_runtime_error.js: Added.
+        (test):
+        * tests/es6/spread_..._operator_with_arrays_in_array_literals.js: Added.
+        (test):
+        * tests/es6/spread_..._operator_with_arrays_in_function_calls.js: Added.
+        (test):
+        * tests/es6/spread_..._operator_with_astral_plane_strings_in_array_literals.js: Added.
+        (test):
+        * tests/es6/spread_..._operator_with_astral_plane_strings_in_function_calls.js: Added.
+        (test):
+        * tests/es6/spread_..._operator_with_generator_instances_in_arrays.js: Added.
+        (test.iterable):
+        (test):
+        * tests/es6/spread_..._operator_with_generator_instances_in_calls.js: Added.
+        (test.iterable):
+        (test):
+        * tests/es6/spread_..._operator_with_generic_iterables_in_arrays.js: Added.
+        (test):
+        * tests/es6/spread_..._operator_with_generic_iterables_in_calls.js: Added.
+        (test):
+        * tests/es6/spread_..._operator_with_instances_of_iterables_in_arrays.js: Added.
+        (test):
+        * tests/es6/spread_..._operator_with_instances_of_iterables_in_calls.js: Added.
+        (test):
+        * tests/es6/spread_..._operator_with_sparse_arrays_in_array_literals.js: Added.
+        (test):
+        * tests/es6/spread_..._operator_with_sparse_arrays_in_function_calls.js: Added.
+        (test):
+        * tests/es6/spread_..._operator_with_strings_in_array_literals.js: Added.
+        (test):
+        * tests/es6/spread_..._operator_with_strings_in_function_calls.js: Added.
+        (test):
+        * tests/es6/super_constructor_calls_use_correct_new.target_binding.js: Added.
+        (test.B):
+        (test):
+        * tests/es6/super_expression_in_constructors.js: Added.
+        (test.B):
+        (test.C):
+        (test):
+        * tests/es6/super_in_methods_method_calls.js: Added.
+        (test.B.prototype.qux):
+        (test.B):
+        (test.C.prototype.qux):
+        (test.C):
+        (test):
+        * tests/es6/super_in_methods_property_access.js: Added.
+        (test.B):
+        (test.C.prototype.quux):
+        (test.C):
+        (test):
+        * tests/es6/super_is_statically_bound.js: Added.
+        (test.B.prototype.qux):
+        (test.B):
+        (test.C.prototype.qux):
+        (test.C):
+        (test):
+        * tests/es6/super_method_calls_use_correct_this_binding.js: Added.
+        (test.B.prototype.qux):
+        (test.B):
+        (test.C.prototype.qux):
+        (test.C):
+        (test):
+        * tests/es6/super_statement_in_constructors.js: Added.
+        (test.B):
+        (test):
+        * tests/es6/template_strings_basic_functionality.js: Added.
+        (test):
+        * tests/es6/template_strings_line_break_normalisation.js: Added.
+        (test):
+        * tests/es6/template_strings_passed_array_is_frozen.js: Added.
+        (test):
+        * tests/es6/template_strings_tagged_template_strings.js: Added.
+        (test.fn):
+        (test):
+        * tests/es6/template_strings_toString_conversion.js: Added.
+        (test.a.toString):
+        (test.a.valueOf):
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.from.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.of.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.prototype.copyWithin.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.prototype.entries.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.prototype.every.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.prototype.fill.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.prototype.filter.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.prototype.find.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.prototype.findIndex.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.prototype.forEach.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.prototype.indexOf.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.prototype.join.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.prototype.keys.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.prototype.lastIndexOf.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.prototype.map.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.prototype.reduce.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.prototype.reduceRight.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.prototype.reverse.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.prototype.slice.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.prototype.some.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.prototype.sort.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.prototype.subarray.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.prototype.values.js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%.prototype[Symbol.iterator].js: Added.
+        (test):
+        * tests/es6/typed_arrays_%TypedArray%[Symbol.species].js: Added.
+        (test):
+        * tests/es6/typed_arrays_ArrayBuffer[Symbol.species].js: Added.
+        (test):
+        * tests/es6/typed_arrays_DataView_Float32.js: Added.
+        (test):
+        * tests/es6/typed_arrays_DataView_Float64.js: Added.
+        (test):
+        * tests/es6/typed_arrays_DataView_Int16.js: Added.
+        (test):
+        * tests/es6/typed_arrays_DataView_Int32.js: Added.
+        (test):
+        * tests/es6/typed_arrays_DataView_Int8.js: Added.
+        (test):
+        * tests/es6/typed_arrays_DataView_Uint16.js: Added.
+        (test):
+        * tests/es6/typed_arrays_DataView_Uint32.js: Added.
+        (test):
+        * tests/es6/typed_arrays_DataView_Uint8.js: Added.
+        (test):
+        * tests/es6/typed_arrays_Float32Array.js: Added.
+        (test):
+        * tests/es6/typed_arrays_Float64Array.js: Added.
+        (test):
+        * tests/es6/typed_arrays_Int16Array.js: Added.
+        (test):
+        * tests/es6/typed_arrays_Int32Array.js: Added.
+        (test):
+        * tests/es6/typed_arrays_Int8Array.js: Added.
+        (test):
+        * tests/es6/typed_arrays_Uint16Array.js: Added.
+        (test):
+        * tests/es6/typed_arrays_Uint32Array.js: Added.
+        (test):
+        * tests/es6/typed_arrays_Uint8Array.js: Added.
+        (test):
+        * tests/es6/typed_arrays_Uint8ClampedArray.js: Added.
+        (test):
+        * tests/es6/typed_arrays_constructors_require_new.js: Added.
+        (test):
+        * tests/es6/typed_arrays_correct_prototype_chains.js: Added.
+        (test):
+        * tests/es6/well-known_symbols_Symbol.hasInstance.js: Added.
+        (test.C):
+        (test.):
+        (test):
+        * tests/es6/well-known_symbols_Symbol.isConcatSpreadable.js: Added.
+        (test):
+        * tests/es6/well-known_symbols_Symbol.iterator_arguments_object.js: Added.
+        (test):
+        * tests/es6/well-known_symbols_Symbol.iterator_existence.js: Added.
+        (test):
+        * tests/es6/well-known_symbols_Symbol.match.js: Added.
+        (test.O.Symbol.match):
+        (test):
+        * tests/es6/well-known_symbols_Symbol.replace.js: Added.
+        (test.O.Symbol.replace):
+        (test):
+        * tests/es6/well-known_symbols_Symbol.search.js: Added.
+        (test.O.Symbol.search):
+        (test):
+        * tests/es6/well-known_symbols_Symbol.species_Array.prototype.concat.js: Added.
+        (test.obj.Symbol.species):
+        (test):
+        * tests/es6/well-known_symbols_Symbol.species_Array.prototype.filter.js: Added.
+        (test.obj.Symbol.species):
+        (test):
+        * tests/es6/well-known_symbols_Symbol.species_Array.prototype.map.js: Added.
+        (test.obj.Symbol.species):
+        (test):
+        * tests/es6/well-known_symbols_Symbol.species_Array.prototype.slice.js: Added.
+        (test.obj.Symbol.species):
+        (test):
+        * tests/es6/well-known_symbols_Symbol.species_Array.prototype.splice.js: Added.
+        (test.obj.Symbol.species):
+        (test):
+        * tests/es6/well-known_symbols_Symbol.species_RegExp.prototype[Symbol.split].js: Added.
+        (test.obj.Symbol.species):
+        (test):
+        * tests/es6/well-known_symbols_Symbol.species_existence.js: Added.
+        (test):
+        * tests/es6/well-known_symbols_Symbol.split.js: Added.
+        (test.O.Symbol.split):
+        (test):
+        * tests/es6/well-known_symbols_Symbol.toPrimitive.js: Added.
+        (test.a.Symbol.toPrimitive):
+        (test.b.Symbol.toPrimitive):
+        (test.c.Symbol.toPrimitive):
+        (test):
+        * tests/es6/well-known_symbols_Symbol.toStringTag.js: Added.
+        (test):
+        * tests/es6/well-known_symbols_Symbol.toStringTag_misc._built-ins.js: Added.
+        (test):
+        * tests/es6/well-known_symbols_Symbol.unscopables.js: Added.
+        (test):
+
 2015-09-03  Filip Pizlo  <fpizlo@apple.com>
 
         WatchpointsOnStructureStubInfo doesn't need to be reference counted
diff --git a/Source/JavaScriptCore/tests/es6.yaml b/Source/JavaScriptCore/tests/es6.yaml
new file mode 100644
index 0000000..8fd78c1
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6.yaml
@@ -0,0 +1,1204 @@
+# Copyright (C) 2015 Apple Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1.  Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer. 
+# 2.  Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution. 
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+---
+- path: es6/__proto___in_object_literals_basic_support.js
+  cmd: runES6 :normal
+- path: es6/__proto___in_object_literals_multiple___proto___is_an_error.js
+  cmd: runES6 :normal
+- path: es6/__proto___in_object_literals_not_a_computed_property.js
+  cmd: runES6 :normal
+- path: es6/__proto___in_object_literals_not_a_shorthand_method.js
+  cmd: runES6 :normal
+- path: es6/__proto___in_object_literals_not_a_shorthand_property.js
+  cmd: runES6 :normal
+- path: es6/Array.prototype_methods_Array.prototype.copyWithin.js
+  cmd: runES6 :normal
+- path: es6/Array.prototype_methods_Array.prototype.entries.js
+  cmd: runES6 :normal
+- path: es6/Array.prototype_methods_Array.prototype.fill.js
+  cmd: runES6 :normal
+- path: es6/Array.prototype_methods_Array.prototype.find.js
+  cmd: runES6 :normal
+- path: es6/Array.prototype_methods_Array.prototype.findIndex.js
+  cmd: runES6 :normal
+- path: es6/Array.prototype_methods_Array.prototype.keys.js
+  cmd: runES6 :normal
+- path: es6/Array.prototype_methods_Array.prototype.values.js
+  cmd: runES6 :normal
+- path: es6/Array.prototype_methods_Array.prototype[Symbol.iterator].js
+  cmd: runES6 :normal
+- path: es6/Array.prototype_methods_Array.prototype[Symbol.unscopables].js
+  cmd: runES6 :normal
+- path: es6/Array.prototype_methods_Array_iterator_prototype_chain.js
+  cmd: runES6 :normal
+- path: es6/Array_is_subclassable_Array.isArray_support.js
+  cmd: runES6 :normal
+- path: es6/Array_is_subclassable_length_property_accessing.js
+  cmd: runES6 :normal
+- path: es6/Array_is_subclassable_length_property_setting.js
+  cmd: runES6 :normal
+- path: es6/Array_static_methods_Array.from_array-like_objects.js
+  cmd: runES6 :normal
+- path: es6/Array_static_methods_Array.from_map_function_array-like_objects.js
+  cmd: runES6 :normal
+- path: es6/Array_static_methods_Array.of.js
+  cmd: runES6 :normal
+- path: es6/arrow_functions_0_parameters.js
+  cmd: runES6 :normal
+- path: es6/arrow_functions_1_parameter_no_brackets.js
+  cmd: runES6 :normal
+- path: es6/arrow_functions_cant_be_bound_can_be_curried.js
+  cmd: runES6 :normal
+- path: es6/arrow_functions_correct_precedence.js
+  cmd: runES6 :normal
+- path: es6/arrow_functions_lexical_this_binding.js
+  cmd: runES6 :normal
+- path: es6/arrow_functions_multiple_parameters.js
+  cmd: runES6 :normal
+- path: es6/arrow_functions_no_line_break_between_params_and_code_=_code.js
+  cmd: runES6 :normal
+- path: es6/arrow_functions_this_unchanged_by_call_or_apply.js
+  cmd: runES6 :normal
+- path: es6/class_accessor_properties.js
+  cmd: runES6 :normal
+- path: es6/class_anonymous_class.js
+  cmd: runES6 :normal
+- path: es6/class_class_expression.js
+  cmd: runES6 :normal
+- path: es6/class_class_statement.js
+  cmd: runES6 :normal
+- path: es6/class_computed_names_temporal_dead_zone.js
+  cmd: runES6 :normal
+- path: es6/class_computed_prototype_methods.js
+  cmd: runES6 :normal
+- path: es6/class_computed_static_methods.js
+  cmd: runES6 :normal
+- path: es6/class_constructor.js
+  cmd: runES6 :normal
+- path: es6/class_constructor_requires_new.js
+  cmd: runES6 :normal
+- path: es6/class_extends.js
+  cmd: runES6 :normal
+- path: es6/class_extends_expressions.js
+  cmd: runES6 :normal
+- path: es6/class_extends_null.js
+  cmd: runES6 :normal
+- path: es6/class_implicit_strict_mode.js
+  cmd: runES6 :normal
+- path: es6/class_is_block-scoped.js
+  cmd: runES6 :normal
+- path: es6/class_methods_arent_enumerable.js
+  cmd: runES6 :normal
+- path: es6/class_new.target.js
+  cmd: runES6 :normal
+- path: es6/class_prototype_methods.js
+  cmd: runES6 :normal
+- path: es6/class_static_accessor_properties.js
+  cmd: runES6 :normal
+- path: es6/class_static_methods.js
+  cmd: runES6 :normal
+- path: es6/class_string-keyed_methods.js
+  cmd: runES6 :normal
+- path: es6/const_basic_support.js
+  cmd: runES6 :normal
+- path: es6/const_basic_support_strict_mode.js
+  cmd: runES6 :normal
+- path: es6/const_is_block-scoped.js
+  cmd: runES6 :normal
+- path: es6/const_is_block-scoped_strict_mode.js
+  cmd: runES6 :normal
+- path: es6/const_redefining_a_const_is_an_error.js
+  cmd: runES6 :normal
+- path: es6/const_redefining_a_const_strict_mode.js
+  cmd: runES6 :normal
+- path: es6/const_temporal_dead_zone.js
+  cmd: runES6 :normal
+- path: es6/const_temporal_dead_zone_strict_mode.js
+  cmd: runES6 :normal
+- path: es6/default_function_parameters_arguments_object_interaction.js
+  cmd: runES6 :normal
+- path: es6/default_function_parameters_basic_functionality.js
+  cmd: runES6 :normal
+- path: es6/default_function_parameters_defaults_can_refer_to_previous_params.js
+  cmd: runES6 :normal
+- path: es6/default_function_parameters_explicit_undefined_defers_to_the_default.js
+  cmd: runES6 :normal
+- path: es6/default_function_parameters_new_Function_support.js
+  cmd: runES6 :normal
+- path: es6/default_function_parameters_separate_scope.js
+  cmd: runES6 :normal
+- path: es6/default_function_parameters_temporal_dead_zone.js
+  cmd: runES6 :normal
+- path: es6/destructuring_chained_iterable_destructuring.js
+  cmd: runES6 :normal
+- path: es6/destructuring_chained_object_destructuring.js
+  cmd: runES6 :normal
+- path: es6/destructuring_defaults.js
+  cmd: runES6 :normal
+- path: es6/destructuring_defaults_in_parameters.js
+  cmd: runES6 :normal
+- path: es6/destructuring_defaults_in_parameters_new_Function_support.js
+  cmd: runES6 :normal
+- path: es6/destructuring_defaults_let_temporal_dead_zone.js
+  cmd: runES6 :normal
+- path: es6/destructuring_empty_patterns.js
+  cmd: runES6 :normal
+- path: es6/destructuring_empty_patterns_in_parameters.js
+  cmd: runES6 :normal
+- path: es6/destructuring_in_for-in_loop_heads.js
+  cmd: runES6 :normal
+- path: es6/destructuring_in_for-of_loop_heads.js
+  cmd: runES6 :normal
+- path: es6/destructuring_in_parameters.js
+  cmd: runES6 :normal
+- path: es6/destructuring_in_parameters_arguments_interaction.js
+  cmd: runES6 :normal
+- path: es6/destructuring_in_parameters_function_length_property.js
+  cmd: runES6 :normal
+- path: es6/destructuring_in_parameters_new_Function_support.js
+  cmd: runES6 :normal
+- path: es6/destructuring_iterable_destructuring_expression.js
+  cmd: runES6 :normal
+- path: es6/destructuring_multiples_in_a_single_var_statement.js
+  cmd: runES6 :normal
+- path: es6/destructuring_nested.js
+  cmd: runES6 :normal
+- path: es6/destructuring_object_destructuring_expression.js
+  cmd: runES6 :normal
+- path: es6/destructuring_object_destructuring_with_primitives.js
+  cmd: runES6 :normal
+- path: es6/destructuring_parenthesised_left-hand-side_is_a_syntax_error.js
+  cmd: runES6 :normal
+- path: es6/destructuring_rest.js
+  cmd: runES6 :normal
+- path: es6/destructuring_throws_on_null_and_undefined.js
+  cmd: runES6 :normal
+- path: es6/destructuring_trailing_commas_in_iterable_patterns.js
+  cmd: runES6 :normal
+- path: es6/destructuring_trailing_commas_in_object_patterns.js
+  cmd: runES6 :normal
+- path: es6/destructuring_with_arrays.js
+  cmd: runES6 :normal
+- path: es6/destructuring_with_astral_plane_strings.js
+  cmd: runES6 :normal
+- path: es6/destructuring_with_objects.js
+  cmd: runES6 :normal
+- path: es6/destructuring_with_sparse_arrays.js
+  cmd: runES6 :normal
+- path: es6/destructuring_with_strings.js
+  cmd: runES6 :normal
+- path: es6/for..of_loops_with_arrays.js
+  cmd: runES6 :normal
+- path: es6/for..of_loops_with_astral_plane_strings.js
+  cmd: runES6 :normal
+- path: es6/for..of_loops_with_sparse_arrays.js
+  cmd: runES6 :normal
+- path: es6/for..of_loops_with_strings.js
+  cmd: runES6 :normal
+- path: es6/function_name_property_class_prototype_methods.js
+  cmd: runES6 :normal
+- path: es6/function_name_property_class_static_methods.js
+  cmd: runES6 :normal
+- path: es6/function_name_property_function_expressions.js
+  cmd: runES6 :normal
+- path: es6/function_name_property_function_statements.js
+  cmd: runES6 :normal
+- path: es6/function_name_property_new_Function.js
+  cmd: runES6 :normal
+- path: es6/function_name_property_shorthand_methods.js
+  cmd: runES6 :normal
+- path: es6/HTML-style_comments.js
+  cmd: runES6 :normal
+- path: es6/let_basic_support.js
+  cmd: runES6 :normal
+- path: es6/let_basic_support_strict_mode.js
+  cmd: runES6 :normal
+- path: es6/let_for-loop_iteration_scope.js
+  cmd: runES6 :normal
+- path: es6/let_for-loop_iteration_scope_strict_mode.js
+  cmd: runES6 :normal
+- path: es6/let_for-loop_statement_scope.js
+  cmd: runES6 :normal
+- path: es6/let_for-loop_statement_scope_strict_mode.js
+  cmd: runES6 :normal
+- path: es6/let_is_block-scoped.js
+  cmd: runES6 :normal
+- path: es6/let_is_block-scoped_strict_mode.js
+  cmd: runES6 :normal
+- path: es6/let_temporal_dead_zone.js
+  cmd: runES6 :normal
+- path: es6/let_temporal_dead_zone_strict_mode.js
+  cmd: runES6 :normal
+- path: es6/Map_-0_key_converts_to_+0.js
+  cmd: runES6 :normal
+- path: es6/Map_basic_functionality.js
+  cmd: runES6 :normal
+- path: es6/Map_constructor_accepts_null.js
+  cmd: runES6 :normal
+- path: es6/Map_constructor_arguments.js
+  cmd: runES6 :normal
+- path: es6/Map_constructor_invokes_set.js
+  cmd: runES6 :normal
+- path: es6/Map_constructor_requires_new.js
+  cmd: runES6 :normal
+- path: es6/Map_Map.prototype.clear.js
+  cmd: runES6 :normal
+- path: es6/Map_Map.prototype.delete.js
+  cmd: runES6 :normal
+- path: es6/Map_Map.prototype.entries.js
+  cmd: runES6 :normal
+- path: es6/Map_Map.prototype.forEach.js
+  cmd: runES6 :normal
+- path: es6/Map_Map.prototype.keys.js
+  cmd: runES6 :normal
+- path: es6/Map_Map.prototype.set_returns_this.js
+  cmd: runES6 :normal
+- path: es6/Map_Map.prototype.size.js
+  cmd: runES6 :normal
+- path: es6/Map_Map.prototype.values.js
+  cmd: runES6 :normal
+- path: es6/Map_Map.prototype[Symbol.iterator].js
+  cmd: runES6 :normal
+- path: es6/Map_Map_iterator_prototype_chain.js
+  cmd: runES6 :normal
+- path: es6/Math_methods_Math.acosh.js
+  cmd: runES6 :normal
+- path: es6/Math_methods_Math.asinh.js
+  cmd: runES6 :normal
+- path: es6/Math_methods_Math.atanh.js
+  cmd: runES6 :normal
+- path: es6/Math_methods_Math.cbrt.js
+  cmd: runES6 :normal
+- path: es6/Math_methods_Math.clz32.js
+  cmd: runES6 :normal
+- path: es6/Math_methods_Math.cosh.js
+  cmd: runES6 :normal
+- path: es6/Math_methods_Math.expm1.js
+  cmd: runES6 :normal
+- path: es6/Math_methods_Math.fround.js
+  cmd: runES6 :normal
+- path: es6/Math_methods_Math.hypot.js
+  cmd: runES6 :normal
+- path: es6/Math_methods_Math.imul.js
+  cmd: runES6 :normal
+- path: es6/Math_methods_Math.log10.js
+  cmd: runES6 :normal
+- path: es6/Math_methods_Math.log1p.js
+  cmd: runES6 :normal
+- path: es6/Math_methods_Math.log2.js
+  cmd: runES6 :normal
+- path: es6/Math_methods_Math.sign.js
+  cmd: runES6 :normal
+- path: es6/Math_methods_Math.sinh.js
+  cmd: runES6 :normal
+- path: es6/Math_methods_Math.tanh.js
+  cmd: runES6 :normal
+- path: es6/Math_methods_Math.trunc.js
+  cmd: runES6 :normal
+- path: es6/miscellaneous_accessors_arent_constructors.js
+  cmd: runES6 :normal
+- path: es6/miscellaneous_duplicate_property_names_in_strict_mode.js
+  cmd: runES6 :normal
+- path: es6/miscellaneous_Invalid_Date.js
+  cmd: runES6 :normal
+- path: es6/miscellaneous_no_escaped_reserved_words_as_identifiers.js
+  cmd: runES6 :normal
+- path: es6/miscellaneous_no_semicolon_needed_after_do-while.js
+  cmd: runES6 :normal
+- path: es6/miscellaneous_String.prototype_case_methods_Unicode_support.js
+  cmd: runES6 :normal
+- path: es6/miscellaneous_subclassables_Boolean_is_subclassable.js
+  cmd: runES6 :normal
+- path: es6/miscellaneous_subclassables_Map_is_subclassable.js
+  cmd: runES6 :normal
+- path: es6/miscellaneous_subclassables_Number_is_subclassable.js
+  cmd: runES6 :normal
+- path: es6/miscellaneous_subclassables_Set_is_subclassable.js
+  cmd: runES6 :normal
+- path: es6/miscellaneous_subclassables_String_is_subclassable.js
+  cmd: runES6 :normal
+- path: es6/new.target_in_constructors.js
+  cmd: runES6 :normal
+- path: es6/non-strict_function_semantics_function_statements_in_if-statement_clauses.js
+  cmd: runES6 :normal
+- path: es6/non-strict_function_semantics_labeled_function_statements.js
+  cmd: runES6 :normal
+- path: es6/Number_properties_Number.EPSILON.js
+  cmd: runES6 :normal
+- path: es6/Number_properties_Number.isFinite.js
+  cmd: runES6 :normal
+- path: es6/Number_properties_Number.isInteger.js
+  cmd: runES6 :normal
+- path: es6/Number_properties_Number.isNaN.js
+  cmd: runES6 :normal
+- path: es6/Number_properties_Number.isSafeInteger.js
+  cmd: runES6 :normal
+- path: es6/Number_properties_Number.MAX_SAFE_INTEGER.js
+  cmd: runES6 :normal
+- path: es6/Number_properties_Number.MIN_SAFE_INTEGER.js
+  cmd: runES6 :normal
+- path: es6/Object.prototype.__proto___absent_from_Object.createnull.js
+  cmd: runES6 :normal
+- path: es6/Object.prototype.__proto___correct_property_descriptor.js
+  cmd: runES6 :normal
+- path: es6/Object.prototype.__proto___get_prototype.js
+  cmd: runES6 :normal
+- path: es6/Object.prototype.__proto___present_in_hasOwnProperty.js
+  cmd: runES6 :normal
+- path: es6/Object.prototype.__proto___present_in_Object.getOwnPropertyNames.js
+  cmd: runES6 :normal
+- path: es6/Object.prototype.__proto___set_prototype.js
+  cmd: runES6 :normal
+- path: es6/object_literal_extensions_computed_properties.js
+  cmd: runES6 :normal
+- path: es6/object_literal_extensions_computed_shorthand_methods.js
+  cmd: runES6 :normal
+- path: es6/object_literal_extensions_shorthand_methods.js
+  cmd: runES6 :normal
+- path: es6/object_literal_extensions_shorthand_properties.js
+  cmd: runES6 :normal
+- path: es6/object_literal_extensions_string-keyed_shorthand_methods.js
+  cmd: runES6 :normal
+- path: es6/Object_static_methods_accept_primitives_Object.freeze.js
+  cmd: runES6 :normal
+- path: es6/Object_static_methods_accept_primitives_Object.getOwnPropertyDescriptor.js
+  cmd: runES6 :normal
+- path: es6/Object_static_methods_accept_primitives_Object.getOwnPropertyNames.js
+  cmd: runES6 :normal
+- path: es6/Object_static_methods_accept_primitives_Object.getPrototypeOf.js
+  cmd: runES6 :normal
+- path: es6/Object_static_methods_accept_primitives_Object.isExtensible.js
+  cmd: runES6 :normal
+- path: es6/Object_static_methods_accept_primitives_Object.isFrozen.js
+  cmd: runES6 :normal
+- path: es6/Object_static_methods_accept_primitives_Object.isSealed.js
+  cmd: runES6 :normal
+- path: es6/Object_static_methods_accept_primitives_Object.keys.js
+  cmd: runES6 :normal
+- path: es6/Object_static_methods_accept_primitives_Object.preventExtensions.js
+  cmd: runES6 :normal
+- path: es6/Object_static_methods_accept_primitives_Object.seal.js
+  cmd: runES6 :normal
+- path: es6/Object_static_methods_Object.assign.js
+  cmd: runES6 :normal
+- path: es6/Object_static_methods_Object.getOwnPropertySymbols.js
+  cmd: runES6 :normal
+- path: es6/Object_static_methods_Object.is.js
+  cmd: runES6 :normal
+- path: es6/Object_static_methods_Object.setPrototypeOf.js
+  cmd: runES6 :normal
+- path: es6/octal_and_binary_literals_binary_literals.js
+  cmd: runES6 :normal
+- path: es6/octal_and_binary_literals_binary_supported_by_Number.js
+  cmd: runES6 :normal
+- path: es6/octal_and_binary_literals_octal_literals.js
+  cmd: runES6 :normal
+- path: es6/octal_and_binary_literals_octal_supported_by_Number.js
+  cmd: runES6 :normal
+- path: es6/own_property_order_for..in.js
+  cmd: runES6 :normal
+- path: es6/own_property_order_JSON.parse.js
+  cmd: runES6 :normal
+- path: es6/own_property_order_JSON.stringify.js
+  cmd: runES6 :normal
+- path: es6/own_property_order_Object.assign.js
+  cmd: runES6 :normal
+- path: es6/own_property_order_Object.getOwnPropertyNames.js
+  cmd: runES6 :normal
+- path: es6/own_property_order_Object.keys.js
+  cmd: runES6 :normal
+- path: es6/own_property_order_Reflect.ownKeys_string_key_order.js
+  cmd: runES6 :normal
+- path: es6/own_property_order_Reflect.ownKeys_symbol_key_order.js
+  cmd: runES6 :normal
+- path: es6/Reflect_Reflect.apply.js
+  cmd: runES6 :normal
+- path: es6/Reflect_Reflect.defineProperty.js
+  cmd: runES6 :normal
+- path: es6/Reflect_Reflect.deleteProperty.js
+  cmd: runES6 :normal
+- path: es6/Reflect_Reflect.enumerate.js
+  cmd: runES6 :normal
+- path: es6/Reflect_Reflect.get.js
+  cmd: runES6 :normal
+- path: es6/Reflect_Reflect.getOwnPropertyDescriptor.js
+  cmd: runES6 :normal
+- path: es6/Reflect_Reflect.getPrototypeOf.js
+  cmd: runES6 :normal
+- path: es6/Reflect_Reflect.has.js
+  cmd: runES6 :normal
+- path: es6/Reflect_Reflect.isExtensible.js
+  cmd: runES6 :normal
+- path: es6/Reflect_Reflect.ownKeys_string_keys.js
+  cmd: runES6 :normal
+- path: es6/Reflect_Reflect.ownKeys_symbol_keys.js
+  cmd: runES6 :normal
+- path: es6/Reflect_Reflect.preventExtensions.js
+  cmd: runES6 :normal
+- path: es6/Reflect_Reflect.setPrototypeOf.js
+  cmd: runES6 :normal
+- path: es6/RegExp.prototype.compile.js
+  cmd: runES6 :normal
+- path: es6/RegExp.prototype_properties_RegExp.prototype.flags.js
+  cmd: runES6 :normal
+- path: es6/RegExp_is_subclassable_basic_functionality.js
+  cmd: runES6 :normal
+- path: es6/RegExp_is_subclassable_RegExp.prototype.exec.js
+  cmd: runES6 :normal
+- path: es6/RegExp_is_subclassable_RegExp.prototype.test.js
+  cmd: runES6 :normal
+- path: es6/RegExp_syntax_extensions_hyphens_in_character_sets.js
+  cmd: runES6 :normal
+- path: es6/RegExp_syntax_extensions_incomplete_patterns_and_quantifiers.js
+  cmd: runES6 :normal
+- path: es6/RegExp_syntax_extensions_invalid_backreferences_become_octal_escapes.js
+  cmd: runES6 :normal
+- path: es6/RegExp_syntax_extensions_invalid_character_escapes.js
+  cmd: runES6 :normal
+- path: es6/RegExp_syntax_extensions_invalid_control-character_escapes.js
+  cmd: runES6 :normal
+- path: es6/RegExp_syntax_extensions_invalid_hexadecimal_escapes.js
+  cmd: runES6 :normal
+- path: es6/RegExp_syntax_extensions_invalid_Unicode_escapes.js
+  cmd: runES6 :normal
+- path: es6/RegExp_syntax_extensions_octal_escape_sequences.js
+  cmd: runES6 :normal
+- path: es6/Set_-0_key_converts_to_+0.js
+  cmd: runES6 :normal
+- path: es6/Set_basic_functionality.js
+  cmd: runES6 :normal
+- path: es6/Set_constructor_accepts_null.js
+  cmd: runES6 :normal
+- path: es6/Set_constructor_arguments.js
+  cmd: runES6 :normal
+- path: es6/Set_constructor_invokes_add.js
+  cmd: runES6 :normal
+- path: es6/Set_constructor_requires_new.js
+  cmd: runES6 :normal
+- path: es6/Set_Set.prototype.add_returns_this.js
+  cmd: runES6 :normal
+- path: es6/Set_Set.prototype.clear.js
+  cmd: runES6 :normal
+- path: es6/Set_Set.prototype.delete.js
+  cmd: runES6 :normal
+- path: es6/Set_Set.prototype.entries.js
+  cmd: runES6 :normal
+- path: es6/Set_Set.prototype.forEach.js
+  cmd: runES6 :normal
+- path: es6/Set_Set.prototype.keys.js
+  cmd: runES6 :normal
+- path: es6/Set_Set.prototype.size.js
+  cmd: runES6 :normal
+- path: es6/Set_Set.prototype.values.js
+  cmd: runES6 :normal
+- path: es6/Set_Set.prototype[Symbol.iterator].js
+  cmd: runES6 :normal
+- path: es6/Set_Set_iterator_prototype_chain.js
+  cmd: runES6 :normal
+- path: es6/spread_..._operator_spreading_non-iterables_is_a_runtime_error.js
+  cmd: runES6 :normal
+- path: es6/spread_..._operator_with_arrays_in_array_literals.js
+  cmd: runES6 :normal
+- path: es6/spread_..._operator_with_arrays_in_function_calls.js
+  cmd: runES6 :normal
+- path: es6/spread_..._operator_with_astral_plane_strings_in_array_literals.js
+  cmd: runES6 :normal
+- path: es6/spread_..._operator_with_sparse_arrays_in_array_literals.js
+  cmd: runES6 :normal
+- path: es6/spread_..._operator_with_sparse_arrays_in_function_calls.js
+  cmd: runES6 :normal
+- path: es6/spread_..._operator_with_strings_in_array_literals.js
+  cmd: runES6 :normal
+- path: es6/String.prototype_HTML_methods_existence.js
+  cmd: runES6 :normal
+- path: es6/String.prototype_HTML_methods_quotes_in_arguments_are_escaped.js
+  cmd: runES6 :normal
+- path: es6/String.prototype_HTML_methods_tags_names_are_lowercase.js
+  cmd: runES6 :normal
+- path: es6/String.prototype_methods_String.prototype.codePointAt.js
+  cmd: runES6 :normal
+- path: es6/String.prototype_methods_String.prototype.endsWith.js
+  cmd: runES6 :normal
+- path: es6/String.prototype_methods_String.prototype.includes.js
+  cmd: runES6 :normal
+- path: es6/String.prototype_methods_String.prototype.repeat.js
+  cmd: runES6 :normal
+- path: es6/String.prototype_methods_String.prototype.startsWith.js
+  cmd: runES6 :normal
+- path: es6/String.prototype_methods_String.prototype[Symbol.iterator].js
+  cmd: runES6 :normal
+- path: es6/String.prototype_methods_String_iterator_prototype_chain.js
+  cmd: runES6 :normal
+- path: es6/String_static_methods_String.fromCodePoint.js
+  cmd: runES6 :normal
+- path: es6/String_static_methods_String.raw.js
+  cmd: runES6 :normal
+- path: es6/super_constructor_calls_use_correct_new.target_binding.js
+  cmd: runES6 :normal
+- path: es6/super_expression_in_constructors.js
+  cmd: runES6 :normal
+- path: es6/super_in_methods_method_calls.js
+  cmd: runES6 :normal
+- path: es6/super_in_methods_property_access.js
+  cmd: runES6 :normal
+- path: es6/super_is_statically_bound.js
+  cmd: runES6 :normal
+- path: es6/super_method_calls_use_correct_this_binding.js
+  cmd: runES6 :normal
+- path: es6/super_statement_in_constructors.js
+  cmd: runES6 :normal
+- path: es6/Symbol_basic_functionality.js
+  cmd: runES6 :normal
+- path: es6/Symbol_can_convert_with_String.js
+  cmd: runES6 :normal
+- path: es6/Symbol_cannot_coerce_to_string_or_number.js
+  cmd: runES6 :normal
+- path: es6/Symbol_global_symbol_registry.js
+  cmd: runES6 :normal
+- path: es6/Symbol_JSON.stringify_ignores_symbols.js
+  cmd: runES6 :normal
+- path: es6/Symbol_new_Symbol_throws.js
+  cmd: runES6 :normal
+- path: es6/Symbol_Object.defineProperty_support.js
+  cmd: runES6 :normal
+- path: es6/Symbol_Objectsymbol.js
+  cmd: runES6 :normal
+- path: es6/Symbol_symbol_keys_are_hidden_to_pre-ES6_code.js
+  cmd: runES6 :normal
+- path: es6/Symbol_typeof_support.js
+  cmd: runES6 :normal
+- path: es6/template_strings_basic_functionality.js
+  cmd: runES6 :normal
+- path: es6/template_strings_line_break_normalisation.js
+  cmd: runES6 :normal
+- path: es6/template_strings_passed_array_is_frozen.js
+  cmd: runES6 :normal
+- path: es6/template_strings_tagged_template_strings.js
+  cmd: runES6 :normal
+- path: es6/template_strings_toString_conversion.js
+  cmd: runES6 :normal
+- path: es6/typed_arrays_%TypedArray%.prototype.subarray.js
+  cmd: runES6 :normal
+- path: es6/typed_arrays_constructors_require_new.js
+  cmd: runES6 :normal
+- path: es6/typed_arrays_DataView_Float32.js
+  cmd: runES6 :normal
+- path: es6/typed_arrays_DataView_Float64.js
+  cmd: runES6 :normal
+- path: es6/typed_arrays_DataView_Int16.js
+  cmd: runES6 :normal
+- path: es6/typed_arrays_DataView_Int32.js
+  cmd: runES6 :normal
+- path: es6/typed_arrays_DataView_Int8.js
+  cmd: runES6 :normal
+- path: es6/typed_arrays_DataView_Uint16.js
+  cmd: runES6 :normal
+- path: es6/typed_arrays_DataView_Uint32.js
+  cmd: runES6 :normal
+- path: es6/typed_arrays_DataView_Uint8.js
+  cmd: runES6 :normal
+- path: es6/typed_arrays_Float32Array.js
+  cmd: runES6 :normal
+- path: es6/typed_arrays_Float64Array.js
+  cmd: runES6 :normal
+- path: es6/typed_arrays_Int16Array.js
+  cmd: runES6 :normal
+- path: es6/typed_arrays_Int32Array.js
+  cmd: runES6 :normal
+- path: es6/typed_arrays_Int8Array.js
+  cmd: runES6 :normal
+- path: es6/typed_arrays_Uint16Array.js
+  cmd: runES6 :normal
+- path: es6/typed_arrays_Uint32Array.js
+  cmd: runES6 :normal
+- path: es6/typed_arrays_Uint8Array.js
+  cmd: runES6 :normal
+- path: es6/typed_arrays_Uint8ClampedArray.js
+  cmd: runES6 :normal
+- path: es6/Unicode_code_point_escapes_in_identifiers.js
+  cmd: runES6 :normal
+- path: es6/Unicode_code_point_escapes_in_strings.js
+  cmd: runES6 :normal
+- path: es6/WeakMap_basic_functionality.js
+  cmd: runES6 :normal
+- path: es6/WeakMap_constructor_accepts_null.js
+  cmd: runES6 :normal
+- path: es6/WeakMap_constructor_arguments.js
+  cmd: runES6 :normal
+- path: es6/WeakMap_constructor_invokes_set.js
+  cmd: runES6 :normal
+- path: es6/WeakMap_constructor_requires_new.js
+  cmd: runES6 :normal
+- path: es6/WeakMap_frozen_objects_as_keys.js
+  cmd: runES6 :normal
+- path: es6/WeakMap_no_WeakMap.prototype.clear_method.js
+  cmd: runES6 :normal
+- path: es6/WeakMap_WeakMap.prototype.delete.js
+  cmd: runES6 :normal
+- path: es6/WeakMap_WeakMap.prototype.set_returns_this.js
+  cmd: runES6 :normal
+- path: es6/WeakSet_basic_functionality.js
+  cmd: runES6 :normal
+- path: es6/WeakSet_constructor_accepts_null.js
+  cmd: runES6 :normal
+- path: es6/WeakSet_constructor_arguments.js
+  cmd: runES6 :normal
+- path: es6/WeakSet_constructor_invokes_add.js
+  cmd: runES6 :normal
+- path: es6/WeakSet_constructor_requires_new.js
+  cmd: runES6 :normal
+- path: es6/WeakSet_no_WeakSet.prototype.clear_method.js
+  cmd: runES6 :normal
+- path: es6/WeakSet_WeakSet.prototype.add_returns_this.js
+  cmd: runES6 :normal
+- path: es6/WeakSet_WeakSet.prototype.delete.js
+  cmd: runES6 :normal
+- path: es6/well-known_symbols_Symbol.iterator_arguments_object.js
+  cmd: runES6 :normal
+- path: es6/well-known_symbols_Symbol.iterator_existence.js
+  cmd: runES6 :normal
+- path: es6/well-known_symbols_Symbol.unscopables.js
+  cmd: runES6 :normal
+- path: es6/Array_is_subclassable_Array.from.js
+  cmd: runES6 :fail
+- path: es6/Array_is_subclassable_Array.of.js
+  cmd: runES6 :fail
+- path: es6/Array_is_subclassable_Array.prototype.concat.js
+  cmd: runES6 :fail
+- path: es6/Array_is_subclassable_Array.prototype.filter.js
+  cmd: runES6 :fail
+- path: es6/Array_is_subclassable_Array.prototype.map.js
+  cmd: runES6 :fail
+- path: es6/Array_is_subclassable_Array.prototype.slice.js
+  cmd: runES6 :fail
+- path: es6/Array_is_subclassable_Array.prototype.splice.js
+  cmd: runES6 :fail
+- path: es6/Array_is_subclassable_correct_prototype_chain.js
+  cmd: runES6 :fail
+- path: es6/Array_static_methods_Array.from_generator_instances.js
+  cmd: runES6 :fail
+- path: es6/Array_static_methods_Array.from_generic_iterables.js
+  cmd: runES6 :fail
+- path: es6/Array_static_methods_Array.from_instances_of_generic_iterables.js
+  cmd: runES6 :fail
+- path: es6/Array_static_methods_Array.from_iterator_closing.js
+  cmd: runES6 :fail
+- path: es6/Array_static_methods_Array.from_map_function_generator_instances.js
+  cmd: runES6 :fail
+- path: es6/Array_static_methods_Array.from_map_function_generic_iterables.js
+  cmd: runES6 :fail
+- path: es6/Array_static_methods_Array.from_map_function_instances_of_iterables.js
+  cmd: runES6 :fail
+- path: es6/Array_static_methods_Array[Symbol.species].js
+  cmd: runES6 :fail
+- path: es6/arrow_functions_lexical_arguments_binding.js
+  cmd: runES6 :fail
+- path: es6/arrow_functions_lexical_new.target_binding.js
+  cmd: runES6 :fail
+- path: es6/arrow_functions_lexical_super_binding.js
+  cmd: runES6 :fail
+- path: es6/arrow_functions_no_prototype_property.js
+  cmd: runES6 :fail
+- path: es6/block-level_function_declaration.js
+  cmd: runES6 :fail
+- path: es6/class_class_name_is_lexically_scoped.js
+  cmd: runES6 :fail
+- path: es6/class_computed_accessor_properties.js
+  cmd: runES6 :fail
+- path: es6/class_computed_static_accessor_properties.js
+  cmd: runES6 :fail
+- path: es6/destructuring_computed_properties.js
+  cmd: runES6 :fail
+- path: es6/destructuring_defaults_in_parameters_separate_scope.js
+  cmd: runES6 :fail
+- path: es6/destructuring_iterator_closing.js
+  cmd: runES6 :fail
+- path: es6/destructuring_nested_rest.js
+  cmd: runES6 :fail
+- path: es6/destructuring_with_generator_instances.js
+  cmd: runES6 :fail
+- path: es6/destructuring_with_generic_iterables.js
+  cmd: runES6 :fail
+- path: es6/destructuring_with_instances_of_generic_iterables.js
+  cmd: runES6 :fail
+- path: es6/for..of_loops_iterator_closing_break.js
+  cmd: runES6 :fail
+- path: es6/for..of_loops_iterator_closing_throw.js
+  cmd: runES6 :fail
+- path: es6/for..of_loops_with_generator_instances.js
+  cmd: runES6 :fail
+- path: es6/for..of_loops_with_generic_iterables.js
+  cmd: runES6 :fail
+- path: es6/for..of_loops_with_instances_of_generic_iterables.js
+  cmd: runES6 :fail
+- path: es6/Function_is_subclassable_can_be_called.js
+  cmd: runES6 :fail
+- path: es6/Function_is_subclassable_can_be_used_with_new.js
+  cmd: runES6 :fail
+- path: es6/Function_is_subclassable_correct_prototype_chain.js
+  cmd: runES6 :fail
+- path: es6/Function_is_subclassable_Function.prototype.apply.js
+  cmd: runES6 :fail
+- path: es6/Function_is_subclassable_Function.prototype.bind.js
+  cmd: runES6 :fail
+- path: es6/Function_is_subclassable_Function.prototype.call.js
+  cmd: runES6 :fail
+- path: es6/function_name_property_accessor_properties.js
+  cmd: runES6 :fail
+- path: es6/function_name_property_bound_functions.js
+  cmd: runES6 :fail
+- path: es6/function_name_property_class_expressions.js
+  cmd: runES6 :fail
+- path: es6/function_name_property_class_statements.js
+  cmd: runES6 :fail
+- path: es6/function_name_property_isnt_writable_is_configurable.js
+  cmd: runES6 :fail
+- path: es6/function_name_property_object_methods_class.js
+  cmd: runES6 :fail
+- path: es6/function_name_property_object_methods_function.js
+  cmd: runES6 :fail
+- path: es6/function_name_property_shorthand_methods_no_lexical_binding.js
+  cmd: runES6 :fail
+- path: es6/function_name_property_symbol-keyed_methods.js
+  cmd: runES6 :fail
+- path: es6/function_name_property_variables_class.js
+  cmd: runES6 :fail
+- path: es6/function_name_property_variables_function.js
+  cmd: runES6 :fail
+- path: es6/generators_%GeneratorPrototype%.constructor.js
+  cmd: runES6 :fail
+- path: es6/generators_%GeneratorPrototype%.js
+  cmd: runES6 :fail
+- path: es6/generators_%GeneratorPrototype%.return.js
+  cmd: runES6 :fail
+- path: es6/generators_%GeneratorPrototype%.throw.js
+  cmd: runES6 :fail
+- path: es6/generators_basic_functionality.js
+  cmd: runES6 :fail
+- path: es6/generators_cant_use_this_with_new.js
+  cmd: runES6 :fail
+- path: es6/generators_computed_shorthand_generators.js
+  cmd: runES6 :fail
+- path: es6/generators_computed_shorthand_generators_classes.js
+  cmd: runES6 :fail
+- path: es6/generators_correct_this_binding.js
+  cmd: runES6 :fail
+- path: es6/generators_generator_function_expressions.js
+  cmd: runES6 :fail
+- path: es6/generators_sending.js
+  cmd: runES6 :fail
+- path: es6/generators_shorthand_generator_methods.js
+  cmd: runES6 :fail
+- path: es6/generators_shorthand_generator_methods_classes.js
+  cmd: runES6 :fail
+- path: es6/generators_string-keyed_shorthand_generator_methods.js
+  cmd: runES6 :fail
+- path: es6/generators_yield_*_arrays.js
+  cmd: runES6 :fail
+- path: es6/generators_yield_*_astral_plane_strings.js
+  cmd: runES6 :fail
+- path: es6/generators_yield_*_generator_instances.js
+  cmd: runES6 :fail
+- path: es6/generators_yield_*_generic_iterables.js
+  cmd: runES6 :fail
+- path: es6/generators_yield_*_instances_of_iterables.js
+  cmd: runES6 :fail
+- path: es6/generators_yield_*_iterator_closing.js
+  cmd: runES6 :fail
+- path: es6/generators_yield_*_iterator_closing_via_throw.js
+  cmd: runES6 :fail
+- path: es6/generators_yield_*_on_non-iterables_is_a_runtime_error.js
+  cmd: runES6 :fail
+- path: es6/generators_yield_*_sparse_arrays.js
+  cmd: runES6 :fail
+- path: es6/generators_yield_*_strings.js
+  cmd: runES6 :fail
+- path: es6/generators_yield_operator_precedence.js
+  cmd: runES6 :fail
+- path: es6/Map_iterator_closing.js
+  cmd: runES6 :fail
+- path: es6/Map_Map[Symbol.species].js
+  cmd: runES6 :fail
+- path: es6/miscellaneous_built-in_prototypes_are_not_instances.js
+  cmd: runES6 :fail
+- path: es6/miscellaneous_function_length_is_configurable.js
+  cmd: runES6 :fail
+- path: es6/miscellaneous_no_assignments_allowed_in_for-in_head.js
+  cmd: runES6 :fail
+- path: es6/miscellaneous_RegExp_constructor_can_alter_flags.js
+  cmd: runES6 :fail
+- path: es6/new.target_assignment_is_an_early_error.js
+  cmd: runES6 :fail
+- path: es6/non-strict_function_semantics_hoisted_block-level_function_declaration.js
+  cmd: runES6 :fail
+- path: es6/object_literal_extensions_computed_accessors.js
+  cmd: runES6 :fail
+- path: es6/Promise_basic_functionality.js
+  cmd: runES6 :fail
+- path: es6/Promise_constructor_requires_new.js
+  cmd: runES6 :fail
+- path: es6/Promise_is_subclassable_basic_functionality.js
+  cmd: runES6 :fail
+- path: es6/Promise_is_subclassable_correct_prototype_chain.js
+  cmd: runES6 :fail
+- path: es6/Promise_is_subclassable_Promise.all.js
+  cmd: runES6 :fail
+- path: es6/Promise_is_subclassable_Promise.race.js
+  cmd: runES6 :fail
+- path: es6/Promise_Promise.all.js
+  cmd: runES6 :fail
+- path: es6/Promise_Promise.all_generic_iterables.js
+  cmd: runES6 :fail
+- path: es6/Promise_Promise.race.js
+  cmd: runES6 :fail
+- path: es6/Promise_Promise.race_generic_iterables.js
+  cmd: runES6 :fail
+- path: es6/Promise_Promise[Symbol.species].js
+  cmd: runES6 :fail
+- path: es6/proper_tail_calls_tail_call_optimisation_direct_recursion.js
+  cmd: runES6 :fail
+- path: es6/proper_tail_calls_tail_call_optimisation_mutual_recursion.js
+  cmd: runES6 :fail
+- path: es6/prototype_of_bound_functions_arrow_functions.js
+  cmd: runES6 :fail
+- path: es6/prototype_of_bound_functions_basic_functions.js
+  cmd: runES6 :fail
+- path: es6/prototype_of_bound_functions_classes.js
+  cmd: runES6 :fail
+- path: es6/prototype_of_bound_functions_generator_functions.js
+  cmd: runES6 :fail
+- path: es6/prototype_of_bound_functions_subclasses.js
+  cmd: runES6 :fail
+- path: es6/Proxy_apply_handler.js
+  cmd: runES6 :fail
+- path: es6/Proxy_Array.isArray_support.js
+  cmd: runES6 :fail
+- path: es6/Proxy_construct_handler.js
+  cmd: runES6 :fail
+- path: es6/Proxy_constructor_requires_new.js
+  cmd: runES6 :fail
+- path: es6/Proxy_defineProperty_handler.js
+  cmd: runES6 :fail
+- path: es6/Proxy_deleteProperty_handler.js
+  cmd: runES6 :fail
+- path: es6/Proxy_enumerate_handler.js
+  cmd: runES6 :fail
+- path: es6/Proxy_get_handler.js
+  cmd: runES6 :fail
+- path: es6/Proxy_get_handler_instances_of_proxies.js
+  cmd: runES6 :fail
+- path: es6/Proxy_getOwnPropertyDescriptor_handler.js
+  cmd: runES6 :fail
+- path: es6/Proxy_getPrototypeOf_handler.js
+  cmd: runES6 :fail
+- path: es6/Proxy_has_handler.js
+  cmd: runES6 :fail
+- path: es6/Proxy_has_handler_instances_of_proxies.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_defineProperty_calls_[[Set]].js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_defineProperty_calls_SetIntegrityLevel.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_deleteProperty_calls_Array.prototype.copyWithin.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_deleteProperty_calls_Array.prototype.pop.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_deleteProperty_calls_Array.prototype.reverse.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_deleteProperty_calls_Array.prototype.shift.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_deleteProperty_calls_Array.prototype.splice.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_deleteProperty_calls_Array.prototype.unshift.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_Array.from.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_Array.prototype.concat.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_Array.prototype.pop.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_Array.prototype.reverse.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_Array.prototype.shift.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_Array.prototype.splice.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_Array.prototype.toString.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_Array.prototype_iteration_methods.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_ClassDefinitionEvaluation.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_CreateDynamicFunction.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_CreateListFromArrayLike.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_Date.prototype.toJSON.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_Error.prototype.toString.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_Function.prototype.bind.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_HasBinding.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_instanceof_operator.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_IteratorComplete_IteratorValue.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_JSON.stringify.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_Object.assign.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_Object.defineProperties.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_Promise_resolve_functions.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_RegExp.prototype.flags.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_RegExp.prototype.test.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.match].js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.replace].js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.search].js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_RegExp.prototype[Symbol.split].js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_RegExp_constructor.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_String.prototype.match.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_String.prototype.replace.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_String.prototype.search.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_String.prototype.split.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_String.raw.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_ToPrimitive.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_get_calls_ToPropertyDescriptor.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_getOwnPropertyDescriptor_calls_[[Set]].js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_getOwnPropertyDescriptor_calls_Function.prototype.bind.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_getOwnPropertyDescriptor_calls_Object.assign.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_getOwnPropertyDescriptor_calls_Object.prototype.hasOwnProperty.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_ownKeys_calls_SerializeJSONObject.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_ownKeys_calls_SetIntegrityLevel.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_ownKeys_calls_TestIntegrityLevel.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_set_calls_Array.from.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_set_calls_Array.of.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_set_calls_Array.prototype.copyWithin.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_set_calls_Array.prototype.fill.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_set_calls_Array.prototype.pop.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_set_calls_Array.prototype.push.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_set_calls_Array.prototype.reverse.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_set_calls_Array.prototype.shift.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_set_calls_Array.prototype.splice.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_set_calls_Array.prototype.unshift.js
+  cmd: runES6 :fail
+- path: es6/Proxy_internal_set_calls_Object.assign.js
+  cmd: runES6 :fail
+- path: es6/Proxy_isExtensible_handler.js
+  cmd: runES6 :fail
+- path: es6/Proxy_JSON.stringify_support.js
+  cmd: runES6 :fail
+- path: es6/Proxy_ownKeys_handler.js
+  cmd: runES6 :fail
+- path: es6/Proxy_preventExtensions_handler.js
+  cmd: runES6 :fail
+- path: es6/Proxy_Proxy.revocable.js
+  cmd: runES6 :fail
+- path: es6/Proxy_set_handler.js
+  cmd: runES6 :fail
+- path: es6/Proxy_set_handler_instances_of_proxies.js
+  cmd: runES6 :fail
+- path: es6/Proxy_setPrototypeOf_handler.js
+  cmd: runES6 :fail
+- path: es6/Reflect_Reflect.construct.js
+  cmd: runES6 :fail
+- path: es6/Reflect_Reflect.construct_creates_instance_from_newTarget_argument.js
+  cmd: runES6 :fail
+- path: es6/Reflect_Reflect.construct_sets_new.target_meta_property.js
+  cmd: runES6 :fail
+- path: es6/Reflect_Reflect.set.js
+  cmd: runES6 :fail
+- path: es6/RegExp.prototype_properties_RegExp.prototype[Symbol.match].js
+  cmd: runES6 :fail
+- path: es6/RegExp.prototype_properties_RegExp.prototype[Symbol.replace].js
+  cmd: runES6 :fail
+- path: es6/RegExp.prototype_properties_RegExp.prototype[Symbol.search].js
+  cmd: runES6 :fail
+- path: es6/RegExp.prototype_properties_RegExp.prototype[Symbol.split].js
+  cmd: runES6 :fail
+- path: es6/RegExp.prototype_properties_RegExp[Symbol.species].js
+  cmd: runES6 :fail
+- path: es6/RegExp_is_subclassable_correct_prototype_chain.js
+  cmd: runES6 :fail
+- path: es6/RegExp_y_and_u_flags_u_flag.js
+  cmd: runES6 :fail
+- path: es6/RegExp_y_and_u_flags_u_flag_Unicode_code_point_escapes.js
+  cmd: runES6 :fail
+- path: es6/RegExp_y_and_u_flags_y_flag.js
+  cmd: runES6 :fail
+- path: es6/RegExp_y_and_u_flags_y_flag_lastIndex.js
+  cmd: runES6 :fail
+- path: es6/rest_parameters_arguments_object_interaction.js
+  cmd: runES6 :fail
+- path: es6/rest_parameters_basic_functionality.js
+  cmd: runES6 :fail
+- path: es6/rest_parameters_cant_be_used_in_setters.js
+  cmd: runES6 :fail
+- path: es6/rest_parameters_function_length_property.js
+  cmd: runES6 :fail
+- path: es6/rest_parameters_new_Function_support.js
+  cmd: runES6 :fail
+- path: es6/Set_iterator_closing.js
+  cmd: runES6 :fail
+- path: es6/Set_Set[Symbol.species].js
+  cmd: runES6 :fail
+- path: es6/spread_..._operator_with_astral_plane_strings_in_function_calls.js
+  cmd: runES6 :fail
+- path: es6/spread_..._operator_with_generator_instances_in_arrays.js
+  cmd: runES6 :fail
+- path: es6/spread_..._operator_with_generator_instances_in_calls.js
+  cmd: runES6 :fail
+- path: es6/spread_..._operator_with_generic_iterables_in_arrays.js
+  cmd: runES6 :fail
+- path: es6/spread_..._operator_with_generic_iterables_in_calls.js
+  cmd: runES6 :fail
+- path: es6/spread_..._operator_with_instances_of_iterables_in_arrays.js
+  cmd: runES6 :fail
+- path: es6/spread_..._operator_with_instances_of_iterables_in_calls.js
+  cmd: runES6 :fail
+- path: es6/spread_..._operator_with_strings_in_function_calls.js
+  cmd: runES6 :fail
+- path: es6/String.prototype_methods_String.prototype.normalize.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.from.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.of.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.prototype.copyWithin.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.prototype.entries.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.prototype.every.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.prototype.fill.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.prototype.filter.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.prototype.find.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.prototype.findIndex.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.prototype.forEach.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.prototype.indexOf.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.prototype.join.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.prototype.keys.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.prototype.lastIndexOf.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.prototype.map.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.prototype.reduce.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.prototype.reduceRight.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.prototype.reverse.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.prototype.slice.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.prototype.some.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.prototype.sort.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.prototype.values.js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%.prototype[Symbol.iterator].js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_%TypedArray%[Symbol.species].js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_ArrayBuffer[Symbol.species].js
+  cmd: runES6 :fail
+- path: es6/typed_arrays_correct_prototype_chains.js
+  cmd: runES6 :fail
+- path: es6/WeakMap_iterator_closing.js
+  cmd: runES6 :fail
+- path: es6/WeakSet_iterator_closing.js
+  cmd: runES6 :fail
+- path: es6/well-known_symbols_Symbol.hasInstance.js
+  cmd: runES6 :fail
+- path: es6/well-known_symbols_Symbol.isConcatSpreadable.js
+  cmd: runES6 :fail
+- path: es6/well-known_symbols_Symbol.match.js
+  cmd: runES6 :fail
+- path: es6/well-known_symbols_Symbol.replace.js
+  cmd: runES6 :fail
+- path: es6/well-known_symbols_Symbol.search.js
+  cmd: runES6 :fail
+- path: es6/well-known_symbols_Symbol.species_Array.prototype.concat.js
+  cmd: runES6 :fail
+- path: es6/well-known_symbols_Symbol.species_Array.prototype.filter.js
+  cmd: runES6 :fail
+- path: es6/well-known_symbols_Symbol.species_Array.prototype.map.js
+  cmd: runES6 :fail
+- path: es6/well-known_symbols_Symbol.species_Array.prototype.slice.js
+  cmd: runES6 :fail
+- path: es6/well-known_symbols_Symbol.species_Array.prototype.splice.js
+  cmd: runES6 :fail
+- path: es6/well-known_symbols_Symbol.species_existence.js
+  cmd: runES6 :fail
+- path: es6/well-known_symbols_Symbol.species_RegExp.prototype[Symbol.split].js
+  cmd: runES6 :fail
+- path: es6/well-known_symbols_Symbol.split.js
+  cmd: runES6 :fail
+- path: es6/well-known_symbols_Symbol.toPrimitive.js
+  cmd: runES6 :fail
+- path: es6/well-known_symbols_Symbol.toStringTag.js
+  cmd: runES6 :fail
+- path: es6/well-known_symbols_Symbol.toStringTag_misc._built-ins.js
+  cmd: runES6 :fail
diff --git a/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype.copyWithin.js b/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype.copyWithin.js
new file mode 100644
index 0000000..0cdc8ca
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype.copyWithin.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Array.prototype.copyWithin === 'function';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype.entries.js b/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype.entries.js
new file mode 100644
index 0000000..4a67ae3
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype.entries.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Array.prototype.entries === 'function';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype.fill.js b/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype.fill.js
new file mode 100644
index 0000000..cf27ffe
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype.fill.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Array.prototype.fill === 'function';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype.find.js b/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype.find.js
new file mode 100644
index 0000000..961de57
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype.find.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Array.prototype.find === 'function';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype.findIndex.js b/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype.findIndex.js
new file mode 100644
index 0000000..15eac9e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype.findIndex.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Array.prototype.findIndex === 'function';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype.keys.js b/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype.keys.js
new file mode 100644
index 0000000..2e3577e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype.keys.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Array.prototype.keys === 'function';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype.values.js b/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype.values.js
new file mode 100644
index 0000000..e4c4f03
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype.values.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Array.prototype.values === 'function';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype\133Symbol.iterator\135.js" "b/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype\133Symbol.iterator\135.js"
new file mode 100644
index 0000000..18afba5
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype\133Symbol.iterator\135.js"
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Array.prototype[Symbol.iterator] === 'function';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype\133Symbol.unscopables\135.js" "b/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype\133Symbol.unscopables\135.js"
new file mode 100644
index 0000000..d00a5c6
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array.prototype\133Symbol.unscopables\135.js"
@@ -0,0 +1,17 @@
+function test() {
+
+var unscopables = Array.prototype[Symbol.unscopables];
+if (!unscopables) {
+  return false;
+}
+var ns = "find,findIndex,fill,copyWithin,entries,keys,values".split(",");
+for (var i = 0; i < ns.length; i++) {
+  if (Array.prototype[ns[i]] && !unscopables[ns[i]]) return false;
+}
+return true;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array_iterator_prototype_chain.js b/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array_iterator_prototype_chain.js
new file mode 100644
index 0000000..4122dd1
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array.prototype_methods_Array_iterator_prototype_chain.js
@@ -0,0 +1,19 @@
+function test() {
+
+// Iterator instance
+var iterator = [][Symbol.iterator]();
+// %ArrayIteratorPrototype%
+var proto1 = Object.getPrototypeOf(iterator);
+// %IteratorPrototype%
+var proto2 = Object.getPrototypeOf(proto1);
+
+return proto2.hasOwnProperty(Symbol.iterator) &&
+  !proto1    .hasOwnProperty(Symbol.iterator) &&
+  !iterator  .hasOwnProperty(Symbol.iterator) &&
+  iterator[Symbol.iterator]() === iterator;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.from.js b/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.from.js
new file mode 100644
index 0000000..3a98548
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.from.js
@@ -0,0 +1,10 @@
+function test() {
+
+class C extends Array {}
+return C.from({ length: 0 }) instanceof C;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.isArray_support.js b/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.isArray_support.js
new file mode 100644
index 0000000..792c8b1
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.isArray_support.js
@@ -0,0 +1,10 @@
+function test() {
+
+class C extends Array {}
+return Array.isArray(new C());
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.of.js b/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.of.js
new file mode 100644
index 0000000..86692b2
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.of.js
@@ -0,0 +1,10 @@
+function test() {
+
+class C extends Array {}
+return C.of(0) instanceof C;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.prototype.concat.js b/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.prototype.concat.js
new file mode 100644
index 0000000..3d3eb96
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.prototype.concat.js
@@ -0,0 +1,11 @@
+function test() {
+
+class C extends Array {}
+var c = new C();
+return c.concat(1) instanceof C;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.prototype.filter.js b/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.prototype.filter.js
new file mode 100644
index 0000000..7b75b0b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.prototype.filter.js
@@ -0,0 +1,11 @@
+function test() {
+
+class C extends Array {}
+var c = new C();
+return c.filter(Boolean) instanceof C;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.prototype.map.js b/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.prototype.map.js
new file mode 100644
index 0000000..0acea18
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.prototype.map.js
@@ -0,0 +1,11 @@
+function test() {
+
+class C extends Array {}
+var c = new C();
+return c.map(Boolean) instanceof C;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.prototype.slice.js b/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.prototype.slice.js
new file mode 100644
index 0000000..a3362ca
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.prototype.slice.js
@@ -0,0 +1,12 @@
+function test() {
+
+class C extends Array {}
+var c = new C();
+c.push(2,4,6);
+return c.slice(1,2) instanceof C;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.prototype.splice.js b/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.prototype.splice.js
new file mode 100644
index 0000000..6dbad9b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array_is_subclassable_Array.prototype.splice.js
@@ -0,0 +1,12 @@
+function test() {
+
+class C extends Array {}
+var c = new C();
+c.push(2,4,6);
+return c.splice(1,2) instanceof C;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array_is_subclassable_correct_prototype_chain.js b/Source/JavaScriptCore/tests/es6/Array_is_subclassable_correct_prototype_chain.js
new file mode 100644
index 0000000..d1df149
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array_is_subclassable_correct_prototype_chain.js
@@ -0,0 +1,11 @@
+function test() {
+
+class C extends Array {}
+var c = new C();
+return c instanceof C && c instanceof Array && Object.getPrototypeOf(C) === Array;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array_is_subclassable_length_property_accessing.js b/Source/JavaScriptCore/tests/es6/Array_is_subclassable_length_property_accessing.js
new file mode 100644
index 0000000..9782375
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array_is_subclassable_length_property_accessing.js
@@ -0,0 +1,14 @@
+function test() {
+
+class C extends Array {}
+var c = new C();
+var len1 = c.length;
+c[2] = 'foo';
+var len2 = c.length;
+return len1 === 0 && len2 === 3;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array_is_subclassable_length_property_setting.js b/Source/JavaScriptCore/tests/es6/Array_is_subclassable_length_property_setting.js
new file mode 100644
index 0000000..a8216a7
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array_is_subclassable_length_property_setting.js
@@ -0,0 +1,13 @@
+function test() {
+
+class C extends Array {}
+var c = new C();
+c[2] = 'foo';
+c.length = 1;
+return c.length === 1 && !(2 in c);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_array-like_objects.js b/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_array-like_objects.js
new file mode 100644
index 0000000..bee9b89
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_array-like_objects.js
@@ -0,0 +1,9 @@
+function test() {
+
+return Array.from({ 0: "foo", 1: "bar", length: 2 }) + '' === "foo,bar";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_generator_instances.js b/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_generator_instances.js
new file mode 100644
index 0000000..78ca4a7
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_generator_instances.js
@@ -0,0 +1,10 @@
+function test() {
+
+var iterable = (function*(){ yield 1; yield 2; yield 3; }());
+return Array.from(iterable) + '' === "1,2,3";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_generic_iterables.js b/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_generic_iterables.js
new file mode 100644
index 0000000..3bcc59e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_generic_iterables.js
@@ -0,0 +1,10 @@
+function test() {
+
+var iterable = global.__createIterableObject([1, 2, 3]);
+return Array.from(iterable) + '' === "1,2,3";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_instances_of_generic_iterables.js b/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_instances_of_generic_iterables.js
new file mode 100644
index 0000000..4e05573
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_instances_of_generic_iterables.js
@@ -0,0 +1,10 @@
+function test() {
+
+var iterable = global.__createIterableObject([1, 2, 3]);
+return Array.from(Object.create(iterable)) + '' === "1,2,3";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_iterator_closing.js b/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_iterator_closing.js
new file mode 100644
index 0000000..8f72742
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_iterator_closing.js
@@ -0,0 +1,16 @@
+function test() {
+
+var closed = false;
+var iter = global.__createIterableObject([1, 2, 3], {
+  'return': function(){ closed = true; return {}; }
+});
+try {
+  Array.from(iter, function() { throw 42 });
+} catch(e){}
+return closed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_map_function_array-like_objects.js b/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_map_function_array-like_objects.js
new file mode 100644
index 0000000..1db3057
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_map_function_array-like_objects.js
@@ -0,0 +1,11 @@
+function test() {
+
+return Array.from({ 0: "foo", 1: "bar", length: 2 }, function(e, i) {
+  return e + this.baz + i;
+}, { baz: "d" }) + '' === "food0,bard1";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_map_function_generator_instances.js b/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_map_function_generator_instances.js
new file mode 100644
index 0000000..e5d5662
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_map_function_generator_instances.js
@@ -0,0 +1,12 @@
+function test() {
+
+var iterable = (function*(){ yield "foo"; yield "bar"; yield "bal"; }());
+return Array.from(iterable, function(e, i) {
+  return e + this.baz + i;
+}, { baz: "d" }) + '' === "food0,bard1,bald2";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_map_function_generic_iterables.js b/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_map_function_generic_iterables.js
new file mode 100644
index 0000000..48abee5
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_map_function_generic_iterables.js
@@ -0,0 +1,12 @@
+function test() {
+
+var iterable = global.__createIterableObject(["foo", "bar", "bal"]);
+return Array.from(iterable, function(e, i) {
+  return e + this.baz + i;
+}, { baz: "d" }) + '' === "food0,bard1,bald2";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_map_function_instances_of_iterables.js b/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_map_function_instances_of_iterables.js
new file mode 100644
index 0000000..a325bd4
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.from_map_function_instances_of_iterables.js
@@ -0,0 +1,12 @@
+function test() {
+
+var iterable = global.__createIterableObject(["foo", "bar", "bal"]);
+return Array.from(Object.create(iterable), function(e, i) {
+  return e + this.baz + i;
+}, { baz: "d" }) + '' === "food0,bard1,bald2";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.of.js b/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.of.js
new file mode 100644
index 0000000..040d4ca8
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Array_static_methods_Array.of.js
@@ -0,0 +1,10 @@
+function test() {
+
+return typeof Array.of === 'function' &&
+  Array.of(2)[0] === 2;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/Array_static_methods_Array\133Symbol.species\135.js" "b/Source/JavaScriptCore/tests/es6/Array_static_methods_Array\133Symbol.species\135.js"
new file mode 100644
index 0000000..65fb6e0
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/Array_static_methods_Array\133Symbol.species\135.js"
@@ -0,0 +1,10 @@
+function test() {
+
+var prop = Object.getOwnPropertyDescriptor(Array, Symbol.species);
+return 'get' in prop && Array[Symbol.species] === Array;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Function_is_subclassable_Function.prototype.apply.js b/Source/JavaScriptCore/tests/es6/Function_is_subclassable_Function.prototype.apply.js
new file mode 100644
index 0000000..311dee3
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Function_is_subclassable_Function.prototype.apply.js
@@ -0,0 +1,11 @@
+function test() {
+
+class C extends Function {}
+var c = new C("x", "return this.bar + x;");
+return c.apply({bar:1}, [2]) === 3;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Function_is_subclassable_Function.prototype.bind.js b/Source/JavaScriptCore/tests/es6/Function_is_subclassable_Function.prototype.bind.js
new file mode 100644
index 0000000..fce6c01
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Function_is_subclassable_Function.prototype.bind.js
@@ -0,0 +1,11 @@
+function test() {
+
+class C extends Function {}
+var c = new C("x", "y", "return this.bar + x + y;").bind({bar:1}, 2);
+return c(6) === 9 && c instanceof C;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Function_is_subclassable_Function.prototype.call.js b/Source/JavaScriptCore/tests/es6/Function_is_subclassable_Function.prototype.call.js
new file mode 100644
index 0000000..77ed438
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Function_is_subclassable_Function.prototype.call.js
@@ -0,0 +1,11 @@
+function test() {
+
+class C extends Function {}
+var c = new C("x", "return this.bar + x;");
+return c.call({bar:1}, 2) === 3;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Function_is_subclassable_can_be_called.js b/Source/JavaScriptCore/tests/es6/Function_is_subclassable_can_be_called.js
new file mode 100644
index 0000000..d662d77
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Function_is_subclassable_can_be_called.js
@@ -0,0 +1,11 @@
+function test() {
+
+class C extends Function {}
+var c = new C("return 'foo';");
+return c() === 'foo';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Function_is_subclassable_can_be_used_with_new.js b/Source/JavaScriptCore/tests/es6/Function_is_subclassable_can_be_used_with_new.js
new file mode 100644
index 0000000..9c78398
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Function_is_subclassable_can_be_used_with_new.js
@@ -0,0 +1,12 @@
+function test() {
+
+class C extends Function {}
+var c = new C("this.bar = 2;");
+c.prototype.baz = 3;
+return new c().bar === 2 && new c().baz === 3;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Function_is_subclassable_correct_prototype_chain.js b/Source/JavaScriptCore/tests/es6/Function_is_subclassable_correct_prototype_chain.js
new file mode 100644
index 0000000..caaee43
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Function_is_subclassable_correct_prototype_chain.js
@@ -0,0 +1,11 @@
+function test() {
+
+class C extends Function {}
+var c = new C("return 'foo';");
+return c instanceof C && c instanceof Function && Object.getPrototypeOf(C) === Function;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/HTML-style_comments.js b/Source/JavaScriptCore/tests/es6/HTML-style_comments.js
new file mode 100644
index 0000000..b476385
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/HTML-style_comments.js
@@ -0,0 +1,11 @@
+function test() {
+
+--> A comment
+<!-- Another comment
+var a = 3; <!-- Another comment
+return a === 3;
+  
+}
+
+if (!test())
+    throw new Error("Test failed");
diff --git a/Source/JavaScriptCore/tests/es6/Map_-0_key_converts_to_+0.js b/Source/JavaScriptCore/tests/es6/Map_-0_key_converts_to_+0.js
new file mode 100644
index 0000000..9ad4067
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Map_-0_key_converts_to_+0.js
@@ -0,0 +1,15 @@
+function test() {
+
+var map = new Map();
+map.set(-0, "foo");
+var k;
+map.forEach(function (value, key) {
+  k = 1 / key;
+});
+return k === Infinity && map.get(+0) == "foo";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Map_Map.prototype.clear.js b/Source/JavaScriptCore/tests/es6/Map_Map.prototype.clear.js
new file mode 100644
index 0000000..e5ef66c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Map_Map.prototype.clear.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Map.prototype.clear === "function";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Map_Map.prototype.delete.js b/Source/JavaScriptCore/tests/es6/Map_Map.prototype.delete.js
new file mode 100644
index 0000000..aa813bb
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Map_Map.prototype.delete.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Map.prototype.delete === "function";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Map_Map.prototype.entries.js b/Source/JavaScriptCore/tests/es6/Map_Map.prototype.entries.js
new file mode 100644
index 0000000..777cdfc
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Map_Map.prototype.entries.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Map.prototype.entries === "function";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Map_Map.prototype.forEach.js b/Source/JavaScriptCore/tests/es6/Map_Map.prototype.forEach.js
new file mode 100644
index 0000000..1e10891
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Map_Map.prototype.forEach.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Map.prototype.forEach === "function";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Map_Map.prototype.keys.js b/Source/JavaScriptCore/tests/es6/Map_Map.prototype.keys.js
new file mode 100644
index 0000000..d861eac
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Map_Map.prototype.keys.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Map.prototype.keys === "function";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Map_Map.prototype.set_returns_this.js b/Source/JavaScriptCore/tests/es6/Map_Map.prototype.set_returns_this.js
new file mode 100644
index 0000000..e3dc1d6
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Map_Map.prototype.set_returns_this.js
@@ -0,0 +1,10 @@
+function test() {
+
+var map = new Map();
+return map.set(0, 0) === map;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Map_Map.prototype.size.js b/Source/JavaScriptCore/tests/es6/Map_Map.prototype.size.js
new file mode 100644
index 0000000..7bdcbfa
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Map_Map.prototype.size.js
@@ -0,0 +1,14 @@
+function test() {
+
+var key = {};
+var map = new Map();
+
+map.set(key, 123);
+
+return map.size === 1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Map_Map.prototype.values.js b/Source/JavaScriptCore/tests/es6/Map_Map.prototype.values.js
new file mode 100644
index 0000000..0a65633
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Map_Map.prototype.values.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Map.prototype.values === "function";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/Map_Map.prototype\133Symbol.iterator\135.js" "b/Source/JavaScriptCore/tests/es6/Map_Map.prototype\133Symbol.iterator\135.js"
new file mode 100644
index 0000000..fba992b
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/Map_Map.prototype\133Symbol.iterator\135.js"
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Map.prototype[Symbol.iterator] === "function";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/Map_Map\133Symbol.species\135.js" "b/Source/JavaScriptCore/tests/es6/Map_Map\133Symbol.species\135.js"
new file mode 100644
index 0000000..2a4a4a0
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/Map_Map\133Symbol.species\135.js"
@@ -0,0 +1,10 @@
+function test() {
+
+var prop = Object.getOwnPropertyDescriptor(Map, Symbol.species);
+return 'get' in prop && Map[Symbol.species] === Map;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Map_Map_iterator_prototype_chain.js b/Source/JavaScriptCore/tests/es6/Map_Map_iterator_prototype_chain.js
new file mode 100644
index 0000000..37ad6ed
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Map_Map_iterator_prototype_chain.js
@@ -0,0 +1,19 @@
+function test() {
+
+// Iterator instance
+var iterator = new Map()[Symbol.iterator]();
+// %MapIteratorPrototype%
+var proto1 = Object.getPrototypeOf(iterator);
+// %IteratorPrototype%
+var proto2 = Object.getPrototypeOf(proto1);
+
+return proto2.hasOwnProperty(Symbol.iterator) &&
+  !proto1    .hasOwnProperty(Symbol.iterator) &&
+  !iterator  .hasOwnProperty(Symbol.iterator) &&
+  iterator[Symbol.iterator]() === iterator;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Map_basic_functionality.js b/Source/JavaScriptCore/tests/es6/Map_basic_functionality.js
new file mode 100644
index 0000000..513e7a1
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Map_basic_functionality.js
@@ -0,0 +1,14 @@
+function test() {
+
+var key = {};
+var map = new Map();
+
+map.set(key, 123);
+
+return map.has(key) && map.get(key) === 123;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Map_constructor_accepts_null.js b/Source/JavaScriptCore/tests/es6/Map_constructor_accepts_null.js
new file mode 100644
index 0000000..e31e89e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Map_constructor_accepts_null.js
@@ -0,0 +1,10 @@
+function test() {
+
+new Map(null);
+return true;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Map_constructor_arguments.js b/Source/JavaScriptCore/tests/es6/Map_constructor_arguments.js
new file mode 100644
index 0000000..164ccfe
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Map_constructor_arguments.js
@@ -0,0 +1,14 @@
+function test() {
+
+var key1 = {};
+var key2 = {};
+var map = new Map([[key1, 123], [key2, 456]]);
+
+return map.has(key1) && map.get(key1) === 123 &&
+       map.has(key2) && map.get(key2) === 456;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Map_constructor_invokes_set.js b/Source/JavaScriptCore/tests/es6/Map_constructor_invokes_set.js
new file mode 100644
index 0000000..45242d2
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Map_constructor_invokes_set.js
@@ -0,0 +1,19 @@
+function test() {
+
+var passed = false;
+var _set = Map.prototype.set;
+
+Map.prototype.set = function(k, v) {
+  passed = true;
+};
+
+new Map([ [1, 2] ]);
+Map.prototype.set = _set;
+
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Map_constructor_requires_new.js b/Source/JavaScriptCore/tests/es6/Map_constructor_requires_new.js
new file mode 100644
index 0000000..9eb6bc5
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Map_constructor_requires_new.js
@@ -0,0 +1,15 @@
+function test() {
+
+new Map();
+try {
+  Map();
+  return false;
+} catch(e) {
+  return true;
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Map_iterator_closing.js b/Source/JavaScriptCore/tests/es6/Map_iterator_closing.js
new file mode 100644
index 0000000..828743f
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Map_iterator_closing.js
@@ -0,0 +1,16 @@
+function test() {
+
+var closed = false;
+var iter = global.__createIterableObject([1, 2, 3], {
+  'return': function(){ closed = true; return {}; }
+});
+try {
+  new Map(iter);
+} catch(e){}
+return closed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Math_methods_Math.acosh.js b/Source/JavaScriptCore/tests/es6/Math_methods_Math.acosh.js
new file mode 100644
index 0000000..25748e4b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Math_methods_Math.acosh.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Math.acosh === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Math_methods_Math.asinh.js b/Source/JavaScriptCore/tests/es6/Math_methods_Math.asinh.js
new file mode 100644
index 0000000..c086211
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Math_methods_Math.asinh.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Math.asinh === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Math_methods_Math.atanh.js b/Source/JavaScriptCore/tests/es6/Math_methods_Math.atanh.js
new file mode 100644
index 0000000..c32828a
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Math_methods_Math.atanh.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Math.atanh === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Math_methods_Math.cbrt.js b/Source/JavaScriptCore/tests/es6/Math_methods_Math.cbrt.js
new file mode 100644
index 0000000..02c83d2
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Math_methods_Math.cbrt.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Math.cbrt === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Math_methods_Math.clz32.js b/Source/JavaScriptCore/tests/es6/Math_methods_Math.clz32.js
new file mode 100644
index 0000000..0879e39
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Math_methods_Math.clz32.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Math.clz32 === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Math_methods_Math.cosh.js b/Source/JavaScriptCore/tests/es6/Math_methods_Math.cosh.js
new file mode 100644
index 0000000..27ed255
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Math_methods_Math.cosh.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Math.cosh === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Math_methods_Math.expm1.js b/Source/JavaScriptCore/tests/es6/Math_methods_Math.expm1.js
new file mode 100644
index 0000000..f967ca1
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Math_methods_Math.expm1.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Math.expm1 === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Math_methods_Math.fround.js b/Source/JavaScriptCore/tests/es6/Math_methods_Math.fround.js
new file mode 100644
index 0000000..1186ea9
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Math_methods_Math.fround.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Math.fround === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Math_methods_Math.hypot.js b/Source/JavaScriptCore/tests/es6/Math_methods_Math.hypot.js
new file mode 100644
index 0000000..b04571d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Math_methods_Math.hypot.js
@@ -0,0 +1,12 @@
+function test() {
+
+return Math.hypot() === 0 &&
+  Math.hypot(1) === 1 &&
+  Math.hypot(9, 12, 20) === 25 &&
+  Math.hypot(27, 36, 60, 100) === 125;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Math_methods_Math.imul.js b/Source/JavaScriptCore/tests/es6/Math_methods_Math.imul.js
new file mode 100644
index 0000000..1ab0bce
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Math_methods_Math.imul.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Math.imul === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Math_methods_Math.log10.js b/Source/JavaScriptCore/tests/es6/Math_methods_Math.log10.js
new file mode 100644
index 0000000..ace1bc7
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Math_methods_Math.log10.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Math.log10 === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Math_methods_Math.log1p.js b/Source/JavaScriptCore/tests/es6/Math_methods_Math.log1p.js
new file mode 100644
index 0000000..1304585
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Math_methods_Math.log1p.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Math.log1p === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Math_methods_Math.log2.js b/Source/JavaScriptCore/tests/es6/Math_methods_Math.log2.js
new file mode 100644
index 0000000..a783eb8
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Math_methods_Math.log2.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Math.log2 === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Math_methods_Math.sign.js b/Source/JavaScriptCore/tests/es6/Math_methods_Math.sign.js
new file mode 100644
index 0000000..2c22536
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Math_methods_Math.sign.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Math.sign === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Math_methods_Math.sinh.js b/Source/JavaScriptCore/tests/es6/Math_methods_Math.sinh.js
new file mode 100644
index 0000000..b53e6bf
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Math_methods_Math.sinh.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Math.sinh === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Math_methods_Math.tanh.js b/Source/JavaScriptCore/tests/es6/Math_methods_Math.tanh.js
new file mode 100644
index 0000000..c43fdfc
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Math_methods_Math.tanh.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Math.tanh === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Math_methods_Math.trunc.js b/Source/JavaScriptCore/tests/es6/Math_methods_Math.trunc.js
new file mode 100644
index 0000000..5eedc74
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Math_methods_Math.trunc.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Math.trunc === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Number_properties_Number.EPSILON.js b/Source/JavaScriptCore/tests/es6/Number_properties_Number.EPSILON.js
new file mode 100644
index 0000000..b10b238
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Number_properties_Number.EPSILON.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Number.EPSILON === 'number';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Number_properties_Number.MAX_SAFE_INTEGER.js b/Source/JavaScriptCore/tests/es6/Number_properties_Number.MAX_SAFE_INTEGER.js
new file mode 100644
index 0000000..952104c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Number_properties_Number.MAX_SAFE_INTEGER.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Number.MAX_SAFE_INTEGER === 'number';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Number_properties_Number.MIN_SAFE_INTEGER.js b/Source/JavaScriptCore/tests/es6/Number_properties_Number.MIN_SAFE_INTEGER.js
new file mode 100644
index 0000000..438ece2
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Number_properties_Number.MIN_SAFE_INTEGER.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Number.MIN_SAFE_INTEGER === 'number';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Number_properties_Number.isFinite.js b/Source/JavaScriptCore/tests/es6/Number_properties_Number.isFinite.js
new file mode 100644
index 0000000..8efc720
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Number_properties_Number.isFinite.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Number.isFinite === 'function';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Number_properties_Number.isInteger.js b/Source/JavaScriptCore/tests/es6/Number_properties_Number.isInteger.js
new file mode 100644
index 0000000..879c234
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Number_properties_Number.isInteger.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Number.isInteger === 'function';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Number_properties_Number.isNaN.js b/Source/JavaScriptCore/tests/es6/Number_properties_Number.isNaN.js
new file mode 100644
index 0000000..26456df
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Number_properties_Number.isNaN.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Number.isNaN === 'function';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Number_properties_Number.isSafeInteger.js b/Source/JavaScriptCore/tests/es6/Number_properties_Number.isSafeInteger.js
new file mode 100644
index 0000000..e5f9374
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Number_properties_Number.isSafeInteger.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Number.isSafeInteger === 'function';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Object.prototype.__proto___absent_from_Object.createnull.js b/Source/JavaScriptCore/tests/es6/Object.prototype.__proto___absent_from_Object.createnull.js
new file mode 100644
index 0000000..90fefbd
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Object.prototype.__proto___absent_from_Object.createnull.js
@@ -0,0 +1,11 @@
+function test() {
+
+var o = Object.create(null), p = {};
+o.__proto__ = p;
+return Object.getPrototypeOf(o) !== p;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Object.prototype.__proto___correct_property_descriptor.js b/Source/JavaScriptCore/tests/es6/Object.prototype.__proto___correct_property_descriptor.js
new file mode 100644
index 0000000..d0e24bd
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Object.prototype.__proto___correct_property_descriptor.js
@@ -0,0 +1,16 @@
+function test() {
+
+var desc = Object.getOwnPropertyDescriptor(Object.prototype,"__proto__");
+var A = function(){};
+
+return (desc
+  && "get" in desc
+  && "set" in desc
+  && desc.configurable
+  && !desc.enumerable);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Object.prototype.__proto___get_prototype.js b/Source/JavaScriptCore/tests/es6/Object.prototype.__proto___get_prototype.js
new file mode 100644
index 0000000..a97d00e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Object.prototype.__proto___get_prototype.js
@@ -0,0 +1,10 @@
+function test() {
+
+var A = function(){};
+return (new A()).__proto__ === A.prototype;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Object.prototype.__proto___present_in_Object.getOwnPropertyNames.js b/Source/JavaScriptCore/tests/es6/Object.prototype.__proto___present_in_Object.getOwnPropertyNames.js
new file mode 100644
index 0000000..ce02a1b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Object.prototype.__proto___present_in_Object.getOwnPropertyNames.js
@@ -0,0 +1,9 @@
+function test() {
+
+return Object.getOwnPropertyNames(Object.prototype).indexOf('__proto__') > -1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Object.prototype.__proto___present_in_hasOwnProperty.js b/Source/JavaScriptCore/tests/es6/Object.prototype.__proto___present_in_hasOwnProperty.js
new file mode 100644
index 0000000..1e6cd40
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Object.prototype.__proto___present_in_hasOwnProperty.js
@@ -0,0 +1,9 @@
+function test() {
+
+return Object.prototype.hasOwnProperty('__proto__');
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Object.prototype.__proto___set_prototype.js b/Source/JavaScriptCore/tests/es6/Object.prototype.__proto___set_prototype.js
new file mode 100644
index 0000000..cbeee6c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Object.prototype.__proto___set_prototype.js
@@ -0,0 +1,11 @@
+function test() {
+
+var o = {};
+o.__proto__ = Array.prototype;
+return o instanceof Array;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Object_static_methods_Object.assign.js b/Source/JavaScriptCore/tests/es6/Object_static_methods_Object.assign.js
new file mode 100644
index 0000000..612667a
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Object_static_methods_Object.assign.js
@@ -0,0 +1,10 @@
+function test() {
+
+var o = Object.assign({a:true}, {b:true}, {c:true});
+return "a" in o && "b" in o && "c" in o;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Object_static_methods_Object.getOwnPropertySymbols.js b/Source/JavaScriptCore/tests/es6/Object_static_methods_Object.getOwnPropertySymbols.js
new file mode 100644
index 0000000..611c50a
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Object_static_methods_Object.getOwnPropertySymbols.js
@@ -0,0 +1,17 @@
+function test() {
+
+var o = {};
+var sym = Symbol(), sym2 = Symbol(), sym3 = Symbol();
+o[sym]  = true;
+o[sym2] = true;
+o[sym3] = true;
+var result = Object.getOwnPropertySymbols(o);
+return result[0] === sym
+  && result[1] === sym2
+  && result[2] === sym3;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Object_static_methods_Object.is.js b/Source/JavaScriptCore/tests/es6/Object_static_methods_Object.is.js
new file mode 100644
index 0000000..44c0915
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Object_static_methods_Object.is.js
@@ -0,0 +1,11 @@
+function test() {
+
+return typeof Object.is === 'function' &&
+  Object.is(NaN, NaN) &&
+ !Object.is(-0, 0);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Object_static_methods_Object.setPrototypeOf.js b/Source/JavaScriptCore/tests/es6/Object_static_methods_Object.setPrototypeOf.js
new file mode 100644
index 0000000..fd3c1cc
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Object_static_methods_Object.setPrototypeOf.js
@@ -0,0 +1,9 @@
+function test() {
+
+return Object.setPrototypeOf({}, Array.prototype) instanceof Array;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.freeze.js b/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.freeze.js
new file mode 100644
index 0000000..f85697a
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.freeze.js
@@ -0,0 +1,9 @@
+function test() {
+
+return Object.freeze('a') === 'a';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.getOwnPropertyDescriptor.js b/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.getOwnPropertyDescriptor.js
new file mode 100644
index 0000000..b52357c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.getOwnPropertyDescriptor.js
@@ -0,0 +1,9 @@
+function test() {
+
+return Object.getOwnPropertyDescriptor('a', 'foo') === undefined;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.getOwnPropertyNames.js b/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.getOwnPropertyNames.js
new file mode 100644
index 0000000..d244ca6
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.getOwnPropertyNames.js
@@ -0,0 +1,11 @@
+function test() {
+
+var s = Object.getOwnPropertyNames('a');
+return s.length === 2 &&
+  ((s[0] === 'length' && s[1] === '0') || (s[0] === '0' && s[1] === 'length'));
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.getPrototypeOf.js b/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.getPrototypeOf.js
new file mode 100644
index 0000000..86ff25b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.getPrototypeOf.js
@@ -0,0 +1,9 @@
+function test() {
+
+return Object.getPrototypeOf('a').constructor === String;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.isExtensible.js b/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.isExtensible.js
new file mode 100644
index 0000000..2c04625
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.isExtensible.js
@@ -0,0 +1,9 @@
+function test() {
+
+return Object.isExtensible('a') === false;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.isFrozen.js b/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.isFrozen.js
new file mode 100644
index 0000000..b82b08c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.isFrozen.js
@@ -0,0 +1,9 @@
+function test() {
+
+return Object.isFrozen('a') === true;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.isSealed.js b/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.isSealed.js
new file mode 100644
index 0000000..a123b14
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.isSealed.js
@@ -0,0 +1,9 @@
+function test() {
+
+return Object.isSealed('a') === true;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.keys.js b/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.keys.js
new file mode 100644
index 0000000..8681193
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.keys.js
@@ -0,0 +1,10 @@
+function test() {
+
+var s = Object.keys('a');
+return s.length === 1 && s[0] === '0';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.preventExtensions.js b/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.preventExtensions.js
new file mode 100644
index 0000000..a99b8ea
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.preventExtensions.js
@@ -0,0 +1,9 @@
+function test() {
+
+return Object.preventExtensions('a') === 'a';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.seal.js b/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.seal.js
new file mode 100644
index 0000000..4ab223d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Object_static_methods_accept_primitives_Object.seal.js
@@ -0,0 +1,9 @@
+function test() {
+
+return Object.seal('a') === 'a';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Promise_Promise.all.js b/Source/JavaScriptCore/tests/es6/Promise_Promise.all.js
new file mode 100644
index 0000000..7ba505f
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Promise_Promise.all.js
@@ -0,0 +1,23 @@
+function test() {
+
+var fulfills = Promise.all([
+  new Promise(function(resolve)   { setTimeout(resolve,200,"foo"); }),
+  new Promise(function(resolve)   { setTimeout(resolve,100,"bar"); }),
+]);
+var rejects = Promise.all([
+  new Promise(function(_, reject) { setTimeout(reject, 200,"baz"); }),
+  new Promise(function(_, reject) { setTimeout(reject, 100,"qux"); }),
+]);
+var score = 0;
+fulfills.then(function(result) { score += (result + "" === "foo,bar"); check(); });
+rejects.catch(function(result) { score += (result === "qux"); check(); });
+
+function check() {
+  if (score === 2) asyncTestPassed();
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Promise_Promise.all_generic_iterables.js b/Source/JavaScriptCore/tests/es6/Promise_Promise.all_generic_iterables.js
new file mode 100644
index 0000000..295e2b1
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Promise_Promise.all_generic_iterables.js
@@ -0,0 +1,23 @@
+function test() {
+
+var fulfills = Promise.all(global.__createIterableObject([
+  new Promise(function(resolve)   { setTimeout(resolve,200,"foo"); }),
+  new Promise(function(resolve)   { setTimeout(resolve,100,"bar"); }),
+]));
+var rejects = Promise.all(global.__createIterableObject([
+  new Promise(function(_, reject) { setTimeout(reject, 200,"baz"); }),
+  new Promise(function(_, reject) { setTimeout(reject, 100,"qux"); }),
+]));
+var score = 0;
+fulfills.then(function(result) { score += (result + "" === "foo,bar"); check(); });
+rejects.catch(function(result) { score += (result === "qux"); check(); });
+
+function check() {
+  if (score === 2) asyncTestPassed();
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Promise_Promise.race.js b/Source/JavaScriptCore/tests/es6/Promise_Promise.race.js
new file mode 100644
index 0000000..a5d6d5a
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Promise_Promise.race.js
@@ -0,0 +1,23 @@
+function test() {
+
+var fulfills = Promise.race([
+  new Promise(function(resolve)   { setTimeout(resolve,200,"foo"); }),
+  new Promise(function(_, reject) { setTimeout(reject, 300,"bar"); }),
+]);
+var rejects = Promise.race([
+  new Promise(function(_, reject) { setTimeout(reject, 200,"baz"); }),
+  new Promise(function(resolve)   { setTimeout(resolve,300,"qux"); }),
+]);
+var score = 0;
+fulfills.then(function(result) { score += (result === "foo"); check(); });
+rejects.catch(function(result) { score += (result === "baz"); check(); });
+
+function check() {
+  if (score === 2) asyncTestPassed();
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Promise_Promise.race_generic_iterables.js b/Source/JavaScriptCore/tests/es6/Promise_Promise.race_generic_iterables.js
new file mode 100644
index 0000000..8d5fdd9
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Promise_Promise.race_generic_iterables.js
@@ -0,0 +1,23 @@
+function test() {
+
+var fulfills = Promise.race(global.__createIterableObject([
+  new Promise(function(resolve)   { setTimeout(resolve,200,"foo"); }),
+  new Promise(function(_, reject) { setTimeout(reject, 300,"bar"); }),
+]));
+var rejects = Promise.race(global.__createIterableObject([
+  new Promise(function(_, reject) { setTimeout(reject, 200,"baz"); }),
+  new Promise(function(resolve)   { setTimeout(resolve,300,"qux"); }),
+]));
+var score = 0;
+fulfills.then(function(result) { score += (result === "foo"); check(); });
+rejects.catch(function(result) { score += (result === "baz"); check(); });
+
+function check() {
+  if (score === 2) asyncTestPassed();
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/Promise_Promise\133Symbol.species\135.js" "b/Source/JavaScriptCore/tests/es6/Promise_Promise\133Symbol.species\135.js"
new file mode 100644
index 0000000..6d3eaad
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/Promise_Promise\133Symbol.species\135.js"
@@ -0,0 +1,10 @@
+function test() {
+
+var prop = Object.getOwnPropertyDescriptor(Promise, Symbol.species);
+return 'get' in prop && Promise[Symbol.species] === Promise;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Promise_basic_functionality.js b/Source/JavaScriptCore/tests/es6/Promise_basic_functionality.js
new file mode 100644
index 0000000..8f730a4
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Promise_basic_functionality.js
@@ -0,0 +1,30 @@
+function test() {
+
+var p1 = new Promise(function(resolve, reject) { resolve("foo"); });
+var p2 = new Promise(function(resolve, reject) { reject("quux"); });
+var score = 0;
+
+function thenFn(result)  { score += (result === "foo");  check(); }
+function catchFn(result) { score += (result === "quux"); check(); }
+function shouldNotRun(result)  { score = -Infinity;   }
+
+p1.then(thenFn, shouldNotRun);
+p2.then(shouldNotRun, catchFn);
+p1.catch(shouldNotRun);
+p2.catch(catchFn);
+
+p1.then(function() {
+  // Promise.prototype.then() should return a new Promise
+  score += p1.then() !== p1;
+  check();
+});
+
+function check() {
+  if (score === 4) asyncTestPassed();
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Promise_constructor_requires_new.js b/Source/JavaScriptCore/tests/es6/Promise_constructor_requires_new.js
new file mode 100644
index 0000000..33468e9
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Promise_constructor_requires_new.js
@@ -0,0 +1,15 @@
+function test() {
+
+new Promise(function(){});
+try {
+  Promise(function(){});
+  return false;
+} catch(e) {
+  return true;
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Promise_is_subclassable_Promise.all.js b/Source/JavaScriptCore/tests/es6/Promise_is_subclassable_Promise.all.js
new file mode 100644
index 0000000..e596095
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Promise_is_subclassable_Promise.all.js
@@ -0,0 +1,24 @@
+function test() {
+
+class P extends Promise {}
+var fulfills = P.all([
+  new Promise(function(resolve)   { setTimeout(resolve,200,"foo"); }),
+  new Promise(function(resolve)   { setTimeout(resolve,100,"bar"); }),
+]);
+var rejects = P.all([
+  new Promise(function(_, reject) { setTimeout(reject, 200,"baz"); }),
+  new Promise(function(_, reject) { setTimeout(reject, 100,"qux"); }),
+]);
+var score = +(fulfills instanceof P);
+fulfills.then(function(result) { score += (result + "" === "foo,bar"); check(); });
+rejects.catch(function(result) { score += (result === "qux"); check(); });
+
+function check() {
+  if (score === 3) asyncTestPassed();
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Promise_is_subclassable_Promise.race.js b/Source/JavaScriptCore/tests/es6/Promise_is_subclassable_Promise.race.js
new file mode 100644
index 0000000..4bc7943
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Promise_is_subclassable_Promise.race.js
@@ -0,0 +1,24 @@
+function test() {
+
+class P extends Promise {}
+var fulfills = P.race([
+  new Promise(function(resolve)   { setTimeout(resolve,200,"foo"); }),
+  new Promise(function(_, reject) { setTimeout(reject, 300,"bar"); }),
+]);
+var rejects = P.race([
+  new Promise(function(_, reject) { setTimeout(reject, 200,"baz"); }),
+  new Promise(function(resolve)   { setTimeout(resolve,300,"qux"); }),
+]);
+var score = +(fulfills instanceof P);
+fulfills.then(function(result) { score += (result === "foo"); check(); });
+rejects.catch(function(result) { score += (result === "baz"); check(); });
+
+function check() {
+  if (score === 3) asyncTestPassed();
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Promise_is_subclassable_basic_functionality.js b/Source/JavaScriptCore/tests/es6/Promise_is_subclassable_basic_functionality.js
new file mode 100644
index 0000000..c58512f
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Promise_is_subclassable_basic_functionality.js
@@ -0,0 +1,31 @@
+function test() {
+
+class P extends Promise {}
+var p1 = new P(function(resolve, reject) { resolve("foo"); });
+var p2 = new P(function(resolve, reject) { reject("quux"); });
+var score = +(p1 instanceof P);
+
+function thenFn(result)  { score += (result === "foo");  check(); }
+function catchFn(result) { score += (result === "quux"); check(); }
+function shouldNotRun(result)  { score = -Infinity;   }
+
+p1.then(thenFn, shouldNotRun);
+p2.then(shouldNotRun, catchFn);
+p1.catch(shouldNotRun);
+p2.catch(catchFn);
+
+p1.then(function() {
+  // P.prototype.then() should return a new P
+  score += p1.then() instanceof P && p1.then() !== p1;
+  check();
+});
+
+function check() {
+  if (score === 5) asyncTestPassed();
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Promise_is_subclassable_correct_prototype_chain.js b/Source/JavaScriptCore/tests/es6/Promise_is_subclassable_correct_prototype_chain.js
new file mode 100644
index 0000000..0138a03
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Promise_is_subclassable_correct_prototype_chain.js
@@ -0,0 +1,11 @@
+function test() {
+
+class C extends Promise {}
+var c = new C(function(resolve, reject) { resolve("foo"); });
+return c instanceof C && c instanceof Promise && Object.getPrototypeOf(C) === Promise;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_Array.isArray_support.js b/Source/JavaScriptCore/tests/es6/Proxy_Array.isArray_support.js
new file mode 100644
index 0000000..bb02f37
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_Array.isArray_support.js
@@ -0,0 +1,9 @@
+function test() {
+
+return Array.isArray(new Proxy([], {}));
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_JSON.stringify_support.js b/Source/JavaScriptCore/tests/es6/Proxy_JSON.stringify_support.js
new file mode 100644
index 0000000..c908ee1
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_JSON.stringify_support.js
@@ -0,0 +1,9 @@
+function test() {
+
+return JSON.stringify(new Proxy(['foo'], {})) === '["foo"]';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_Proxy.revocable.js b/Source/JavaScriptCore/tests/es6/Proxy_Proxy.revocable.js
new file mode 100644
index 0000000..9cca73e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_Proxy.revocable.js
@@ -0,0 +1,17 @@
+function test() {
+
+var obj = Proxy.revocable({}, { get: function() { return 5; } });
+var passed = (obj.proxy.foo === 5);
+obj.revoke();
+try {
+  obj.proxy.foo;
+} catch(e) {
+  passed &= e instanceof TypeError;
+}
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_apply_handler.js b/Source/JavaScriptCore/tests/es6/Proxy_apply_handler.js
new file mode 100644
index 0000000..e7e78c4
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_apply_handler.js
@@ -0,0 +1,19 @@
+function test() {
+
+var proxied = function(){};
+var passed = false;
+var host = {
+  method: new Proxy(proxied, {
+    apply: function (t, thisArg, args) {
+      passed = t === proxied && thisArg === host && args + "" === "foo,bar";
+    }
+  })
+};
+host.method("foo", "bar");
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_construct_handler.js b/Source/JavaScriptCore/tests/es6/Proxy_construct_handler.js
new file mode 100644
index 0000000..05980c7
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_construct_handler.js
@@ -0,0 +1,17 @@
+function test() {
+
+var proxied = function(){};
+var passed = false;
+new new Proxy(proxied, {
+  construct: function (t, args) {
+    passed = t === proxied && args + "" === "foo,bar";
+    return {};
+  }
+})("foo","bar");
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_constructor_requires_new.js b/Source/JavaScriptCore/tests/es6/Proxy_constructor_requires_new.js
new file mode 100644
index 0000000..d4aa3ef
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_constructor_requires_new.js
@@ -0,0 +1,15 @@
+function test() {
+
+new Proxy({}, {});
+try {
+  Proxy({}, {});
+  return false;
+} catch(e) {
+  return true;
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_defineProperty_handler.js b/Source/JavaScriptCore/tests/es6/Proxy_defineProperty_handler.js
new file mode 100644
index 0000000..568fcfa
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_defineProperty_handler.js
@@ -0,0 +1,21 @@
+function test() {
+
+var proxied = {};
+var passed = false;
+Object.defineProperty(
+  new Proxy(proxied, {
+    defineProperty: function (t, k, d) {
+      passed = t === proxied && k === "foo" && d.value === 5;
+      return true;
+    }
+  }),
+  "foo",
+  { value: 5, configurable: true }
+);
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_deleteProperty_handler.js b/Source/JavaScriptCore/tests/es6/Proxy_deleteProperty_handler.js
new file mode 100644
index 0000000..a2c4728
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_deleteProperty_handler.js
@@ -0,0 +1,16 @@
+function test() {
+
+var proxied = {};
+  var passed = false;
+  delete new Proxy(proxied, {
+    deleteProperty: function (t, k) {
+      passed = t === proxied && k === "foo";
+    }
+  }).foo;
+  return passed;
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_enumerate_handler.js b/Source/JavaScriptCore/tests/es6/Proxy_enumerate_handler.js
new file mode 100644
index 0000000..10aa62e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_enumerate_handler.js
@@ -0,0 +1,21 @@
+function test() {
+
+var proxied = {};
+var passed = false;
+for (var i in
+  new Proxy(proxied, {
+    enumerate: function (t) {
+      passed = t === proxied;
+      return {
+        next: function(){ return { done: true, value: null };}
+      };
+    }
+  })
+) { }
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_getOwnPropertyDescriptor_handler.js b/Source/JavaScriptCore/tests/es6/Proxy_getOwnPropertyDescriptor_handler.js
new file mode 100644
index 0000000..17123c2
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_getOwnPropertyDescriptor_handler.js
@@ -0,0 +1,22 @@
+function test() {
+
+var proxied = {};
+var fakeDesc = { value: "foo", configurable: true };
+var returnedDesc = Object.getOwnPropertyDescriptor(
+  new Proxy(proxied, {
+    getOwnPropertyDescriptor: function (t, k) {
+      return t === proxied && k === "foo" && fakeDesc;
+    }
+  }),
+  "foo"
+);
+return (returnedDesc.value     === fakeDesc.value
+  && returnedDesc.configurable === fakeDesc.configurable
+  && returnedDesc.writable     === false
+  && returnedDesc.enumerable   === false);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_getPrototypeOf_handler.js b/Source/JavaScriptCore/tests/es6/Proxy_getPrototypeOf_handler.js
new file mode 100644
index 0000000..b9aa93f
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_getPrototypeOf_handler.js
@@ -0,0 +1,16 @@
+function test() {
+
+var proxied = {};
+var fakeProto = {};
+var proxy = new Proxy(proxied, {
+  getPrototypeOf: function (t) {
+    return t === proxied && fakeProto;
+  }
+});
+return Object.getPrototypeOf(proxy) === fakeProto;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_get_handler.js b/Source/JavaScriptCore/tests/es6/Proxy_get_handler.js
new file mode 100644
index 0000000..b208ed4
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_get_handler.js
@@ -0,0 +1,15 @@
+function test() {
+
+var proxied = { };
+var proxy = new Proxy(proxied, {
+  get: function (t, k, r) {
+    return t === proxied && k === "foo" && r === proxy && 5;
+  }
+});
+return proxy.foo === 5;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_get_handler_instances_of_proxies.js b/Source/JavaScriptCore/tests/es6/Proxy_get_handler_instances_of_proxies.js
new file mode 100644
index 0000000..14f4fe9
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_get_handler_instances_of_proxies.js
@@ -0,0 +1,15 @@
+function test() {
+
+var proxied = { };
+var proxy = Object.create(new Proxy(proxied, {
+  get: function (t, k, r) {
+    return t === proxied && k === "foo" && r === proxy && 5;
+  }
+}));
+return proxy.foo === 5;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_has_handler.js b/Source/JavaScriptCore/tests/es6/Proxy_has_handler.js
new file mode 100644
index 0000000..000b39d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_has_handler.js
@@ -0,0 +1,16 @@
+function test() {
+
+var proxied = {};
+var passed = false;
+"foo" in new Proxy(proxied, {
+  has: function (t, k) {
+    passed = t === proxied && k === "foo";
+  }
+});
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_has_handler_instances_of_proxies.js b/Source/JavaScriptCore/tests/es6/Proxy_has_handler_instances_of_proxies.js
new file mode 100644
index 0000000..94c4180
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_has_handler_instances_of_proxies.js
@@ -0,0 +1,16 @@
+function test() {
+
+var proxied = {};
+var passed = false;
+"foo" in Object.create(new Proxy(proxied, {
+  has: function (t, k) {
+    passed = t === proxied && k === "foo";
+  }
+}));
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_defineProperty_calls_SetIntegrityLevel.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_defineProperty_calls_SetIntegrityLevel.js
new file mode 100644
index 0000000..84877a6
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_defineProperty_calls_SetIntegrityLevel.js
@@ -0,0 +1,13 @@
+function test() {
+
+// SetIntegrityLevel -> DefinePropertyOrThrow -> [[DefineOwnProperty]]
+var def = [];
+var p = new Proxy({foo:1, bar:2}, { defineProperty: function(o, v, desc) { def.push(v); Object.defineProperty(o, v, desc); return true; }});
+Object.freeze(p);
+return def + '' === "foo,bar";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/Proxy_internal_defineProperty_calls_\133\133Set\135\135.js" "b/Source/JavaScriptCore/tests/es6/Proxy_internal_defineProperty_calls_\133\133Set\135\135.js"
new file mode 100644
index 0000000..f229068
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/Proxy_internal_defineProperty_calls_\133\133Set\135\135.js"
@@ -0,0 +1,13 @@
+function test() {
+
+// [[Set]] -> [[DefineOwnProperty]]
+var def = [];
+var p = new Proxy({foo:1, bar:2}, { defineProperty: function(o, v, desc) { def.push(v); Object.defineProperty(o, v, desc); return true; }});
+p.foo = 2; p.bar = 4;
+return def + '' === "foo,bar";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.copyWithin.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.copyWithin.js
new file mode 100644
index 0000000..222297a
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.copyWithin.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Array.prototype.copyWithin -> DeletePropertyOrThrow -> [[Delete]]
+var del = [];
+var p = new Proxy([0,0,0,,,,], { deleteProperty: function(o, v) { del.push(v); return delete o[v]; }});
+p.copyWithin(0,3);
+return del + '' === "0,1,2";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.pop.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.pop.js
new file mode 100644
index 0000000..1013783
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.pop.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Array.prototype.pop -> DeletePropertyOrThrow -> [[Delete]]
+var del = [];
+var p = new Proxy([0,0,0], { deleteProperty: function(o, v) { del.push(v); return delete o[v]; }});
+p.pop();
+return del + '' === "2";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.reverse.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.reverse.js
new file mode 100644
index 0000000..946de31
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.reverse.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Array.prototype.reverse -> DeletePropertyOrThrow -> [[Delete]]
+var del = [];
+var p = new Proxy([0,,2,,4,,], { deleteProperty: function(o, v) { del.push(v); return delete o[v]; }});
+p.reverse();
+return del + '' === "0,4,2";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.shift.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.shift.js
new file mode 100644
index 0000000..bdb5f0e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.shift.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Array.prototype.shift -> DeletePropertyOrThrow -> [[Delete]]
+var del = [];
+var p = new Proxy([0,,0,,0,0], { deleteProperty: function(o, v) { del.push(v); return delete o[v]; }});
+p.shift();
+return del + '' === "0,2,5";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.splice.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.splice.js
new file mode 100644
index 0000000..3b158ee
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.splice.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Array.prototype.splice -> DeletePropertyOrThrow -> [[Delete]]
+var del = [];
+var p = new Proxy([0,0,0,0,,0], { deleteProperty: function(o, v) { del.push(v); return delete o[v]; }});
+p.splice(2,2,0);
+return del + '' === "3,5";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.unshift.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.unshift.js
new file mode 100644
index 0000000..76ef21a
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_deleteProperty_calls_Array.prototype.unshift.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Array.prototype.unshift -> DeletePropertyOrThrow -> [[Delete]]
+var del = [];
+var p = new Proxy([0,0,,0,,0], { deleteProperty: function(o, v) { del.push(v); return delete o[v]; }});
+p.unshift(0);
+return del + '' === "5,3";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_getOwnPropertyDescriptor_calls_Function.prototype.bind.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_getOwnPropertyDescriptor_calls_Function.prototype.bind.js
new file mode 100644
index 0000000..6ce6c5a1
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_getOwnPropertyDescriptor_calls_Function.prototype.bind.js
@@ -0,0 +1,14 @@
+function test() {
+
+// Function.prototype.bind -> HasOwnProperty -> [[GetOwnProperty]]
+var gopd = [];
+var p = new Proxy(Function(),
+  { getOwnPropertyDescriptor: function(o, v) { gopd.push(v); return Object.getOwnPropertyDescriptor(o, v); }});
+p.bind();
+return gopd + '' === "length";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_getOwnPropertyDescriptor_calls_Object.assign.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_getOwnPropertyDescriptor_calls_Object.assign.js
new file mode 100644
index 0000000..374e73d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_getOwnPropertyDescriptor_calls_Object.assign.js
@@ -0,0 +1,14 @@
+function test() {
+
+// Object.assign -> [[GetOwnProperty]]
+var gopd = [];
+var p = new Proxy({foo:1, bar:2},
+  { getOwnPropertyDescriptor: function(o, v) { gopd.push(v); return Object.getOwnPropertyDescriptor(o, v); }});
+Object.assign({}, p);
+return gopd + '' === "foo,bar";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_getOwnPropertyDescriptor_calls_Object.prototype.hasOwnProperty.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_getOwnPropertyDescriptor_calls_Object.prototype.hasOwnProperty.js
new file mode 100644
index 0000000..391123c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_getOwnPropertyDescriptor_calls_Object.prototype.hasOwnProperty.js
@@ -0,0 +1,14 @@
+function test() {
+
+// Object.prototype.hasOwnProperty -> HasOwnProperty -> [[GetOwnProperty]]
+var gopd = [];
+var p = new Proxy({foo:1, bar:2},
+  { getOwnPropertyDescriptor: function(o, v) { gopd.push(v); return Object.getOwnPropertyDescriptor(o, v); }});
+p.hasOwnProperty('garply');
+return gopd + '' === "garply";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/Proxy_internal_getOwnPropertyDescriptor_calls_\133\133Set\135\135.js" "b/Source/JavaScriptCore/tests/es6/Proxy_internal_getOwnPropertyDescriptor_calls_\133\133Set\135\135.js"
new file mode 100644
index 0000000..d74f3e9
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/Proxy_internal_getOwnPropertyDescriptor_calls_\133\133Set\135\135.js"
@@ -0,0 +1,14 @@
+function test() {
+
+// [[Set]] -> [[GetOwnProperty]]
+var gopd = [];
+var p = new Proxy({},
+  { getOwnPropertyDescriptor: function(o, v) { gopd.push(v); return Object.getOwnPropertyDescriptor(o, v); }});
+p.foo = 1; p.bar = 1;
+return gopd + '' === "foo,bar";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.from.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.from.js
new file mode 100644
index 0000000..1450f5c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.from.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Array.from -> Get -> [[Get]]
+var get = [];
+var p = new Proxy({length: 2, 0: '', 1: ''}, { get: function(o, k) { get.push(k); return o[k]; }});
+Array.from(p);
+return get[0] === Symbol.iterator && get.slice(1) + '' === "length,0,1";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.prototype.concat.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.prototype.concat.js
new file mode 100644
index 0000000..0882427
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.prototype.concat.js
@@ -0,0 +1,20 @@
+function test() {
+
+// Array.prototype.concat -> Get -> [[Get]]
+var get = [];
+var arr = [1];
+arr.constructor = undefined;
+var p = new Proxy(arr, { get: function(o, k) { get.push(k); return o[k]; }});
+Array.prototype.concat.call(p,p);
+return get[0] === "constructor"
+  && get[1] === Symbol.isConcatSpreadable
+  && get[2] === "length"
+  && get[3] === "0"
+  && get[4] === get[1] && get[5] === get[2] && get[6] === get[3]
+  && get.length === 7;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.prototype.pop.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.prototype.pop.js
new file mode 100644
index 0000000..5c9a802
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.prototype.pop.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Array.prototype.pop -> Get -> [[Get]]
+var get = [];
+var p = new Proxy([0,1,2,3], { get: function(o, k) { get.push(k); return o[k]; }});
+Array.prototype.pop.call(p);
+return get + '' === "length,3";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.prototype.reverse.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.prototype.reverse.js
new file mode 100644
index 0000000..2a08f23
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.prototype.reverse.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Array.prototype.reverse -> Get -> [[Get]]
+var get = [];
+var p = new Proxy([0,,2,,4,,], { get: function(o, k) { get.push(k); return o[k]; }});
+Array.prototype.reverse.call(p);
+return get + '' === "length,0,4,2";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.prototype.shift.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.prototype.shift.js
new file mode 100644
index 0000000..6ce585d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.prototype.shift.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Array.prototype.shift -> Get -> [[Get]]
+var get = [];
+var p = new Proxy([0,1,2,3], { get: function(o, k) { get.push(k); return o[k]; }});
+Array.prototype.shift.call(p);
+return get + '' === "length,0,1,2,3";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.prototype.splice.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.prototype.splice.js
new file mode 100644
index 0000000..069bceb
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.prototype.splice.js
@@ -0,0 +1,14 @@
+function test() {
+
+// Array.prototype.splice -> Get -> [[Get]]
+var get = [];
+var p = new Proxy([0,1,2,3], { get: function(o, k) { get.push(k); return o[k]; }});
+Array.prototype.splice.call(p,1,1);
+Array.prototype.splice.call(p,1,0,1);
+return get + '' === "length,constructor,1,2,3,length,constructor,2,1";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.prototype.toString.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.prototype.toString.js
new file mode 100644
index 0000000..cc09726
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.prototype.toString.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Array.prototype.toString -> Get -> [[Get]]
+var get = [];
+var p = new Proxy({ join:Function() }, { get: function(o, k) { get.push(k); return o[k]; }});
+Array.prototype.toString.call(p);
+return get + '' === "join";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.prototype_iteration_methods.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.prototype_iteration_methods.js
new file mode 100644
index 0000000..8038469
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Array.prototype_iteration_methods.js
@@ -0,0 +1,26 @@
+function test() {
+
+// Array.prototype methods -> Get -> [[Get]]
+var methods = ['copyWithin', 'every', 'fill', 'filter', 'find', 'findIndex', 'forEach',
+  'indexOf', 'join', 'lastIndexOf', 'map', 'reduce', 'reduceRight', 'some'];
+var get;
+var p = new Proxy({length: 2, 0: '', 1: ''}, { get: function(o, k) { get.push(k); return o[k]; }});
+for(var i = 0; i < methods.length; i+=1) {
+  get = [];
+  Array.prototype[methods[i]].call(p, Function());
+  if (get + '' !== (
+    methods[i] === 'fill' ? "length" :
+    methods[i] === 'every' ? "length,0" :
+    methods[i] === 'lastIndexOf' || methods[i] === 'reduceRight' ? "length,1,0" :
+    "length,0,1"
+  )) {
+    return false;
+  }
+}
+return true;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_ClassDefinitionEvaluation.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_ClassDefinitionEvaluation.js
new file mode 100644
index 0000000..06baa4c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_ClassDefinitionEvaluation.js
@@ -0,0 +1,13 @@
+function test() {
+
+// ClassDefinitionEvaluation -> Get -> [[Get]]
+var get = [];
+var p = new Proxy(Function(), { get: function(o, k) { get.push(k); return o[k]; }});
+class C extends p {}
+return get + '' === "prototype";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_CreateDynamicFunction.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_CreateDynamicFunction.js
new file mode 100644
index 0000000..d75b4b5
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_CreateDynamicFunction.js
@@ -0,0 +1,13 @@
+function test() {
+
+// CreateDynamicFunction -> GetPrototypeFromConstructor -> Get -> [[Get]]
+var get = [];
+var p = new Proxy(Function, { get: function(o, k) { get.push(k); return o[k]; }});
+new p;
+return get + '' === "prototype";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_CreateListFromArrayLike.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_CreateListFromArrayLike.js
new file mode 100644
index 0000000..6c27b78
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_CreateListFromArrayLike.js
@@ -0,0 +1,13 @@
+function test() {
+
+// CreateListFromArrayLike -> Get -> [[Get]]
+var get = [];
+var p = new Proxy({length:2, 0:0, 1:0}, { get: function(o, k) { get.push(k); return o[k]; }});
+Function.prototype.apply({}, p);
+return get + '' === "length,0,1";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Date.prototype.toJSON.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Date.prototype.toJSON.js
new file mode 100644
index 0000000..932ecf7
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Date.prototype.toJSON.js
@@ -0,0 +1,14 @@
+function test() {
+
+// Date.prototype.toJSON -> ToPrimitive -> Get -> [[Get]]
+// Date.prototype.toJSON -> Invoke -> GetMethod -> GetV -> [[Get]]
+var get = [];
+var p = new Proxy({toString:Function(),toISOString:Function()}, { get: function(o, k) { get.push(k); return o[k]; }});
+Date.prototype.toJSON.call(p);
+return get[0] === Symbol.toPrimitive && get.slice(1) + '' === "valueOf,toString,toISOString";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Error.prototype.toString.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Error.prototype.toString.js
new file mode 100644
index 0000000..e1df70d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Error.prototype.toString.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Error.prototype.toString -> Get -> [[Get]]
+var get = [];
+var p = new Proxy({}, { get: function(o, k) { get.push(k); return o[k]; }});
+Error.prototype.toString.call(p);
+return get + '' === "name,message";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Function.prototype.bind.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Function.prototype.bind.js
new file mode 100644
index 0000000..0a283cb
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Function.prototype.bind.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Function.prototype.bind -> Get -> [[Get]]
+var get = [];
+var p = new Proxy(Function(), { get: function(o, k) { get.push(k); return o[k]; }});
+Function.prototype.bind.call(p);
+return get + '' === "length,name";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_HasBinding.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_HasBinding.js
new file mode 100644
index 0000000..8a3de1a0
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_HasBinding.js
@@ -0,0 +1,16 @@
+function test() {
+
+// HasBinding -> Get -> [[Get]]
+var get = [];
+var p = new Proxy({foo:1}, { get: function(o, k) { get.push(k); return o[k]; }});
+p[Symbol.unscopables] = p;
+with(p) {
+  typeof foo;
+}
+return get[0] === Symbol.unscopables && get.slice(1) + '' === "foo";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_IteratorComplete_IteratorValue.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_IteratorComplete_IteratorValue.js
new file mode 100644
index 0000000..92172d0
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_IteratorComplete_IteratorValue.js
@@ -0,0 +1,24 @@
+function test() {
+
+// IteratorComplete -> Get -> [[Get]]
+// IteratorValue -> Get -> [[Get]]
+var get = [];
+var iterable = {};
+iterable[Symbol.iterator] = function() {
+  return {
+    next: function() {
+      return new Proxy({ value: 2, done: false }, { get: function(o, k) { get.push(k); return o[k]; }});
+    }
+  };
+}
+var i = 0;
+for(var e of iterable) {
+  if (++i >= 2) break;
+}
+return get + '' === "done,value,done,value";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_JSON.stringify.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_JSON.stringify.js
new file mode 100644
index 0000000..21df66c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_JSON.stringify.js
@@ -0,0 +1,13 @@
+function test() {
+
+// JSON.stringify -> Get -> [[Get]]
+var get = [];
+var p = new Proxy({}, { get: function(o, k) { get.push(k); return o[k]; }});
+JSON.stringify(p);
+return get + '' === "toJSON";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Object.assign.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Object.assign.js
new file mode 100644
index 0000000..6382df5
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Object.assign.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Object.assign -> Get -> [[Get]]
+var get = [];
+var p = new Proxy({foo:1, bar:2}, { get: function(o, k) { get.push(k); return o[k]; }});
+Object.assign({}, p);
+return get + '' === "foo,bar";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Object.defineProperties.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Object.defineProperties.js
new file mode 100644
index 0000000..0846a63
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Object.defineProperties.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Object.defineProperties -> Get -> [[Get]]
+var get = [];
+var p = new Proxy({foo:{}, bar:{}}, { get: function(o, k) { get.push(k); return o[k]; }});
+Object.defineProperties({}, p);
+return get + '' === "foo,bar";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Promise_resolve_functions.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Promise_resolve_functions.js
new file mode 100644
index 0000000..09cd400
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_Promise_resolve_functions.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Promise resolve functions -> Get -> [[Get]]
+var get = [];
+var p = new Proxy({}, { get: function(o, k) { get.push(k); return o[k]; }});
+new Promise(function(resolve){ resolve(p); });
+return get + '' === "then";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_RegExp.prototype.flags.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_RegExp.prototype.flags.js
new file mode 100644
index 0000000..12cc214
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_RegExp.prototype.flags.js
@@ -0,0 +1,13 @@
+function test() {
+
+// RegExp.prototype.flags -> Get -> [[Get]]
+var get = [];
+var p = new Proxy({}, { get: function(o, k) { get.push(k); return o[k]; }});
+Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags').get.call(p);
+return get + '' === "global,ignoreCase,multiline,unicode,sticky";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_RegExp.prototype.test.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_RegExp.prototype.test.js
new file mode 100644
index 0000000..71dd3d5
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_RegExp.prototype.test.js
@@ -0,0 +1,13 @@
+function test() {
+
+// RegExp.prototype.test -> RegExpExec -> Get -> [[Get]]
+var get = [];
+var p = new Proxy({ exec: function() { return null; } }, { get: function(o, k) { get.push(k); return o[k]; }});
+RegExp.prototype.test.call(p);
+return get + '' === "exec";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_RegExp.prototype\133Symbol.match\135.js" "b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_RegExp.prototype\133Symbol.match\135.js"
new file mode 100644
index 0000000..c2ae3cb
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_RegExp.prototype\133Symbol.match\135.js"
@@ -0,0 +1,15 @@
+function test() {
+
+// RegExp.prototype[Symbol.match] -> Get -> [[Get]]
+var get = [];
+var p = new Proxy({ exec: function() { return null; } }, { get: function(o, k) { get.push(k); return o[k]; }});
+RegExp.prototype[Symbol.match].call(p);
+p.global = true;
+RegExp.prototype[Symbol.match].call(p);
+return get + '' === "global,exec,global,unicode,exec";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_RegExp.prototype\133Symbol.replace\135.js" "b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_RegExp.prototype\133Symbol.replace\135.js"
new file mode 100644
index 0000000..2f40c1d
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_RegExp.prototype\133Symbol.replace\135.js"
@@ -0,0 +1,15 @@
+function test() {
+
+// RegExp.prototype[Symbol.replace] -> Get -> [[Get]]
+var get = [];
+var p = new Proxy({ exec: function() { return null; } }, { get: function(o, k) { get.push(k); return o[k]; }});
+RegExp.prototype[Symbol.replace].call(p);
+p.global = true;
+RegExp.prototype[Symbol.replace].call(p);
+return get + '' === "global,exec,global,unicode,exec";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_RegExp.prototype\133Symbol.search\135.js" "b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_RegExp.prototype\133Symbol.search\135.js"
new file mode 100644
index 0000000..c1a2e59
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_RegExp.prototype\133Symbol.search\135.js"
@@ -0,0 +1,13 @@
+function test() {
+
+// RegExp.prototype[Symbol.search] -> Get -> [[Get]]
+var get = [];
+var p = new Proxy({ exec: function() { return null; } }, { get: function(o, k) { get.push(k); return o[k]; }});
+RegExp.prototype[Symbol.search].call(p);
+return get + '' === "lastIndex,exec";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_RegExp.prototype\133Symbol.split\135.js" "b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_RegExp.prototype\133Symbol.split\135.js"
new file mode 100644
index 0000000..2915094
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_RegExp.prototype\133Symbol.split\135.js"
@@ -0,0 +1,15 @@
+function test() {
+
+// RegExp.prototype[Symbol.split] -> Get -> [[Get]]
+var get = [];
+var constructor = Function();
+constructor[Symbol.species] = Object;
+var p = new Proxy({ constructor: constructor, flags: '', exec: function() { return null; } }, { get: function(o, k) { get.push(k); return o[k]; }});
+RegExp.prototype[Symbol.split].call(p, "");
+return get + '' === "constructor,flags,exec";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_RegExp_constructor.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_RegExp_constructor.js
new file mode 100644
index 0000000..366f34d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_RegExp_constructor.js
@@ -0,0 +1,15 @@
+function test() {
+
+// RegExp -> Get -> [[Get]]
+var get = [];
+var re = { constructor: null };
+re[Symbol.match] = true;
+var p = new Proxy(re, { get: function(o, k) { get.push(k); return o[k]; }});
+RegExp(p);
+return get[0] === Symbol.match && get.slice(1) + '' === "constructor,source,flags";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_String.prototype.match.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_String.prototype.match.js
new file mode 100644
index 0000000..b09fff8
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_String.prototype.match.js
@@ -0,0 +1,15 @@
+function test() {
+
+// String.prototype.match -> Get -> [[Get]]
+var get = [];
+var proxied = {};
+proxied[Symbol.toPrimitive] = Function();
+var p = new Proxy(proxied, { get: function(o, k) { get.push(k); return o[k]; }});
+"".match(p);
+return get[0] === Symbol.match && get[1] === Symbol.toPrimitive && get.length === 2;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_String.prototype.replace.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_String.prototype.replace.js
new file mode 100644
index 0000000..703e243
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_String.prototype.replace.js
@@ -0,0 +1,15 @@
+function test() {
+
+// String.prototype.replace functions -> Get -> [[Get]]
+var get = [];
+var proxied = {};
+proxied[Symbol.toPrimitive] = Function();
+var p = new Proxy(proxied, { get: function(o, k) { get.push(k); return o[k]; }});
+"".replace(p);
+return get[0] === Symbol.replace && get[1] === Symbol.toPrimitive && get.length === 2;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_String.prototype.search.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_String.prototype.search.js
new file mode 100644
index 0000000..32d4bc1
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_String.prototype.search.js
@@ -0,0 +1,15 @@
+function test() {
+
+// String.prototype.search functions -> Get -> [[Get]]
+var get = [];
+var proxied = {};
+proxied[Symbol.toPrimitive] = Function();
+var p = new Proxy(proxied, { get: function(o, k) { get.push(k); return o[k]; }});
+"".search(p);
+return get[0] === Symbol.search && get[1] === Symbol.toPrimitive && get.length === 2;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_String.prototype.split.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_String.prototype.split.js
new file mode 100644
index 0000000..ca65dd7
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_String.prototype.split.js
@@ -0,0 +1,15 @@
+function test() {
+
+// String.prototype.split functions -> Get -> [[Get]]
+var get = [];
+var proxied = {};
+proxied[Symbol.toPrimitive] = Function();
+var p = new Proxy(proxied, { get: function(o, k) { get.push(k); return o[k]; }});
+"".split(p);
+return get[0] === Symbol.split && get[1] === Symbol.toPrimitive && get.length === 2;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_String.raw.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_String.raw.js
new file mode 100644
index 0000000..2bfc379
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_String.raw.js
@@ -0,0 +1,14 @@
+function test() {
+
+// String.raw -> Get -> [[Get]]
+var get = [];
+var raw = new Proxy({length: 2, 0: '', 1: ''}, { get: function(o, k) { get.push(k); return o[k]; }});
+var p = new Proxy({raw: raw}, { get: function(o, k) { get.push(k); return o[k]; }});
+String.raw(p);
+return get + '' === "raw,length,0,1";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_ToPrimitive.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_ToPrimitive.js
new file mode 100644
index 0000000..e5bee9d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_ToPrimitive.js
@@ -0,0 +1,13 @@
+function test() {
+
+// ToPrimitive -> Get -> [[Get]]
+var get = [];
+var p = new Proxy({toString:Function()}, { get: function(o, k) { get.push(k); return o[k]; }});
+p + 3;
+return get[0] === Symbol.toPrimitive && get.slice(1) + '' === "valueOf,toString";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_ToPropertyDescriptor.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_ToPropertyDescriptor.js
new file mode 100644
index 0000000..e859dc2
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_ToPropertyDescriptor.js
@@ -0,0 +1,21 @@
+function test() {
+
+// ToPropertyDescriptor -> Get -> [[Get]]
+var get = [];
+var p = new Proxy({
+    enumerable: true, configurable: true, value: true,
+    writable: true, get: Function(), set: Function()
+  }, { get: function(o, k) { get.push(k); return o[k]; }});
+try {
+  // This will throw, since it will have true for both "get" and "value",
+  // but not before performing a Get on every property.
+  Object.defineProperty({}, "foo", p);
+} catch(e) {
+  return get + '' === "enumerable,configurable,value,writable,get,set";
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_instanceof_operator.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_instanceof_operator.js
new file mode 100644
index 0000000..f3bf75a
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_get_calls_instanceof_operator.js
@@ -0,0 +1,14 @@
+function test() {
+
+// InstanceofOperator -> GetMethod -> GetV -> [[Get]]
+// InstanceofOperator -> OrdinaryHasInstance -> Get -> [[Get]]
+var get = [];
+var p = new Proxy(Function(), { get: function(o, k) { get.push(k); return o[k]; }});
+({}) instanceof p;
+return get[0] === Symbol.hasInstance && get.slice(1) + '' === "prototype";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_ownKeys_calls_SerializeJSONObject.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_ownKeys_calls_SerializeJSONObject.js
new file mode 100644
index 0000000..33feb4c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_ownKeys_calls_SerializeJSONObject.js
@@ -0,0 +1,13 @@
+function test() {
+
+// SerializeJSONObject -> EnumerableOwnNames -> [[OwnPropertyKeys]]
+var ownKeysCalled = 0;
+var p = new Proxy({}, { ownKeys: function(o) { ownKeysCalled++; return Object.keys(o); }});
+JSON.stringify({a:p,b:p});
+return ownKeysCalled === 2;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_ownKeys_calls_SetIntegrityLevel.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_ownKeys_calls_SetIntegrityLevel.js
new file mode 100644
index 0000000..ca2ca00
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_ownKeys_calls_SetIntegrityLevel.js
@@ -0,0 +1,13 @@
+function test() {
+
+// SetIntegrityLevel -> [[OwnPropertyKeys]]
+var ownKeysCalled = 0;
+var p = new Proxy({}, { ownKeys: function(o) { ownKeysCalled++; return Object.keys(o); }});
+Object.freeze(p);
+return ownKeysCalled === 1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_ownKeys_calls_TestIntegrityLevel.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_ownKeys_calls_TestIntegrityLevel.js
new file mode 100644
index 0000000..3184672
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_ownKeys_calls_TestIntegrityLevel.js
@@ -0,0 +1,13 @@
+function test() {
+
+// TestIntegrityLevel -> [[OwnPropertyKeys]]
+var ownKeysCalled = 0;
+var p = new Proxy(Object.preventExtensions({}), { ownKeys: function(o) { ownKeysCalled++; return Object.keys(o); }});
+Object.isFrozen(p);
+return ownKeysCalled === 1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.from.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.from.js
new file mode 100644
index 0000000..6084165
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.from.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Array.from -> Set -> [[Set]]
+var set = [];
+var p = new Proxy({}, { set: function(o, k, v) { set.push(k); o[k] = v; return true; }});
+Array.from.call(function(){ return p; }, {length:2, 0:1, 1:2});
+return set + '' === "length";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.of.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.of.js
new file mode 100644
index 0000000..e28b45d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.of.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Array.from -> Set -> [[Set]]
+var set = [];
+var p = new Proxy({}, { set: function(o, k, v) { set.push(k); o[k] = v; return true; }});
+Array.of.call(function(){ return p; }, 1, 2, 3);
+return set + '' === "length";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.copyWithin.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.copyWithin.js
new file mode 100644
index 0000000..3057229
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.copyWithin.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Array.prototype.copyWithin -> Set -> [[Set]]
+var set = [];
+var p = new Proxy([1,2,3,4,5,6], { set: function(o, k, v) { set.push(k); o[k] = v; return true; }});
+p.copyWithin(0, 3);
+return set + '' === "0,1,2";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.fill.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.fill.js
new file mode 100644
index 0000000..129fb1e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.fill.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Array.prototype.fill -> Set -> [[Set]]
+var set = [];
+var p = new Proxy([1,2,3,4,5,6], { set: function(o, k, v) { set.push(k); o[k] = v; return true; }});
+p.fill(0, 3);
+return set + '' === "3,4,5";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.pop.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.pop.js
new file mode 100644
index 0000000..08b7f40
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.pop.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Array.prototype.pop -> Set -> [[Set]]
+var set = [];
+var p = new Proxy([], { set: function(o, k, v) { set.push(k); o[k] = v; return true; }});
+p.pop();
+return set + '' === "length";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.push.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.push.js
new file mode 100644
index 0000000..a0b3a1d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.push.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Array.prototype.push -> Set -> [[Set]]
+var set = [];
+var p = new Proxy([], { set: function(o, k, v) { set.push(k); o[k] = v; return true; }});
+p.push(0,0,0);
+return set + '' === "0,1,2,length";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.reverse.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.reverse.js
new file mode 100644
index 0000000..c40381a
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.reverse.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Array.prototype.reverse -> Set -> [[Set]]
+var set = [];
+var p = new Proxy([0,0,0,,], { set: function(o, k, v) { set.push(k); o[k] = v; return true; }});
+p.reverse();
+return set + '' === "3,1,2";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.shift.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.shift.js
new file mode 100644
index 0000000..e53fd1d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.shift.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Array.prototype.shift -> Set -> [[Set]]
+var set = [];
+var p = new Proxy([0,0,,0], { set: function(o, k, v) { set.push(k); o[k] = v; return true; }});
+p.shift();
+return set + '' === "0,2,length";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.splice.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.splice.js
new file mode 100644
index 0000000..363515e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.splice.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Array.prototype.splice -> Set -> [[Set]]
+var set = [];
+var p = new Proxy([1,2,3], { set: function(o, k, v) { set.push(k); o[k] = v; return true; }});
+p.splice(1,0,0);
+return set + '' === "3,2,1,length";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.unshift.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.unshift.js
new file mode 100644
index 0000000..608bfc1
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Array.prototype.unshift.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Array.prototype.unshift -> Set -> [[Set]]
+var set = [];
+var p = new Proxy([0,0,,0], { set: function(o, k, v) { set.push(k); o[k] = v; return true; }});
+p.unshift(0,1);
+return set + '' === "5,3,2,0,1,length";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Object.assign.js b/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Object.assign.js
new file mode 100644
index 0000000..b2a75a1
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_internal_set_calls_Object.assign.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Object.assign -> Set -> [[Set]]
+var set = [];
+var p = new Proxy({}, { set: function(o, k, v) { set.push(k); o[k] = v; return true; }});
+Object.assign(p, { foo: 1, bar: 2 });
+return set + '' === "foo,bar";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_isExtensible_handler.js b/Source/JavaScriptCore/tests/es6/Proxy_isExtensible_handler.js
new file mode 100644
index 0000000..39940a9
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_isExtensible_handler.js
@@ -0,0 +1,18 @@
+function test() {
+
+var proxied = {};
+var passed = false;
+Object.isExtensible(
+  new Proxy(proxied, {
+    isExtensible: function (t) {
+      passed = t === proxied; return true;
+    }
+  })
+);
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_ownKeys_handler.js b/Source/JavaScriptCore/tests/es6/Proxy_ownKeys_handler.js
new file mode 100644
index 0000000..e1f516cf
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_ownKeys_handler.js
@@ -0,0 +1,18 @@
+function test() {
+
+var proxied = {};
+var passed = false;
+Object.keys(
+  new Proxy(proxied, {
+    ownKeys: function (t) {
+      passed = t === proxied; return [];
+    }
+  })
+);
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_preventExtensions_handler.js b/Source/JavaScriptCore/tests/es6/Proxy_preventExtensions_handler.js
new file mode 100644
index 0000000..3dc101b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_preventExtensions_handler.js
@@ -0,0 +1,19 @@
+function test() {
+
+var proxied = {};
+var passed = false;
+Object.preventExtensions(
+  new Proxy(proxied, {
+    preventExtensions: function (t) {
+      passed = t === proxied;
+      return Object.preventExtensions(proxied);
+    }
+  })
+);
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_setPrototypeOf_handler.js b/Source/JavaScriptCore/tests/es6/Proxy_setPrototypeOf_handler.js
new file mode 100644
index 0000000..30d60b3
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_setPrototypeOf_handler.js
@@ -0,0 +1,21 @@
+function test() {
+
+var proxied = {};
+var newProto = {};
+var passed = false;
+Object.setPrototypeOf(
+  new Proxy(proxied, {
+    setPrototypeOf: function (t, p) {
+      passed = t === proxied && p === newProto;
+      return true;
+    }
+  }),
+  newProto
+);
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_set_handler.js b/Source/JavaScriptCore/tests/es6/Proxy_set_handler.js
new file mode 100644
index 0000000..8f080f3
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_set_handler.js
@@ -0,0 +1,17 @@
+function test() {
+
+var proxied = { };
+var passed = false;
+var proxy = new Proxy(proxied, {
+  set: function (t, k, v, r) {
+    passed = t === proxied && k + v === "foobar" && r === proxy;
+  }
+});
+proxy.foo = "bar";
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Proxy_set_handler_instances_of_proxies.js b/Source/JavaScriptCore/tests/es6/Proxy_set_handler_instances_of_proxies.js
new file mode 100644
index 0000000..69cd8d9
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Proxy_set_handler_instances_of_proxies.js
@@ -0,0 +1,17 @@
+function test() {
+
+var proxied = { };
+var passed = false;
+var proxy = Object.create(new Proxy(proxied, {
+  set: function (t, k, v, r) {
+    passed = t === proxied && k + v === "foobar" && r === proxy;
+  }
+}));
+proxy.foo = "bar";
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Reflect_Reflect.apply.js b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.apply.js
new file mode 100644
index 0000000..4bba00f
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.apply.js
@@ -0,0 +1,9 @@
+function test() {
+
+return Reflect.apply(Array.prototype.push, [1,2], [3,4,5]) === 5;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Reflect_Reflect.construct.js b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.construct.js
new file mode 100644
index 0000000..aec34e6
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.construct.js
@@ -0,0 +1,11 @@
+function test() {
+
+return Reflect.construct(function(a, b, c) {
+  this.qux = a + b + c;
+}, ["foo", "bar", "baz"]).qux === "foobarbaz";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Reflect_Reflect.construct_creates_instance_from_newTarget_argument.js b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.construct_creates_instance_from_newTarget_argument.js
new file mode 100644
index 0000000..246cd0b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.construct_creates_instance_from_newTarget_argument.js
@@ -0,0 +1,10 @@
+function test() {
+
+function F(){}
+return Reflect.construct(function(){}, [], F) instanceof F;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Reflect_Reflect.construct_sets_new.target_meta_property.js b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.construct_sets_new.target_meta_property.js
new file mode 100644
index 0000000..e699003
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.construct_sets_new.target_meta_property.js
@@ -0,0 +1,13 @@
+function test() {
+
+return Reflect.construct(function(a, b, c) {
+  if (new.target === Object) {
+    this.qux = a + b + c;
+  }
+}, ["foo", "bar", "baz"], Object).qux === "foobarbaz";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Reflect_Reflect.defineProperty.js b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.defineProperty.js
new file mode 100644
index 0000000..c25e37f
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.defineProperty.js
@@ -0,0 +1,12 @@
+function test() {
+
+var obj = {};
+Reflect.defineProperty(obj, "foo", { value: 123 });
+return obj.foo === 123 &&
+  Reflect.defineProperty(Object.freeze({}), "foo", { value: 123 }) === false;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Reflect_Reflect.deleteProperty.js b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.deleteProperty.js
new file mode 100644
index 0000000..819bf38
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.deleteProperty.js
@@ -0,0 +1,11 @@
+function test() {
+
+var obj = { bar: 456 };
+Reflect.deleteProperty(obj, "bar");
+return !("bar" in obj);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Reflect_Reflect.enumerate.js b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.enumerate.js
new file mode 100644
index 0000000..5e76f9d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.enumerate.js
@@ -0,0 +1,21 @@
+function test() {
+
+var obj = { foo: 1, bar: 2 };
+var iterator = Reflect.enumerate(obj);
+var passed = 1;
+if (typeof Symbol === 'function' && 'iterator' in Symbol) {
+  passed &= Symbol.iterator in iterator;
+}
+var item = iterator.next();
+passed &= item.value === "foo" && item.done === false;
+item = iterator.next();
+passed &= item.value === "bar" && item.done === false;
+item = iterator.next();
+passed &= item.value === undefined && item.done === true;
+return passed === 1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Reflect_Reflect.get.js b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.get.js
new file mode 100644
index 0000000..ceba043
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.get.js
@@ -0,0 +1,9 @@
+function test() {
+
+return Reflect.get({ qux: 987 }, "qux") === 987;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Reflect_Reflect.getOwnPropertyDescriptor.js b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.getOwnPropertyDescriptor.js
new file mode 100644
index 0000000..4492f66
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.getOwnPropertyDescriptor.js
@@ -0,0 +1,12 @@
+function test() {
+
+var obj = { baz: 789 };
+var desc = Reflect.getOwnPropertyDescriptor(obj, "baz");
+return desc.value === 789 &&
+  desc.configurable && desc.writable && desc.enumerable;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Reflect_Reflect.getPrototypeOf.js b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.getPrototypeOf.js
new file mode 100644
index 0000000..f8c32b9
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.getPrototypeOf.js
@@ -0,0 +1,9 @@
+function test() {
+
+return Reflect.getPrototypeOf([]) === Array.prototype;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Reflect_Reflect.has.js b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.has.js
new file mode 100644
index 0000000..76aa150
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.has.js
@@ -0,0 +1,9 @@
+function test() {
+
+return Reflect.has({ qux: 987 }, "qux");
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Reflect_Reflect.isExtensible.js b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.isExtensible.js
new file mode 100644
index 0000000..5d62d30
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.isExtensible.js
@@ -0,0 +1,10 @@
+function test() {
+
+return Reflect.isExtensible({}) &&
+  !Reflect.isExtensible(Object.preventExtensions({}));
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Reflect_Reflect.ownKeys_string_keys.js b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.ownKeys_string_keys.js
new file mode 100644
index 0000000..c055ebb
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.ownKeys_string_keys.js
@@ -0,0 +1,13 @@
+function test() {
+
+var obj = Object.create({ C: true });
+obj.A = true;
+Object.defineProperty(obj, 'B', { value: true, enumerable: false });
+
+return Reflect.ownKeys(obj).sort() + '' === "A,B";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Reflect_Reflect.ownKeys_symbol_keys.js b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.ownKeys_symbol_keys.js
new file mode 100644
index 0000000..733d48b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.ownKeys_symbol_keys.js
@@ -0,0 +1,17 @@
+function test() {
+
+var s1 = Symbol(), s2 = Symbol(), s3 = Symbol();
+var proto = {};
+proto[s1] = true;
+var obj = Object.create(proto);
+obj[s2] = true;
+Object.defineProperty(obj, s3, { value: true, enumerable: false });
+
+var keys = Reflect.ownKeys(obj);
+return keys.indexOf(s2) >-1 && keys.indexOf(s3) >-1 && keys.length === 2;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Reflect_Reflect.preventExtensions.js b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.preventExtensions.js
new file mode 100644
index 0000000..ce24877
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.preventExtensions.js
@@ -0,0 +1,11 @@
+function test() {
+
+var obj = {};
+Reflect.preventExtensions(obj);
+return !Object.isExtensible(obj);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Reflect_Reflect.set.js b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.set.js
new file mode 100644
index 0000000..251b1bd
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.set.js
@@ -0,0 +1,11 @@
+function test() {
+
+var obj = {};
+Reflect.set(obj, "quux", 654);
+return obj.quux === 654;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Reflect_Reflect.setPrototypeOf.js b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.setPrototypeOf.js
new file mode 100644
index 0000000..1adbdcf
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Reflect_Reflect.setPrototypeOf.js
@@ -0,0 +1,11 @@
+function test() {
+
+var obj = {};
+Reflect.setPrototypeOf(obj, Array.prototype);
+return obj instanceof Array;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/RegExp.prototype.compile.js b/Source/JavaScriptCore/tests/es6/RegExp.prototype.compile.js
new file mode 100644
index 0000000..756f4c2
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/RegExp.prototype.compile.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof RegExp.prototype.compile === 'function';
+  
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/RegExp.prototype_properties_RegExp.prototype.flags.js b/Source/JavaScriptCore/tests/es6/RegExp.prototype_properties_RegExp.prototype.flags.js
new file mode 100644
index 0000000..dc227c85
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/RegExp.prototype_properties_RegExp.prototype.flags.js
@@ -0,0 +1,9 @@
+function test() {
+
+return /./igm.flags === "gim" && /./.flags === "";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/RegExp.prototype_properties_RegExp.prototype\133Symbol.match\135.js" "b/Source/JavaScriptCore/tests/es6/RegExp.prototype_properties_RegExp.prototype\133Symbol.match\135.js"
new file mode 100644
index 0000000..034ef55
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/RegExp.prototype_properties_RegExp.prototype\133Symbol.match\135.js"
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof RegExp.prototype[Symbol.match] === 'function';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/RegExp.prototype_properties_RegExp.prototype\133Symbol.replace\135.js" "b/Source/JavaScriptCore/tests/es6/RegExp.prototype_properties_RegExp.prototype\133Symbol.replace\135.js"
new file mode 100644
index 0000000..118e8a6
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/RegExp.prototype_properties_RegExp.prototype\133Symbol.replace\135.js"
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof RegExp.prototype[Symbol.replace] === 'function';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/RegExp.prototype_properties_RegExp.prototype\133Symbol.search\135.js" "b/Source/JavaScriptCore/tests/es6/RegExp.prototype_properties_RegExp.prototype\133Symbol.search\135.js"
new file mode 100644
index 0000000..b34ecbd
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/RegExp.prototype_properties_RegExp.prototype\133Symbol.search\135.js"
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof RegExp.prototype[Symbol.search] === 'function';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/RegExp.prototype_properties_RegExp.prototype\133Symbol.split\135.js" "b/Source/JavaScriptCore/tests/es6/RegExp.prototype_properties_RegExp.prototype\133Symbol.split\135.js"
new file mode 100644
index 0000000..a4e295e
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/RegExp.prototype_properties_RegExp.prototype\133Symbol.split\135.js"
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof RegExp.prototype[Symbol.split] === 'function';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/RegExp.prototype_properties_RegExp\133Symbol.species\135.js" "b/Source/JavaScriptCore/tests/es6/RegExp.prototype_properties_RegExp\133Symbol.species\135.js"
new file mode 100644
index 0000000..492fbf3
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/RegExp.prototype_properties_RegExp\133Symbol.species\135.js"
@@ -0,0 +1,10 @@
+function test() {
+
+var prop = Object.getOwnPropertyDescriptor(RegExp, Symbol.species);
+return 'get' in prop && RegExp[Symbol.species] === RegExp;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/RegExp_is_subclassable_RegExp.prototype.exec.js b/Source/JavaScriptCore/tests/es6/RegExp_is_subclassable_RegExp.prototype.exec.js
new file mode 100644
index 0000000..f996573
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/RegExp_is_subclassable_RegExp.prototype.exec.js
@@ -0,0 +1,11 @@
+function test() {
+
+class R extends RegExp {}
+var r = new R("baz","g");
+return r.exec("foobarbaz")[0] === "baz" && r.lastIndex === 9;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/RegExp_is_subclassable_RegExp.prototype.test.js b/Source/JavaScriptCore/tests/es6/RegExp_is_subclassable_RegExp.prototype.test.js
new file mode 100644
index 0000000..08a736a
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/RegExp_is_subclassable_RegExp.prototype.test.js
@@ -0,0 +1,11 @@
+function test() {
+
+class R extends RegExp {}
+var r = new R("baz");
+return r.test("foobarbaz");
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/RegExp_is_subclassable_basic_functionality.js b/Source/JavaScriptCore/tests/es6/RegExp_is_subclassable_basic_functionality.js
new file mode 100644
index 0000000..db4fd87
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/RegExp_is_subclassable_basic_functionality.js
@@ -0,0 +1,11 @@
+function test() {
+
+class R extends RegExp {}
+var r = new R("baz","g");
+return r.global && r.source === "baz";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/RegExp_is_subclassable_correct_prototype_chain.js b/Source/JavaScriptCore/tests/es6/RegExp_is_subclassable_correct_prototype_chain.js
new file mode 100644
index 0000000..b869414
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/RegExp_is_subclassable_correct_prototype_chain.js
@@ -0,0 +1,11 @@
+function test() {
+
+class R extends RegExp {}
+var r = new R("baz","g");
+return r instanceof R && r instanceof RegExp && Object.getPrototypeOf(R) === RegExp;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_hyphens_in_character_sets.js b/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_hyphens_in_character_sets.js
new file mode 100644
index 0000000..0150d81
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_hyphens_in_character_sets.js
@@ -0,0 +1,9 @@
+function test() {
+
+return /[\w-_]/.exec("-")[0] === "-";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_incomplete_patterns_and_quantifiers.js b/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_incomplete_patterns_and_quantifiers.js
new file mode 100644
index 0000000..cedc4f2
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_incomplete_patterns_and_quantifiers.js
@@ -0,0 +1,10 @@
+function test() {
+
+return /x{1/.exec("x{1")[0] === "x{1"
+  && /x]1/.exec("x]1")[0] === "x]1";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_invalid_Unicode_escapes.js b/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_invalid_Unicode_escapes.js
new file mode 100644
index 0000000..93027966
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_invalid_Unicode_escapes.js
@@ -0,0 +1,10 @@
+function test() {
+
+return /\u1/.exec("u1")[0] === "u1"
+  && /[\u1]/.exec("u")[0] === "u";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_invalid_backreferences_become_octal_escapes.js b/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_invalid_backreferences_become_octal_escapes.js
new file mode 100644
index 0000000..a7e85e8
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_invalid_backreferences_become_octal_escapes.js
@@ -0,0 +1,10 @@
+function test() {
+
+return /\41/.exec("!")[0] === "!"
+  && /[\41]/.exec("!")[0] === "!";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_invalid_character_escapes.js b/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_invalid_character_escapes.js
new file mode 100644
index 0000000..59df50a
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_invalid_character_escapes.js
@@ -0,0 +1,10 @@
+function test() {
+
+return /\z/.exec("\\z")[0] === "z"
+  && /[\z]/.exec("[\\z]")[0] === "z";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_invalid_control-character_escapes.js b/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_invalid_control-character_escapes.js
new file mode 100644
index 0000000..932ae72
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_invalid_control-character_escapes.js
@@ -0,0 +1,9 @@
+function test() {
+
+return /\c2/.exec("\\c2")[0] === "\\c2";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_invalid_hexadecimal_escapes.js b/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_invalid_hexadecimal_escapes.js
new file mode 100644
index 0000000..eb98c7d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_invalid_hexadecimal_escapes.js
@@ -0,0 +1,10 @@
+function test() {
+
+return /\x1/.exec("x1")[0] === "x1"
+  && /[\x1]/.exec("x")[0] === "x";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_octal_escape_sequences.js b/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_octal_escape_sequences.js
new file mode 100644
index 0000000..9a69a7e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/RegExp_syntax_extensions_octal_escape_sequences.js
@@ -0,0 +1,10 @@
+function test() {
+
+return /\041/.exec("!")[0] === "!"
+  && /[\041]/.exec("!")[0] === "!";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/RegExp_y_and_u_flags_u_flag.js b/Source/JavaScriptCore/tests/es6/RegExp_y_and_u_flags_u_flag.js
new file mode 100644
index 0000000..0893934
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/RegExp_y_and_u_flags_u_flag.js
@@ -0,0 +1,9 @@
+function test() {
+
+return "𠮷".match(/^.$/u)[0].length === 2;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/RegExp_y_and_u_flags_u_flag_Unicode_code_point_escapes.js b/Source/JavaScriptCore/tests/es6/RegExp_y_and_u_flags_u_flag_Unicode_code_point_escapes.js
new file mode 100644
index 0000000..1437e97
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/RegExp_y_and_u_flags_u_flag_Unicode_code_point_escapes.js
@@ -0,0 +1,9 @@
+function test() {
+
+return "𝌆".match(/\u{1d306}/u)[0].length === 2;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/RegExp_y_and_u_flags_y_flag.js b/Source/JavaScriptCore/tests/es6/RegExp_y_and_u_flags_y_flag.js
new file mode 100644
index 0000000..c184597
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/RegExp_y_and_u_flags_y_flag.js
@@ -0,0 +1,11 @@
+function test() {
+
+var re = new RegExp('\\w', 'y');
+re.exec('xy');
+return (re.exec('xy')[0] === 'y');
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/RegExp_y_and_u_flags_y_flag_lastIndex.js b/Source/JavaScriptCore/tests/es6/RegExp_y_and_u_flags_y_flag_lastIndex.js
new file mode 100644
index 0000000..02664fb
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/RegExp_y_and_u_flags_y_flag_lastIndex.js
@@ -0,0 +1,12 @@
+function test() {
+
+var re = new RegExp('yy', 'y');
+re.lastIndex = 3;
+var result = re.exec('xxxyyxx')[0];
+return result === 'yy' && re.lastIndex === 5;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Set_-0_key_converts_to_+0.js b/Source/JavaScriptCore/tests/es6/Set_-0_key_converts_to_+0.js
new file mode 100644
index 0000000..318c4a3
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Set_-0_key_converts_to_+0.js
@@ -0,0 +1,15 @@
+function test() {
+
+var set = new Set();
+set.add(-0);
+var k;
+set.forEach(function (value) {
+  k = 1 / value;
+});
+return k === Infinity && set.has(+0);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Set_Set.prototype.add_returns_this.js b/Source/JavaScriptCore/tests/es6/Set_Set.prototype.add_returns_this.js
new file mode 100644
index 0000000..aa74693
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Set_Set.prototype.add_returns_this.js
@@ -0,0 +1,10 @@
+function test() {
+
+var set = new Set();
+return set.add(0) === set;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Set_Set.prototype.clear.js b/Source/JavaScriptCore/tests/es6/Set_Set.prototype.clear.js
new file mode 100644
index 0000000..1d6c82c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Set_Set.prototype.clear.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Set.prototype.clear === "function";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Set_Set.prototype.delete.js b/Source/JavaScriptCore/tests/es6/Set_Set.prototype.delete.js
new file mode 100644
index 0000000..555831b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Set_Set.prototype.delete.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Set.prototype.delete === "function";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Set_Set.prototype.entries.js b/Source/JavaScriptCore/tests/es6/Set_Set.prototype.entries.js
new file mode 100644
index 0000000..29890a9
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Set_Set.prototype.entries.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Set.prototype.entries === "function";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Set_Set.prototype.forEach.js b/Source/JavaScriptCore/tests/es6/Set_Set.prototype.forEach.js
new file mode 100644
index 0000000..e484802
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Set_Set.prototype.forEach.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Set.prototype.forEach === "function";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Set_Set.prototype.keys.js b/Source/JavaScriptCore/tests/es6/Set_Set.prototype.keys.js
new file mode 100644
index 0000000..322e738
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Set_Set.prototype.keys.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Set.prototype.keys === "function";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Set_Set.prototype.size.js b/Source/JavaScriptCore/tests/es6/Set_Set.prototype.size.js
new file mode 100644
index 0000000..8b06919
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Set_Set.prototype.size.js
@@ -0,0 +1,16 @@
+function test() {
+
+var obj = {};
+var set = new Set();
+
+set.add(123);
+set.add(123);
+set.add(456);
+
+return set.size === 2;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Set_Set.prototype.values.js b/Source/JavaScriptCore/tests/es6/Set_Set.prototype.values.js
new file mode 100644
index 0000000..ef98c63
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Set_Set.prototype.values.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Set.prototype.values === "function";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/Set_Set.prototype\133Symbol.iterator\135.js" "b/Source/JavaScriptCore/tests/es6/Set_Set.prototype\133Symbol.iterator\135.js"
new file mode 100644
index 0000000..575a2e6
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/Set_Set.prototype\133Symbol.iterator\135.js"
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Set.prototype[Symbol.iterator] === "function";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/Set_Set\133Symbol.species\135.js" "b/Source/JavaScriptCore/tests/es6/Set_Set\133Symbol.species\135.js"
new file mode 100644
index 0000000..dfb7414
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/Set_Set\133Symbol.species\135.js"
@@ -0,0 +1,10 @@
+function test() {
+
+var prop = Object.getOwnPropertyDescriptor(Set, Symbol.species);
+return 'get' in prop && Set[Symbol.species] === Set;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Set_Set_iterator_prototype_chain.js b/Source/JavaScriptCore/tests/es6/Set_Set_iterator_prototype_chain.js
new file mode 100644
index 0000000..3a06788
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Set_Set_iterator_prototype_chain.js
@@ -0,0 +1,19 @@
+function test() {
+
+// Iterator instance
+var iterator = new Set()[Symbol.iterator]();
+// %SetIteratorPrototype%
+var proto1 = Object.getPrototypeOf(iterator);
+// %IteratorPrototype%
+var proto2 = Object.getPrototypeOf(proto1);
+
+return proto2.hasOwnProperty(Symbol.iterator) &&
+  !proto1    .hasOwnProperty(Symbol.iterator) &&
+  !iterator  .hasOwnProperty(Symbol.iterator) &&
+  iterator[Symbol.iterator]() === iterator;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Set_basic_functionality.js b/Source/JavaScriptCore/tests/es6/Set_basic_functionality.js
new file mode 100644
index 0000000..90965ff
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Set_basic_functionality.js
@@ -0,0 +1,15 @@
+function test() {
+
+var obj = {};
+var set = new Set();
+
+set.add(123);
+set.add(123);
+
+return set.has(123);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Set_constructor_accepts_null.js b/Source/JavaScriptCore/tests/es6/Set_constructor_accepts_null.js
new file mode 100644
index 0000000..96039f4
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Set_constructor_accepts_null.js
@@ -0,0 +1,10 @@
+function test() {
+
+new Set(null);
+return true;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Set_constructor_arguments.js b/Source/JavaScriptCore/tests/es6/Set_constructor_arguments.js
new file mode 100644
index 0000000..b740904
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Set_constructor_arguments.js
@@ -0,0 +1,13 @@
+function test() {
+
+var obj1 = {};
+var obj2 = {};
+var set = new Set([obj1, obj2]);
+
+return set.has(obj1) && set.has(obj2);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Set_constructor_invokes_add.js b/Source/JavaScriptCore/tests/es6/Set_constructor_invokes_add.js
new file mode 100644
index 0000000..21f2676
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Set_constructor_invokes_add.js
@@ -0,0 +1,19 @@
+function test() {
+
+var passed = false;
+var _add = Set.prototype.add;
+
+Set.prototype.add = function(v) {
+  passed = true;
+};
+
+new Set([1]);
+Set.prototype.add = _add;
+
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Set_constructor_requires_new.js b/Source/JavaScriptCore/tests/es6/Set_constructor_requires_new.js
new file mode 100644
index 0000000..5ad314b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Set_constructor_requires_new.js
@@ -0,0 +1,15 @@
+function test() {
+
+new Set();
+try {
+  Set();
+  return false;
+} catch(e) {
+  return true;
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Set_iterator_closing.js b/Source/JavaScriptCore/tests/es6/Set_iterator_closing.js
new file mode 100644
index 0000000..97b5494
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Set_iterator_closing.js
@@ -0,0 +1,19 @@
+function test() {
+
+var closed = false;
+var iter = global.__createIterableObject([1, 2, 3], {
+  'return': function(){ closed = true; return {}; }
+});
+var add = Set.prototype.add;
+Set.prototype.add = function(){ throw 0 };
+try {
+  new Set(iter);
+} catch(e){}
+Set.prototype.add = add;
+return closed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/String.prototype_HTML_methods_existence.js b/Source/JavaScriptCore/tests/es6/String.prototype_HTML_methods_existence.js
new file mode 100644
index 0000000..bee210d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/String.prototype_HTML_methods_existence.js
@@ -0,0 +1,16 @@
+function test() {
+
+var i, names = ["anchor", "big", "bold", "fixed", "fontcolor", "fontsize",
+  "italics", "link", "small", "strike", "sub", "sup"];
+for (i = 0; i < names.length; i++) {
+  if (typeof String.prototype[names[i]] !== 'function') {
+    return false;
+  }
+}
+return true;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/String.prototype_HTML_methods_quotes_in_arguments_are_escaped.js b/Source/JavaScriptCore/tests/es6/String.prototype_HTML_methods_quotes_in_arguments_are_escaped.js
new file mode 100644
index 0000000..8025704
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/String.prototype_HTML_methods_quotes_in_arguments_are_escaped.js
@@ -0,0 +1,15 @@
+function test() {
+
+var i, names = ["anchor", "fontcolor", "fontsize", "link"];
+for (i = 0; i < names.length; i++) {
+  if (""[names[i]]('"') !== ""[names[i]]('&' + 'quot;')) {
+    return false;
+  }
+}
+return true;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/String.prototype_HTML_methods_tags_names_are_lowercase.js b/Source/JavaScriptCore/tests/es6/String.prototype_HTML_methods_tags_names_are_lowercase.js
new file mode 100644
index 0000000..b12d7a8
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/String.prototype_HTML_methods_tags_names_are_lowercase.js
@@ -0,0 +1,16 @@
+function test() {
+
+var i, names = ["anchor", "big", "bold", "fixed", "fontcolor", "fontsize",
+  "italics", "link", "small", "strike", "sub", "sup"];
+for (i = 0; i < names.length; i++) {
+  if (""[names[i]]().toLowerCase() !== ""[names[i]]()) {
+    return false;
+  }
+}
+return true;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/String.prototype_methods_String.prototype.codePointAt.js b/Source/JavaScriptCore/tests/es6/String.prototype_methods_String.prototype.codePointAt.js
new file mode 100644
index 0000000..54ffad6
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/String.prototype_methods_String.prototype.codePointAt.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof String.prototype.codePointAt === 'function';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/String.prototype_methods_String.prototype.endsWith.js b/Source/JavaScriptCore/tests/es6/String.prototype_methods_String.prototype.endsWith.js
new file mode 100644
index 0000000..c2cdf3f
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/String.prototype_methods_String.prototype.endsWith.js
@@ -0,0 +1,10 @@
+function test() {
+
+return typeof String.prototype.endsWith === 'function'
+  && "foobar".endsWith("bar");
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/String.prototype_methods_String.prototype.includes.js b/Source/JavaScriptCore/tests/es6/String.prototype_methods_String.prototype.includes.js
new file mode 100644
index 0000000..227fa7c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/String.prototype_methods_String.prototype.includes.js
@@ -0,0 +1,10 @@
+function test() {
+
+return typeof String.prototype.includes === 'function'
+  && "foobar".includes("oba");
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/String.prototype_methods_String.prototype.normalize.js b/Source/JavaScriptCore/tests/es6/String.prototype_methods_String.prototype.normalize.js
new file mode 100644
index 0000000..09d6501
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/String.prototype_methods_String.prototype.normalize.js
@@ -0,0 +1,11 @@
+function test() {
+
+return typeof String.prototype.normalize === "function"
+  && "c\u0327\u0301".normalize("NFC") === "\u1e09"
+  && "\u1e09".normalize("NFD") === "c\u0327\u0301";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/String.prototype_methods_String.prototype.repeat.js b/Source/JavaScriptCore/tests/es6/String.prototype_methods_String.prototype.repeat.js
new file mode 100644
index 0000000..20e2a01
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/String.prototype_methods_String.prototype.repeat.js
@@ -0,0 +1,10 @@
+function test() {
+
+return typeof String.prototype.repeat === 'function'
+  && "foo".repeat(3) === "foofoofoo";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/String.prototype_methods_String.prototype.startsWith.js b/Source/JavaScriptCore/tests/es6/String.prototype_methods_String.prototype.startsWith.js
new file mode 100644
index 0000000..d36a9b4
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/String.prototype_methods_String.prototype.startsWith.js
@@ -0,0 +1,10 @@
+function test() {
+
+return typeof String.prototype.startsWith === 'function'
+  && "foobar".startsWith("foo");
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/String.prototype_methods_String.prototype\133Symbol.iterator\135.js" "b/Source/JavaScriptCore/tests/es6/String.prototype_methods_String.prototype\133Symbol.iterator\135.js"
new file mode 100644
index 0000000..133b11a
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/String.prototype_methods_String.prototype\133Symbol.iterator\135.js"
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof String.prototype[Symbol.iterator] === 'function';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/String.prototype_methods_String_iterator_prototype_chain.js b/Source/JavaScriptCore/tests/es6/String.prototype_methods_String_iterator_prototype_chain.js
new file mode 100644
index 0000000..e3d52bc
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/String.prototype_methods_String_iterator_prototype_chain.js
@@ -0,0 +1,19 @@
+function test() {
+
+// Iterator instance
+var iterator = ''[Symbol.iterator]();
+// %StringIteratorPrototype%
+var proto1 = Object.getPrototypeOf(iterator);
+// %IteratorPrototype%
+var proto2 = Object.getPrototypeOf(proto1);
+
+return proto2.hasOwnProperty(Symbol.iterator) &&
+  !proto1    .hasOwnProperty(Symbol.iterator) &&
+  !iterator  .hasOwnProperty(Symbol.iterator) &&
+  iterator[Symbol.iterator]() === iterator;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/String_static_methods_String.fromCodePoint.js b/Source/JavaScriptCore/tests/es6/String_static_methods_String.fromCodePoint.js
new file mode 100644
index 0000000..bbd3600
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/String_static_methods_String.fromCodePoint.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof String.fromCodePoint === 'function';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/String_static_methods_String.raw.js b/Source/JavaScriptCore/tests/es6/String_static_methods_String.raw.js
new file mode 100644
index 0000000..f6960c3
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/String_static_methods_String.raw.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof String.raw === 'function';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Symbol_JSON.stringify_ignores_symbols.js b/Source/JavaScriptCore/tests/es6/Symbol_JSON.stringify_ignores_symbols.js
new file mode 100644
index 0000000..4df25e3
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Symbol_JSON.stringify_ignores_symbols.js
@@ -0,0 +1,12 @@
+function test() {
+
+var object = {foo: Symbol()};
+object[Symbol()] = 1;
+var array = [Symbol()];
+return JSON.stringify(object) === '{}' && JSON.stringify(array) === '[null]' && JSON.stringify(Symbol()) === undefined;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Symbol_Object.defineProperty_support.js b/Source/JavaScriptCore/tests/es6/Symbol_Object.defineProperty_support.js
new file mode 100644
index 0000000..aa981fc
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Symbol_Object.defineProperty_support.js
@@ -0,0 +1,18 @@
+function test() {
+
+var object = {};
+var symbol = Symbol();
+var value = {};
+
+if (Object.defineProperty) {
+  Object.defineProperty(object, symbol, { value: value });
+  return object[symbol] === value;
+}
+
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Symbol_Objectsymbol.js b/Source/JavaScriptCore/tests/es6/Symbol_Objectsymbol.js
new file mode 100644
index 0000000..b8d43f8
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Symbol_Objectsymbol.js
@@ -0,0 +1,15 @@
+function test() {
+
+var symbol = Symbol();
+var symbolObject = Object(symbol);
+
+return typeof symbolObject === "object" &&
+  symbolObject == symbol &&
+  symbolObject !== symbol &&
+  symbolObject.valueOf() === symbol;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Symbol_basic_functionality.js b/Source/JavaScriptCore/tests/es6/Symbol_basic_functionality.js
new file mode 100644
index 0000000..40e8d40
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Symbol_basic_functionality.js
@@ -0,0 +1,13 @@
+function test() {
+
+var object = {};
+var symbol = Symbol();
+var value = {};
+object[symbol] = value;
+return object[symbol] === value;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Symbol_can_convert_with_String.js b/Source/JavaScriptCore/tests/es6/Symbol_can_convert_with_String.js
new file mode 100644
index 0000000..2c757bb
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Symbol_can_convert_with_String.js
@@ -0,0 +1,9 @@
+function test() {
+
+return String(Symbol("foo")) === "Symbol(foo)";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Symbol_cannot_coerce_to_string_or_number.js b/Source/JavaScriptCore/tests/es6/Symbol_cannot_coerce_to_string_or_number.js
new file mode 100644
index 0000000..e6e61cb
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Symbol_cannot_coerce_to_string_or_number.js
@@ -0,0 +1,22 @@
+function test() {
+
+var symbol = Symbol();
+
+try {
+  symbol + "";
+  return false;
+}
+catch(e) {}
+
+try {
+  symbol + 0;
+  return false;
+} catch(e) {}
+
+return true;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Symbol_global_symbol_registry.js b/Source/JavaScriptCore/tests/es6/Symbol_global_symbol_registry.js
new file mode 100644
index 0000000..833362a
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Symbol_global_symbol_registry.js
@@ -0,0 +1,11 @@
+function test() {
+
+var symbol = Symbol.for('foo');
+return Symbol.for('foo') === symbol &&
+   Symbol.keyFor(symbol) === 'foo';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Symbol_new_Symbol_throws.js b/Source/JavaScriptCore/tests/es6/Symbol_new_Symbol_throws.js
new file mode 100644
index 0000000..c795837
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Symbol_new_Symbol_throws.js
@@ -0,0 +1,14 @@
+function test() {
+
+var symbol = Symbol();
+try {
+  new Symbol();
+} catch(e) {
+  return true;
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Symbol_symbol_keys_are_hidden_to_pre-ES6_code.js b/Source/JavaScriptCore/tests/es6/Symbol_symbol_keys_are_hidden_to_pre-ES6_code.js
new file mode 100644
index 0000000..282c88c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Symbol_symbol_keys_are_hidden_to_pre-ES6_code.js
@@ -0,0 +1,21 @@
+function test() {
+
+var object = {};
+var symbol = Symbol();
+object[symbol] = 1;
+
+for (var x in object){}
+var passed = !x;
+
+if (Object.keys && Object.getOwnPropertyNames) {
+  passed &= Object.keys(object).length === 0
+    && Object.getOwnPropertyNames(object).length === 0;
+}
+
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Symbol_typeof_support.js b/Source/JavaScriptCore/tests/es6/Symbol_typeof_support.js
new file mode 100644
index 0000000..4a022b5
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Symbol_typeof_support.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof Symbol() === "symbol";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Unicode_code_point_escapes_in_identifiers.js b/Source/JavaScriptCore/tests/es6/Unicode_code_point_escapes_in_identifiers.js
new file mode 100644
index 0000000..ca88fbf
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Unicode_code_point_escapes_in_identifiers.js
@@ -0,0 +1,10 @@
+function test() {
+
+var \u{102C0} = { \u{102C0} : 2 };
+return \u{102C0}['\ud800\udec0'] === 2;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/Unicode_code_point_escapes_in_strings.js b/Source/JavaScriptCore/tests/es6/Unicode_code_point_escapes_in_strings.js
new file mode 100644
index 0000000..88d5abe
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/Unicode_code_point_escapes_in_strings.js
@@ -0,0 +1,9 @@
+function test() {
+
+return '\u{1d306}' == '\ud834\udf06';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/WeakMap_WeakMap.prototype.delete.js b/Source/JavaScriptCore/tests/es6/WeakMap_WeakMap.prototype.delete.js
new file mode 100644
index 0000000..aa46f3d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/WeakMap_WeakMap.prototype.delete.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof WeakMap.prototype.delete === "function";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/WeakMap_WeakMap.prototype.set_returns_this.js b/Source/JavaScriptCore/tests/es6/WeakMap_WeakMap.prototype.set_returns_this.js
new file mode 100644
index 0000000..c53c064
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/WeakMap_WeakMap.prototype.set_returns_this.js
@@ -0,0 +1,11 @@
+function test() {
+
+var weakmap = new WeakMap();
+var key = {};
+return weakmap.set(key, 0) === weakmap;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/WeakMap_basic_functionality.js b/Source/JavaScriptCore/tests/es6/WeakMap_basic_functionality.js
new file mode 100644
index 0000000..0ac6e5e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/WeakMap_basic_functionality.js
@@ -0,0 +1,14 @@
+function test() {
+
+var key = {};
+var weakmap = new WeakMap();
+
+weakmap.set(key, 123);
+
+return weakmap.has(key) && weakmap.get(key) === 123;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/WeakMap_constructor_accepts_null.js b/Source/JavaScriptCore/tests/es6/WeakMap_constructor_accepts_null.js
new file mode 100644
index 0000000..84cda9c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/WeakMap_constructor_accepts_null.js
@@ -0,0 +1,10 @@
+function test() {
+
+new WeakMap(null);
+return true;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/WeakMap_constructor_arguments.js b/Source/JavaScriptCore/tests/es6/WeakMap_constructor_arguments.js
new file mode 100644
index 0000000..93816dc
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/WeakMap_constructor_arguments.js
@@ -0,0 +1,14 @@
+function test() {
+
+var key1 = {};
+var key2 = {};
+var weakmap = new WeakMap([[key1, 123], [key2, 456]]);
+
+return weakmap.has(key1) && weakmap.get(key1) === 123 &&
+       weakmap.has(key2) && weakmap.get(key2) === 456;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/WeakMap_constructor_invokes_set.js b/Source/JavaScriptCore/tests/es6/WeakMap_constructor_invokes_set.js
new file mode 100644
index 0000000..4e3aa35
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/WeakMap_constructor_invokes_set.js
@@ -0,0 +1,19 @@
+function test() {
+
+var passed = false;
+var _set = WeakMap.prototype.set;
+
+WeakMap.prototype.set = function(k, v) {
+  passed = true;
+};
+
+new WeakMap([ [{ }, 42] ]);
+WeakMap.prototype.set = _set;
+
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/WeakMap_constructor_requires_new.js b/Source/JavaScriptCore/tests/es6/WeakMap_constructor_requires_new.js
new file mode 100644
index 0000000..bdac886
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/WeakMap_constructor_requires_new.js
@@ -0,0 +1,15 @@
+function test() {
+
+new WeakMap();
+try {
+  WeakMap();
+  return false;
+} catch(e) {
+  return true;
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/WeakMap_frozen_objects_as_keys.js b/Source/JavaScriptCore/tests/es6/WeakMap_frozen_objects_as_keys.js
new file mode 100644
index 0000000..cec27d0
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/WeakMap_frozen_objects_as_keys.js
@@ -0,0 +1,12 @@
+function test() {
+
+var f = Object.freeze({});
+var m = new WeakMap;
+m.set(f, 42);
+return m.get(f) === 42;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/WeakMap_iterator_closing.js b/Source/JavaScriptCore/tests/es6/WeakMap_iterator_closing.js
new file mode 100644
index 0000000..efe971c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/WeakMap_iterator_closing.js
@@ -0,0 +1,16 @@
+function test() {
+
+var closed = false;
+var iter = global.__createIterableObject([1, 2, 3], {
+  'return': function(){ closed = true; return {}; }
+});
+try {
+  new WeakMap(iter);
+} catch(e){}
+return closed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/WeakMap_no_WeakMap.prototype.clear_method.js b/Source/JavaScriptCore/tests/es6/WeakMap_no_WeakMap.prototype.clear_method.js
new file mode 100644
index 0000000..a17576f
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/WeakMap_no_WeakMap.prototype.clear_method.js
@@ -0,0 +1,16 @@
+function test() {
+
+if (!("clear" in WeakMap.prototype)) {
+  return true;
+}
+var m = new WeakMap();
+var key = {};
+m.set(key, 2);
+m.clear();
+return m.has(key);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/WeakSet_WeakSet.prototype.add_returns_this.js b/Source/JavaScriptCore/tests/es6/WeakSet_WeakSet.prototype.add_returns_this.js
new file mode 100644
index 0000000..3553ac5
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/WeakSet_WeakSet.prototype.add_returns_this.js
@@ -0,0 +1,11 @@
+function test() {
+
+var weakset = new WeakSet();
+var obj = {};
+return weakset.add(obj) === weakset;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/WeakSet_WeakSet.prototype.delete.js b/Source/JavaScriptCore/tests/es6/WeakSet_WeakSet.prototype.delete.js
new file mode 100644
index 0000000..0a39656
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/WeakSet_WeakSet.prototype.delete.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof WeakSet.prototype.delete === "function";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/WeakSet_basic_functionality.js b/Source/JavaScriptCore/tests/es6/WeakSet_basic_functionality.js
new file mode 100644
index 0000000..d1831b3
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/WeakSet_basic_functionality.js
@@ -0,0 +1,15 @@
+function test() {
+
+var obj1 = {};
+var weakset = new WeakSet();
+
+weakset.add(obj1);
+weakset.add(obj1);
+
+return weakset.has(obj1);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/WeakSet_constructor_accepts_null.js b/Source/JavaScriptCore/tests/es6/WeakSet_constructor_accepts_null.js
new file mode 100644
index 0000000..ba528f8
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/WeakSet_constructor_accepts_null.js
@@ -0,0 +1,10 @@
+function test() {
+
+new WeakSet(null);
+return true;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/WeakSet_constructor_arguments.js b/Source/JavaScriptCore/tests/es6/WeakSet_constructor_arguments.js
new file mode 100644
index 0000000..d6b6b33
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/WeakSet_constructor_arguments.js
@@ -0,0 +1,12 @@
+function test() {
+
+var obj1 = {}, obj2 = {};
+var weakset = new WeakSet([obj1, obj2]);
+
+return weakset.has(obj1) && weakset.has(obj2);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/WeakSet_constructor_invokes_add.js b/Source/JavaScriptCore/tests/es6/WeakSet_constructor_invokes_add.js
new file mode 100644
index 0000000..d4d650a
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/WeakSet_constructor_invokes_add.js
@@ -0,0 +1,19 @@
+function test() {
+
+var passed = false;
+var _add = WeakSet.prototype.add;
+
+WeakSet.prototype.add = function(v) {
+  passed = true;
+};
+
+new WeakSet([ { } ]);
+WeakSet.prototype.add = _add;
+
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/WeakSet_constructor_requires_new.js b/Source/JavaScriptCore/tests/es6/WeakSet_constructor_requires_new.js
new file mode 100644
index 0000000..ca66fae
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/WeakSet_constructor_requires_new.js
@@ -0,0 +1,15 @@
+function test() {
+
+new WeakSet();
+try {
+  WeakSet();
+  return false;
+} catch(e) {
+  return true;
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/WeakSet_iterator_closing.js b/Source/JavaScriptCore/tests/es6/WeakSet_iterator_closing.js
new file mode 100644
index 0000000..0775f6e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/WeakSet_iterator_closing.js
@@ -0,0 +1,16 @@
+function test() {
+
+var closed = false;
+var iter = global.__createIterableObject([1, 2, 3], {
+  'return': function(){ closed = true; return {}; }
+});
+try {
+  new WeakSet(iter);
+} catch(e){}
+return closed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/WeakSet_no_WeakSet.prototype.clear_method.js b/Source/JavaScriptCore/tests/es6/WeakSet_no_WeakSet.prototype.clear_method.js
new file mode 100644
index 0000000..fa5f13e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/WeakSet_no_WeakSet.prototype.clear_method.js
@@ -0,0 +1,16 @@
+function test() {
+
+if (!("clear" in WeakSet.prototype)) {
+  return true;
+}
+var s = new WeakSet();
+var key = {};
+s.add(key);
+s.clear();
+return s.has(key);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/__proto___in_object_literals_basic_support.js b/Source/JavaScriptCore/tests/es6/__proto___in_object_literals_basic_support.js
new file mode 100644
index 0000000..3199d70
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/__proto___in_object_literals_basic_support.js
@@ -0,0 +1,10 @@
+function test() {
+
+return { __proto__ : [] } instanceof Array
+  && !({ __proto__ : null } instanceof Object);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/__proto___in_object_literals_multiple___proto___is_an_error.js b/Source/JavaScriptCore/tests/es6/__proto___in_object_literals_multiple___proto___is_an_error.js
new file mode 100644
index 0000000..9399bce
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/__proto___in_object_literals_multiple___proto___is_an_error.js
@@ -0,0 +1,14 @@
+function test() {
+
+try {
+  eval("({ __proto__ : [], __proto__: {} })");
+}
+catch(e) {
+  return true;
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/__proto___in_object_literals_not_a_computed_property.js b/Source/JavaScriptCore/tests/es6/__proto___in_object_literals_not_a_computed_property.js
new file mode 100644
index 0000000..1d2fd09
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/__proto___in_object_literals_not_a_computed_property.js
@@ -0,0 +1,13 @@
+function test() {
+
+if (!({ __proto__ : [] } instanceof Array)) {
+  return false;
+}
+var a = "__proto__";
+return !({ [a] : [] } instanceof Array);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/__proto___in_object_literals_not_a_shorthand_method.js b/Source/JavaScriptCore/tests/es6/__proto___in_object_literals_not_a_shorthand_method.js
new file mode 100644
index 0000000..ffa3598
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/__proto___in_object_literals_not_a_shorthand_method.js
@@ -0,0 +1,12 @@
+function test() {
+
+if (!({ __proto__ : [] } instanceof Array)) {
+  return false;
+}
+return !({ __proto__(){} } instanceof Function);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/__proto___in_object_literals_not_a_shorthand_property.js b/Source/JavaScriptCore/tests/es6/__proto___in_object_literals_not_a_shorthand_property.js
new file mode 100644
index 0000000..de5a339
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/__proto___in_object_literals_not_a_shorthand_property.js
@@ -0,0 +1,13 @@
+function test() {
+
+if (!({ __proto__ : [] } instanceof Array)) {
+  return false;
+}
+var __proto__ = [];
+return !({ __proto__ } instanceof Array);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/arrow_functions_0_parameters.js b/Source/JavaScriptCore/tests/es6/arrow_functions_0_parameters.js
new file mode 100644
index 0000000..854024f
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/arrow_functions_0_parameters.js
@@ -0,0 +1,9 @@
+function test() {
+
+return (() => 5)() === 5;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/arrow_functions_1_parameter_no_brackets.js b/Source/JavaScriptCore/tests/es6/arrow_functions_1_parameter_no_brackets.js
new file mode 100644
index 0000000..7c3b372
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/arrow_functions_1_parameter_no_brackets.js
@@ -0,0 +1,10 @@
+function test() {
+
+var b = x => x + "foo";
+return (b("fee fie foe ") === "fee fie foe foo");
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/arrow_functions_cant_be_bound_can_be_curried.js b/Source/JavaScriptCore/tests/es6/arrow_functions_cant_be_bound_can_be_curried.js
new file mode 100644
index 0000000..20dffae
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/arrow_functions_cant_be_bound_can_be_curried.js
@@ -0,0 +1,11 @@
+function test() {
+
+var d = { x : "bar", y : function() { return z => this.x + z; }};
+var e = { x : "baz" };
+return d.y().bind(e, "ley")() === "barley";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/arrow_functions_correct_precedence.js b/Source/JavaScriptCore/tests/es6/arrow_functions_correct_precedence.js
new file mode 100644
index 0000000..30f3903
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/arrow_functions_correct_precedence.js
@@ -0,0 +1,11 @@
+function test() {
+
+return (() => {
+  try { Function("0 || () => 2")(); } catch(e) { return true; }
+})();
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/arrow_functions_lexical_arguments_binding.js b/Source/JavaScriptCore/tests/es6/arrow_functions_lexical_arguments_binding.js
new file mode 100644
index 0000000..4b4a385
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/arrow_functions_lexical_arguments_binding.js
@@ -0,0 +1,10 @@
+function test() {
+
+var f = (function() { return z => arguments[0]; }(5));
+return f(6) === 5;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/arrow_functions_lexical_new.target_binding.js b/Source/JavaScriptCore/tests/es6/arrow_functions_lexical_new.target_binding.js
new file mode 100644
index 0000000..3a5c96f
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/arrow_functions_lexical_new.target_binding.js
@@ -0,0 +1,12 @@
+function test() {
+
+function C() {
+  return x => new.target;
+}
+return new C()() === C && C()() === undefined;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/arrow_functions_lexical_super_binding.js b/Source/JavaScriptCore/tests/es6/arrow_functions_lexical_super_binding.js
new file mode 100644
index 0000000..0739025
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/arrow_functions_lexical_super_binding.js
@@ -0,0 +1,20 @@
+function test() {
+
+class B {
+  qux() {
+    return "quux";
+  }
+}
+class C extends B {
+  baz() {
+    return x => super.qux();
+  }
+}
+var arrow = new C().baz();
+return arrow() === "quux";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/arrow_functions_lexical_this_binding.js b/Source/JavaScriptCore/tests/es6/arrow_functions_lexical_this_binding.js
new file mode 100644
index 0000000..2e8c08d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/arrow_functions_lexical_this_binding.js
@@ -0,0 +1,11 @@
+function test() {
+
+var d = { x : "bar", y : function() { return z => this.x + z; }}.y();
+var e = { x : "baz", y : d };
+return d("ley") === "barley" && e.y("ley") === "barley";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/arrow_functions_multiple_parameters.js b/Source/JavaScriptCore/tests/es6/arrow_functions_multiple_parameters.js
new file mode 100644
index 0000000..56463fd
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/arrow_functions_multiple_parameters.js
@@ -0,0 +1,10 @@
+function test() {
+
+var c = (v, w, x, y, z) => "" + v + w + x + y + z;
+return (c(6, 5, 4, 3, 2) === "65432");
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/arrow_functions_no_line_break_between_params_and_code_=_code.js b/Source/JavaScriptCore/tests/es6/arrow_functions_no_line_break_between_params_and_code_=_code.js
new file mode 100644
index 0000000..1bd8972
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/arrow_functions_no_line_break_between_params_and_code_=_code.js
@@ -0,0 +1,11 @@
+function test() {
+
+return (() => {
+  try { Function("x\n => 2")(); } catch(e) { return true; }
+})();
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/arrow_functions_no_prototype_property.js b/Source/JavaScriptCore/tests/es6/arrow_functions_no_prototype_property.js
new file mode 100644
index 0000000..20e40e6
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/arrow_functions_no_prototype_property.js
@@ -0,0 +1,10 @@
+function test() {
+
+var a = () => 5;
+return !a.hasOwnProperty("prototype");
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/arrow_functions_this_unchanged_by_call_or_apply.js b/Source/JavaScriptCore/tests/es6/arrow_functions_this_unchanged_by_call_or_apply.js
new file mode 100644
index 0000000..a2b76d1
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/arrow_functions_this_unchanged_by_call_or_apply.js
@@ -0,0 +1,11 @@
+function test() {
+
+var d = { x : "foo", y : function() { return () => this.x; }};
+var e = { x : "bar" };
+return d.y().call(e) === "foo" && d.y().apply(e) === "foo";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/block-level_function_declaration.js b/Source/JavaScriptCore/tests/es6/block-level_function_declaration.js
new file mode 100644
index 0000000..3d55198
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/block-level_function_declaration.js
@@ -0,0 +1,14 @@
+function test() {
+
+'use strict';
+function f() { return 1; }
+{
+  function f() { return 2; }
+}
+return f() === 1;
+  
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_accessor_properties.js b/Source/JavaScriptCore/tests/es6/class_accessor_properties.js
new file mode 100644
index 0000000..2bc3d07
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_accessor_properties.js
@@ -0,0 +1,15 @@
+function test() {
+
+var baz = false;
+class C {
+  get foo() { return "foo"; }
+  set bar(x) { baz = x; }
+}
+new C().bar = true;
+return new C().foo === "foo" && baz;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_anonymous_class.js b/Source/JavaScriptCore/tests/es6/class_anonymous_class.js
new file mode 100644
index 0000000..761b5c6
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_anonymous_class.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof class {} === "function";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_class_expression.js b/Source/JavaScriptCore/tests/es6/class_class_expression.js
new file mode 100644
index 0000000..b9beb39
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_class_expression.js
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof class C {} === "function";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_class_name_is_lexically_scoped.js b/Source/JavaScriptCore/tests/es6/class_class_name_is_lexically_scoped.js
new file mode 100644
index 0000000..8e6702c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_class_name_is_lexically_scoped.js
@@ -0,0 +1,14 @@
+function test() {
+
+class C {
+  method() { return typeof C === "function"; }
+}
+var M = C.prototype.method;
+C = undefined;
+return C === undefined && M();
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_class_statement.js b/Source/JavaScriptCore/tests/es6/class_class_statement.js
new file mode 100644
index 0000000..c6ccc80
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_class_statement.js
@@ -0,0 +1,10 @@
+function test() {
+
+class C {}
+return typeof C === "function";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_computed_accessor_properties.js b/Source/JavaScriptCore/tests/es6/class_computed_accessor_properties.js
new file mode 100644
index 0000000..8e71047
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_computed_accessor_properties.js
@@ -0,0 +1,15 @@
+function test() {
+
+var garply = "foo", grault = "bar", baz = false;
+class C {
+  get [garply]() { return "foo"; }
+  set [grault](x) { baz = x; }
+}
+new C().bar = true;
+return new C().foo === "foo" && baz;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_computed_names_temporal_dead_zone.js b/Source/JavaScriptCore/tests/es6/class_computed_names_temporal_dead_zone.js
new file mode 100644
index 0000000..00f9924
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_computed_names_temporal_dead_zone.js
@@ -0,0 +1,15 @@
+function test() {
+
+try {
+  var B = class C {
+    [C](){}
+  }
+} catch(e) {
+  return true;
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_computed_prototype_methods.js b/Source/JavaScriptCore/tests/es6/class_computed_prototype_methods.js
new file mode 100644
index 0000000..f653145
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_computed_prototype_methods.js
@@ -0,0 +1,14 @@
+function test() {
+
+var foo = "method";
+class C {
+  [foo]() { return 2; }
+}
+return typeof C.prototype.method === "function"
+  && new C().method() === 2;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_computed_static_accessor_properties.js b/Source/JavaScriptCore/tests/es6/class_computed_static_accessor_properties.js
new file mode 100644
index 0000000..23bcc8c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_computed_static_accessor_properties.js
@@ -0,0 +1,15 @@
+function test() {
+
+var garply = "foo", grault = "bar", baz = false;
+class C {
+  static get [garply]() { return "foo"; }
+  static set [grault](x) { baz = x; }
+}
+C.bar = true;
+return C.foo === "foo" && baz;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_computed_static_methods.js b/Source/JavaScriptCore/tests/es6/class_computed_static_methods.js
new file mode 100644
index 0000000..f1d1490
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_computed_static_methods.js
@@ -0,0 +1,14 @@
+function test() {
+
+var foo = "method";
+class C {
+  static [foo]() { return 3; }
+}
+return typeof C.method === "function"
+  && C.method() === 3;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_constructor.js b/Source/JavaScriptCore/tests/es6/class_constructor.js
new file mode 100644
index 0000000..3694b72
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_constructor.js
@@ -0,0 +1,13 @@
+function test() {
+
+class C {
+  constructor() { this.x = 1; }
+}
+return C.prototype.constructor === C
+  && new C().x === 1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_constructor_requires_new.js b/Source/JavaScriptCore/tests/es6/class_constructor_requires_new.js
new file mode 100644
index 0000000..b722072
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_constructor_requires_new.js
@@ -0,0 +1,15 @@
+function test() {
+
+class C {}
+try {
+  C();
+}
+catch(e) {
+  return true;
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_extends.js b/Source/JavaScriptCore/tests/es6/class_extends.js
new file mode 100644
index 0000000..2b5ff4e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_extends.js
@@ -0,0 +1,12 @@
+function test() {
+
+class B {}
+class C extends B {}
+return new C() instanceof B
+  && B.isPrototypeOf(C);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_extends_expressions.js b/Source/JavaScriptCore/tests/es6/class_extends_expressions.js
new file mode 100644
index 0000000..01b0523
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_extends_expressions.js
@@ -0,0 +1,12 @@
+function test() {
+
+var B;
+class C extends (B = class {}) {}
+return new C() instanceof B
+  && B.isPrototypeOf(C);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_extends_null.js b/Source/JavaScriptCore/tests/es6/class_extends_null.js
new file mode 100644
index 0000000..20f9d41
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_extends_null.js
@@ -0,0 +1,13 @@
+function test() {
+
+class C extends null {
+  constructor() { return Object.create(null); }
+}
+return Function.prototype.isPrototypeOf(C)
+  && Object.getPrototypeOf(C.prototype) === null;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_implicit_strict_mode.js b/Source/JavaScriptCore/tests/es6/class_implicit_strict_mode.js
new file mode 100644
index 0000000..7b3a2dd
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_implicit_strict_mode.js
@@ -0,0 +1,12 @@
+function test() {
+
+class C {
+  static method() { return this === undefined; }
+}
+return (0,C.method)();
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_is_block-scoped.js b/Source/JavaScriptCore/tests/es6/class_is_block-scoped.js
new file mode 100644
index 0000000..06b401f
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_is_block-scoped.js
@@ -0,0 +1,15 @@
+function test() {
+
+class C {}
+var c1 = C;
+{
+  class C {}
+  var c2 = C;
+}
+return C === c1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_methods_arent_enumerable.js b/Source/JavaScriptCore/tests/es6/class_methods_arent_enumerable.js
new file mode 100644
index 0000000..aa6eed4
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_methods_arent_enumerable.js
@@ -0,0 +1,13 @@
+function test() {
+
+class C {
+  foo() {}
+  static bar() {}
+}
+return !C.prototype.propertyIsEnumerable("foo") && !C.propertyIsEnumerable("bar");
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_new.target.js b/Source/JavaScriptCore/tests/es6/class_new.target.js
new file mode 100644
index 0000000..27d1cdc
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_new.target.js
@@ -0,0 +1,21 @@
+function test() {
+
+var passed = false;
+new function f() {
+  passed = new.target === f;
+}();
+
+class A {
+  constructor() {
+    passed &= new.target === B;
+  }
+}
+class B extends A {}
+new B();
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_prototype_methods.js b/Source/JavaScriptCore/tests/es6/class_prototype_methods.js
new file mode 100644
index 0000000..9c0d7fd
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_prototype_methods.js
@@ -0,0 +1,13 @@
+function test() {
+
+class C {
+  method() { return 2; }
+}
+return typeof C.prototype.method === "function"
+  && new C().method() === 2;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_static_accessor_properties.js b/Source/JavaScriptCore/tests/es6/class_static_accessor_properties.js
new file mode 100644
index 0000000..556aacf
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_static_accessor_properties.js
@@ -0,0 +1,15 @@
+function test() {
+
+var baz = false;
+class C {
+  static get foo() { return "foo"; }
+  static set bar(x) { baz = x; }
+}
+C.bar = true;
+return C.foo === "foo" && baz;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_static_methods.js b/Source/JavaScriptCore/tests/es6/class_static_methods.js
new file mode 100644
index 0000000..7735848
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_static_methods.js
@@ -0,0 +1,13 @@
+function test() {
+
+class C {
+  static method() { return 3; }
+}
+return typeof C.method === "function"
+  && C.method() === 3;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/class_string-keyed_methods.js b/Source/JavaScriptCore/tests/es6/class_string-keyed_methods.js
new file mode 100644
index 0000000..49dec9a
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/class_string-keyed_methods.js
@@ -0,0 +1,13 @@
+function test() {
+
+class C {
+  "foo bar"() { return 2; }
+}
+return typeof C.prototype["foo bar"] === "function"
+  && new C()["foo bar"]() === 2;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/const_basic_support.js b/Source/JavaScriptCore/tests/es6/const_basic_support.js
new file mode 100644
index 0000000..b04537b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/const_basic_support.js
@@ -0,0 +1,10 @@
+function test() {
+
+const foo = 123;
+return (foo === 123);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/const_basic_support_strict_mode.js b/Source/JavaScriptCore/tests/es6/const_basic_support_strict_mode.js
new file mode 100644
index 0000000..e3ef981
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/const_basic_support_strict_mode.js
@@ -0,0 +1,11 @@
+function test() {
+
+"use strict";
+const foo = 123;
+return (foo === 123);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/const_is_block-scoped.js b/Source/JavaScriptCore/tests/es6/const_is_block-scoped.js
new file mode 100644
index 0000000..063bf41
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/const_is_block-scoped.js
@@ -0,0 +1,11 @@
+function test() {
+
+const bar = 123;
+{ const bar = 456; }
+return bar === 123;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/const_is_block-scoped_strict_mode.js b/Source/JavaScriptCore/tests/es6/const_is_block-scoped_strict_mode.js
new file mode 100644
index 0000000..f116c90
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/const_is_block-scoped_strict_mode.js
@@ -0,0 +1,12 @@
+function test() {
+
+'use strict';
+const bar = 123;
+{ const bar = 456; }
+return bar === 123;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/const_redefining_a_const_is_an_error.js b/Source/JavaScriptCore/tests/es6/const_redefining_a_const_is_an_error.js
new file mode 100644
index 0000000..104d210
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/const_redefining_a_const_is_an_error.js
@@ -0,0 +1,14 @@
+function test() {
+
+const baz = 1;
+try {
+  Function("const foo = 1; foo = 2;")();
+} catch(e) {
+  return true;
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/const_redefining_a_const_strict_mode.js b/Source/JavaScriptCore/tests/es6/const_redefining_a_const_strict_mode.js
new file mode 100644
index 0000000..3fe25bf
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/const_redefining_a_const_strict_mode.js
@@ -0,0 +1,15 @@
+function test() {
+
+'use strict';
+const baz = 1;
+try {
+  Function("'use strict'; const foo = 1; foo = 2;")();
+} catch(e) {
+  return true;
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/const_temporal_dead_zone.js b/Source/JavaScriptCore/tests/es6/const_temporal_dead_zone.js
new file mode 100644
index 0000000..aa0037c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/const_temporal_dead_zone.js
@@ -0,0 +1,13 @@
+function test() {
+
+var passed = (function(){ try { qux; } catch(e) { return true; }}());
+function fn() { passed &= qux === 456; }
+const qux = 456;
+fn();
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/const_temporal_dead_zone_strict_mode.js b/Source/JavaScriptCore/tests/es6/const_temporal_dead_zone_strict_mode.js
new file mode 100644
index 0000000..12da3d0
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/const_temporal_dead_zone_strict_mode.js
@@ -0,0 +1,14 @@
+function test() {
+
+'use strict';
+var passed = (function(){ try { qux; } catch(e) { return true; }}());
+function fn() { passed &= qux === 456; }
+const qux = 456;
+fn();
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/default_function_parameters_arguments_object_interaction.js b/Source/JavaScriptCore/tests/es6/default_function_parameters_arguments_object_interaction.js
new file mode 100644
index 0000000..c204b7d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/default_function_parameters_arguments_object_interaction.js
@@ -0,0 +1,16 @@
+function test() {
+
+return (function (a = "baz", b = "qux", c = "quux") {
+  a = "corge";
+  // The arguments object is not mapped to the
+  // parameters, even outside of strict mode.
+  return arguments.length === 2
+    && arguments[0] === "foo"
+    && arguments[1] === "bar";
+}("foo", "bar"));
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/default_function_parameters_basic_functionality.js b/Source/JavaScriptCore/tests/es6/default_function_parameters_basic_functionality.js
new file mode 100644
index 0000000..68f0bf7
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/default_function_parameters_basic_functionality.js
@@ -0,0 +1,9 @@
+function test() {
+
+return (function (a = 1, b = 2) { return a === 3 && b === 2; }(3));
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/default_function_parameters_defaults_can_refer_to_previous_params.js b/Source/JavaScriptCore/tests/es6/default_function_parameters_defaults_can_refer_to_previous_params.js
new file mode 100644
index 0000000..a98543c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/default_function_parameters_defaults_can_refer_to_previous_params.js
@@ -0,0 +1,9 @@
+function test() {
+
+return (function (a, b = a) { return b === 5; }(5));
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/default_function_parameters_explicit_undefined_defers_to_the_default.js b/Source/JavaScriptCore/tests/es6/default_function_parameters_explicit_undefined_defers_to_the_default.js
new file mode 100644
index 0000000..1f8ad5c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/default_function_parameters_explicit_undefined_defers_to_the_default.js
@@ -0,0 +1,9 @@
+function test() {
+
+return (function (a = 1, b = 2) { return a === 1 && b === 3; }(undefined, 3));
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/default_function_parameters_new_Function_support.js b/Source/JavaScriptCore/tests/es6/default_function_parameters_new_Function_support.js
new file mode 100644
index 0000000..14d47cb
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/default_function_parameters_new_Function_support.js
@@ -0,0 +1,11 @@
+function test() {
+
+return new Function("a = 1", "b = 2",
+  "return a === 3 && b === 2;"
+)(3);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/default_function_parameters_separate_scope.js b/Source/JavaScriptCore/tests/es6/default_function_parameters_separate_scope.js
new file mode 100644
index 0000000..c123edd
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/default_function_parameters_separate_scope.js
@@ -0,0 +1,14 @@
+function test() {
+
+return (function(a=function(){
+  return typeof b === 'undefined';
+}){
+  var b = 1;
+  return a();
+}());
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/default_function_parameters_temporal_dead_zone.js b/Source/JavaScriptCore/tests/es6/default_function_parameters_temporal_dead_zone.js
new file mode 100644
index 0000000..ae97dd6
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/default_function_parameters_temporal_dead_zone.js
@@ -0,0 +1,19 @@
+function test() {
+
+return (function(x = 1) {
+  try {
+    eval("(function(a=a){}())");
+    return false;
+  } catch(e) {}
+  try {
+    eval("(function(a=b,b){}())");
+    return false;
+  } catch(e) {}
+  return true;
+}());
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_chained_iterable_destructuring.js b/Source/JavaScriptCore/tests/es6/destructuring_chained_iterable_destructuring.js
new file mode 100644
index 0000000..0ed27f0
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_chained_iterable_destructuring.js
@@ -0,0 +1,11 @@
+function test() {
+
+var a,b,c,d;
+[a,b] = [c,d] = [1,2];
+return a === 1 && b === 2 && c === 1 && d === 2;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_chained_object_destructuring.js b/Source/JavaScriptCore/tests/es6/destructuring_chained_object_destructuring.js
new file mode 100644
index 0000000..c42f8fa
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_chained_object_destructuring.js
@@ -0,0 +1,11 @@
+function test() {
+
+var a,b,c,d;
+({a,b} = {c,d} = {a:1,b:2,c:3,d:4});
+return a === 1 && b === 2 && c === 3 && d === 4;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_computed_properties.js b/Source/JavaScriptCore/tests/es6/destructuring_computed_properties.js
new file mode 100644
index 0000000..2966b5c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_computed_properties.js
@@ -0,0 +1,11 @@
+function test() {
+
+var qux = "corge";
+var { [qux]: grault } = { corge: "garply" };
+return grault === "garply";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_defaults.js b/Source/JavaScriptCore/tests/es6/destructuring_defaults.js
new file mode 100644
index 0000000..ed28743
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_defaults.js
@@ -0,0 +1,12 @@
+function test() {
+
+var {a = 1, b = 0, z:c = 3} = {b:2, z:undefined};
+var [d = 0, e = 5, f = 6] = [4,,undefined];
+return a === 1 && b === 2 && c === 3
+  && d === 4 && e === 5 && f === 6;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_defaults_in_parameters.js b/Source/JavaScriptCore/tests/es6/destructuring_defaults_in_parameters.js
new file mode 100644
index 0000000..dbc3417
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_defaults_in_parameters.js
@@ -0,0 +1,13 @@
+function test() {
+
+return (function({a = 1, b = 0, c = 3, x:d = 0, y:e = 5},
+    [f = 6, g = 0, h = 8]) {
+  return a === 1 && b === 2 && c === 3 && d === 4 &&
+    e === 5 && f === 6 && g === 7 && h === 8;
+}({b:2, c:undefined, x:4},[, 7, undefined]));
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_defaults_in_parameters_new_Function_support.js b/Source/JavaScriptCore/tests/es6/destructuring_defaults_in_parameters_new_Function_support.js
new file mode 100644
index 0000000..077307c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_defaults_in_parameters_new_Function_support.js
@@ -0,0 +1,11 @@
+function test() {
+
+return new Function("{a = 1, b = 0, c = 3, x:d = 0, y:e = 5}",
+  "return a === 1 && b === 2 && c === 3 && d === 4 && e === 5;"
+)({b:2, c:undefined, x:4});
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_defaults_in_parameters_separate_scope.js b/Source/JavaScriptCore/tests/es6/destructuring_defaults_in_parameters_separate_scope.js
new file mode 100644
index 0000000..5c8f788
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_defaults_in_parameters_separate_scope.js
@@ -0,0 +1,14 @@
+function test() {
+
+return (function({a=function(){
+  return typeof b === 'undefined';
+}}){
+  var b = 1;
+  return a();
+}({}));
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_defaults_let_temporal_dead_zone.js b/Source/JavaScriptCore/tests/es6/destructuring_defaults_let_temporal_dead_zone.js
new file mode 100644
index 0000000..fa5748f
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_defaults_let_temporal_dead_zone.js
@@ -0,0 +1,18 @@
+function test() {
+
+var {a, b = 2} = {a:1};
+try {
+  eval("let {c = c} = {};");
+  return false;
+} catch(e){}
+try {
+  eval("let {c = d, d} = {d:1};");
+  return false;
+} catch(e){}
+return a === 1 && b === 2;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_empty_patterns.js b/Source/JavaScriptCore/tests/es6/destructuring_empty_patterns.js
new file mode 100644
index 0000000..0f5177f
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_empty_patterns.js
@@ -0,0 +1,11 @@
+function test() {
+
+[] = [1,2];
+({} = {a:1,b:2});
+return true;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_empty_patterns_in_parameters.js b/Source/JavaScriptCore/tests/es6/destructuring_empty_patterns_in_parameters.js
new file mode 100644
index 0000000..63d85bd
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_empty_patterns_in_parameters.js
@@ -0,0 +1,11 @@
+function test() {
+
+return function ([],{}){
+  return arguments[0] + '' === "3,4" && arguments[1].x === "foo";
+}([3,4],{x:"foo"});
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_in_for-in_loop_heads.js b/Source/JavaScriptCore/tests/es6/destructuring_in_for-in_loop_heads.js
new file mode 100644
index 0000000..0ee742d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_in_for-in_loop_heads.js
@@ -0,0 +1,11 @@
+function test() {
+
+for(var [i, j, k] in { qux: 1 }) {
+  return i === "q" && j === "u" && k === "x";
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_in_for-of_loop_heads.js b/Source/JavaScriptCore/tests/es6/destructuring_in_for-of_loop_heads.js
new file mode 100644
index 0000000..1849076
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_in_for-of_loop_heads.js
@@ -0,0 +1,11 @@
+function test() {
+
+for(var [i, j, k] of [[1,2,3]]) {
+  return i === 1 && j === 2 && k === 3;
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_in_parameters.js b/Source/JavaScriptCore/tests/es6/destructuring_in_parameters.js
new file mode 100644
index 0000000..39d8567
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_in_parameters.js
@@ -0,0 +1,12 @@
+function test() {
+
+return (function({a, x:b, y:e}, [c, d]) {
+  return a === 1 && b === 2 && c === 3 &&
+    d === 4 && e === undefined;
+}({a:1, x:2}, [3, 4]));
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_in_parameters_arguments_interaction.js b/Source/JavaScriptCore/tests/es6/destructuring_in_parameters_arguments_interaction.js
new file mode 100644
index 0000000..d7db90e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_in_parameters_arguments_interaction.js
@@ -0,0 +1,12 @@
+function test() {
+
+return (function({a, x:b, y:e}, [c, d]) {
+  return arguments[0].a === 1 && arguments[0].x === 2
+    && !("y" in arguments[0]) && arguments[1] + '' === "3,4";
+}({a:1, x:2}, [3, 4]));
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_in_parameters_function_length_property.js b/Source/JavaScriptCore/tests/es6/destructuring_in_parameters_function_length_property.js
new file mode 100644
index 0000000..31d7025
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_in_parameters_function_length_property.js
@@ -0,0 +1,9 @@
+function test() {
+
+return function({a, b}, [c, d]){}.length === 2;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_in_parameters_new_Function_support.js b/Source/JavaScriptCore/tests/es6/destructuring_in_parameters_new_Function_support.js
new file mode 100644
index 0000000..7c15909
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_in_parameters_new_Function_support.js
@@ -0,0 +1,12 @@
+function test() {
+
+return new Function("{a, x:b, y:e}","[c, d]",
+  "return a === 1 && b === 2 && c === 3 && "
+  + "d === 4 && e === undefined;"
+)({a:1, x:2}, [3, 4]);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_iterable_destructuring_expression.js b/Source/JavaScriptCore/tests/es6/destructuring_iterable_destructuring_expression.js
new file mode 100644
index 0000000..cc8517b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_iterable_destructuring_expression.js
@@ -0,0 +1,10 @@
+function test() {
+
+var a, b, iterable = [1,2];
+return ([a, b] = iterable) === iterable;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_iterator_closing.js b/Source/JavaScriptCore/tests/es6/destructuring_iterator_closing.js
new file mode 100644
index 0000000..507a484
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_iterator_closing.js
@@ -0,0 +1,14 @@
+function test() {
+
+var closed = false;
+var iter = global.__createIterableObject([1, 2, 3], {
+  'return': function(){ closed = true; return {}; }
+});
+var [a, b] = iter;
+return closed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_multiples_in_a_single_var_statement.js b/Source/JavaScriptCore/tests/es6/destructuring_multiples_in_a_single_var_statement.js
new file mode 100644
index 0000000..873e024
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_multiples_in_a_single_var_statement.js
@@ -0,0 +1,10 @@
+function test() {
+
+var [a,b] = [5,6], {c,d} = {c:7,d:8};
+return a === 5 && b === 6 && c === 7 && d === 8;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_nested.js b/Source/JavaScriptCore/tests/es6/destructuring_nested.js
new file mode 100644
index 0000000..ddb1124
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_nested.js
@@ -0,0 +1,12 @@
+function test() {
+
+var [e, {x:f, g}] = [9, {x:10}];
+var {h, x:[i]} = {h:11, x:[12]};
+return e === 9 && f === 10 && g === undefined
+  && h === 11 && i === 12;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_nested_rest.js b/Source/JavaScriptCore/tests/es6/destructuring_nested_rest.js
new file mode 100644
index 0000000..0383396
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_nested_rest.js
@@ -0,0 +1,11 @@
+function test() {
+
+var a = [1, 2, 3], first, last;
+[first, ...[a[2], last]] = a;
+return first === 1 && last === 3 && (a + "") === "1,2,2";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_object_destructuring_expression.js b/Source/JavaScriptCore/tests/es6/destructuring_object_destructuring_expression.js
new file mode 100644
index 0000000..a0d7dab
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_object_destructuring_expression.js
@@ -0,0 +1,10 @@
+function test() {
+
+var a, b, obj = { a:1, b:2 };
+return ({a,b} = obj) === obj;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_object_destructuring_with_primitives.js b/Source/JavaScriptCore/tests/es6/destructuring_object_destructuring_with_primitives.js
new file mode 100644
index 0000000..13670e5
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_object_destructuring_with_primitives.js
@@ -0,0 +1,17 @@
+function test() {
+
+var {toFixed} = 2;
+var {slice} = '';
+var toString, match;
+({toString} = 2);
+({match} = '');
+return toFixed === Number.prototype.toFixed
+  && toString === Number.prototype.toString
+  && slice === String.prototype.slice
+  && match === String.prototype.match;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_parenthesised_left-hand-side_is_a_syntax_error.js b/Source/JavaScriptCore/tests/es6/destructuring_parenthesised_left-hand-side_is_a_syntax_error.js
new file mode 100644
index 0000000..ec78510
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_parenthesised_left-hand-side_is_a_syntax_error.js
@@ -0,0 +1,16 @@
+function test() {
+
+var a, b;
+({a,b} = {a:1,b:2});
+try {
+  eval("({a,b}) = {a:3,b:4};");
+}
+catch(e) {
+  return a === 1 && b === 2;
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_rest.js b/Source/JavaScriptCore/tests/es6/destructuring_rest.js
new file mode 100644
index 0000000..8f70af7
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_rest.js
@@ -0,0 +1,12 @@
+function test() {
+
+var [a, ...b] = [3, 4, 5];
+var [c, ...d] = [6];
+return a === 3 && b instanceof Array && (b + "") === "4,5" &&
+   c === 6 && d instanceof Array && d.length === 0;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_throws_on_null_and_undefined.js b/Source/JavaScriptCore/tests/es6/destructuring_throws_on_null_and_undefined.js
new file mode 100644
index 0000000..abe4dcf
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_throws_on_null_and_undefined.js
@@ -0,0 +1,17 @@
+function test() {
+
+try {
+  var {a} = null;
+  return false;
+} catch(e) {}
+try {
+  var {b} = undefined;
+  return false;
+} catch(e) {}
+return true;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_trailing_commas_in_iterable_patterns.js b/Source/JavaScriptCore/tests/es6/destructuring_trailing_commas_in_iterable_patterns.js
new file mode 100644
index 0000000..8a6a082
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_trailing_commas_in_iterable_patterns.js
@@ -0,0 +1,10 @@
+function test() {
+
+var [a,] = [1];
+return a === 1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_trailing_commas_in_object_patterns.js b/Source/JavaScriptCore/tests/es6/destructuring_trailing_commas_in_object_patterns.js
new file mode 100644
index 0000000..1aa7f1e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_trailing_commas_in_object_patterns.js
@@ -0,0 +1,10 @@
+function test() {
+
+var {a,} = {a:1};
+return a === 1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_with_arrays.js b/Source/JavaScriptCore/tests/es6/destructuring_with_arrays.js
new file mode 100644
index 0000000..6deb63e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_with_arrays.js
@@ -0,0 +1,13 @@
+function test() {
+
+var [a, , [b], c] = [5, null, [6]];
+var d, e;
+[d,e] = [7,8];
+return a === 5 && b === 6 && c === undefined
+  && d === 7 && e === 8;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_with_astral_plane_strings.js b/Source/JavaScriptCore/tests/es6/destructuring_with_astral_plane_strings.js
new file mode 100644
index 0000000..077a2e0
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_with_astral_plane_strings.js
@@ -0,0 +1,11 @@
+function test() {
+
+var c;
+[c] = "𠮷𠮶";
+return c === "𠮷";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_with_generator_instances.js b/Source/JavaScriptCore/tests/es6/destructuring_with_generator_instances.js
new file mode 100644
index 0000000..978abff
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_with_generator_instances.js
@@ -0,0 +1,13 @@
+function test() {
+
+var [a, b, c] = (function*(){ yield 1; yield 2; }());
+var d, e;
+[d, e] = (function*(){ yield 3; yield 4; }());
+return a === 1 && b === 2 && c === undefined
+  && d === 3 && e === 4;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_with_generic_iterables.js b/Source/JavaScriptCore/tests/es6/destructuring_with_generic_iterables.js
new file mode 100644
index 0000000..6b74a6b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_with_generic_iterables.js
@@ -0,0 +1,13 @@
+function test() {
+
+var [a, b, c] = global.__createIterableObject([1, 2]);
+var d, e;
+[d, e] = global.__createIterableObject([3, 4]);
+return a === 1 && b === 2 && c === undefined
+  && d === 3 && e === 4;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_with_instances_of_generic_iterables.js b/Source/JavaScriptCore/tests/es6/destructuring_with_instances_of_generic_iterables.js
new file mode 100644
index 0000000..92608b0
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_with_instances_of_generic_iterables.js
@@ -0,0 +1,13 @@
+function test() {
+
+var [a, b, c] = Object.create(global.__createIterableObject([1, 2]))
+var d, e;
+[d, e] = Object.create(global.__createIterableObject([3, 4]));
+return a === 1 && b === 2 && c === undefined
+  && d === 3 && e === 4;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_with_objects.js b/Source/JavaScriptCore/tests/es6/destructuring_with_objects.js
new file mode 100644
index 0000000..b382b0b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_with_objects.js
@@ -0,0 +1,13 @@
+function test() {
+
+var {c, x:d, e} = {c:7, x:8};
+var f, g;
+({f,g} = {f:9,g:10});
+return c === 7 && d === 8 && e === undefined
+  && f === 9 && g === 10;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_with_sparse_arrays.js b/Source/JavaScriptCore/tests/es6/destructuring_with_sparse_arrays.js
new file mode 100644
index 0000000..beb2fd1
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_with_sparse_arrays.js
@@ -0,0 +1,10 @@
+function test() {
+
+var [a, b] = [,,];
+return a === undefined && b === undefined;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/destructuring_with_strings.js b/Source/JavaScriptCore/tests/es6/destructuring_with_strings.js
new file mode 100644
index 0000000..4bf3be3
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/destructuring_with_strings.js
@@ -0,0 +1,13 @@
+function test() {
+
+var [a, b, c] = "ab";
+var d, e;
+[d,e] = "de";
+return a === "a" && b === "b" && c === undefined
+  && d === "d" && e === "e";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/for..of_loops_iterator_closing_break.js b/Source/JavaScriptCore/tests/es6/for..of_loops_iterator_closing_break.js
new file mode 100644
index 0000000..55d0982
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/for..of_loops_iterator_closing_break.js
@@ -0,0 +1,14 @@
+function test() {
+
+var closed = false;
+var iter = __createIterableObject([1, 2, 3], {
+  'return': function(){ closed = true; return {}; }
+});
+for (var it of iter) break;
+return closed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/for..of_loops_iterator_closing_throw.js b/Source/JavaScriptCore/tests/es6/for..of_loops_iterator_closing_throw.js
new file mode 100644
index 0000000..1714bb4
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/for..of_loops_iterator_closing_throw.js
@@ -0,0 +1,16 @@
+function test() {
+
+var closed = false;
+var iter = __createIterableObject([1, 2, 3], {
+  'return': function(){ closed = true; return {}; }
+});
+try {
+  for (var it of iter) throw 0;
+} catch(e){}
+return closed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/for..of_loops_with_arrays.js b/Source/JavaScriptCore/tests/es6/for..of_loops_with_arrays.js
new file mode 100644
index 0000000..2a4b852
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/for..of_loops_with_arrays.js
@@ -0,0 +1,11 @@
+function test() {
+
+var arr = [5];
+for (var item of arr)
+  return item === 5;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/for..of_loops_with_astral_plane_strings.js b/Source/JavaScriptCore/tests/es6/for..of_loops_with_astral_plane_strings.js
new file mode 100644
index 0000000..78d4116
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/for..of_loops_with_astral_plane_strings.js
@@ -0,0 +1,12 @@
+function test() {
+
+var str = "";
+for (var item of "𠮷𠮶")
+  str += item + " ";
+return str === "𠮷 𠮶 ";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/for..of_loops_with_generator_instances.js b/Source/JavaScriptCore/tests/es6/for..of_loops_with_generator_instances.js
new file mode 100644
index 0000000..221784e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/for..of_loops_with_generator_instances.js
@@ -0,0 +1,14 @@
+function test() {
+
+var result = "";
+var iterable = (function*(){ yield 1; yield 2; yield 3; }());
+for (var item of iterable) {
+  result += item;
+}
+return result === "123";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/for..of_loops_with_generic_iterables.js b/Source/JavaScriptCore/tests/es6/for..of_loops_with_generic_iterables.js
new file mode 100644
index 0000000..e6efe56
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/for..of_loops_with_generic_iterables.js
@@ -0,0 +1,14 @@
+function test() {
+
+var result = "";
+var iterable = global.__createIterableObject([1, 2, 3]);
+for (var item of iterable) {
+  result += item;
+}
+return result === "123";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/for..of_loops_with_instances_of_generic_iterables.js b/Source/JavaScriptCore/tests/es6/for..of_loops_with_instances_of_generic_iterables.js
new file mode 100644
index 0000000..97b9a6a
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/for..of_loops_with_instances_of_generic_iterables.js
@@ -0,0 +1,14 @@
+function test() {
+
+var result = "";
+var iterable = global.__createIterableObject([1, 2, 3]);
+for (var item of Object.create(iterable)) {
+  result += item;
+}
+return result === "123";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/for..of_loops_with_sparse_arrays.js b/Source/JavaScriptCore/tests/es6/for..of_loops_with_sparse_arrays.js
new file mode 100644
index 0000000..13b80be
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/for..of_loops_with_sparse_arrays.js
@@ -0,0 +1,13 @@
+function test() {
+
+var arr = [,,];
+var count = 0;
+for (var item of arr)
+  count += (item === undefined);
+return count === 2;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/for..of_loops_with_strings.js b/Source/JavaScriptCore/tests/es6/for..of_loops_with_strings.js
new file mode 100644
index 0000000..e583f77
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/for..of_loops_with_strings.js
@@ -0,0 +1,12 @@
+function test() {
+
+var str = "";
+for (var item of "foo")
+  str += item;
+return str === "foo";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/function_name_property_accessor_properties.js b/Source/JavaScriptCore/tests/es6/function_name_property_accessor_properties.js
new file mode 100644
index 0000000..c3e4f9e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/function_name_property_accessor_properties.js
@@ -0,0 +1,12 @@
+function test() {
+
+var o = { get foo(){}, set foo(x){} };
+var descriptor = Object.getOwnPropertyDescriptor(o, "foo");
+return descriptor.get.name === "get foo" &&
+       descriptor.set.name === "set foo";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/function_name_property_bound_functions.js b/Source/JavaScriptCore/tests/es6/function_name_property_bound_functions.js
new file mode 100644
index 0000000..0b14b97
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/function_name_property_bound_functions.js
@@ -0,0 +1,11 @@
+function test() {
+
+function foo() {};
+return foo.bind({}).name === "bound foo" &&
+  (function(){}).bind({}).name === "bound ";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/function_name_property_class_expressions.js b/Source/JavaScriptCore/tests/es6/function_name_property_class_expressions.js
new file mode 100644
index 0000000..e7d81e2
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/function_name_property_class_expressions.js
@@ -0,0 +1,10 @@
+function test() {
+
+return class foo {}.name === "foo" &&
+  typeof class bar { static name() {} }.name === "function";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/function_name_property_class_prototype_methods.js b/Source/JavaScriptCore/tests/es6/function_name_property_class_prototype_methods.js
new file mode 100644
index 0000000..3114223
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/function_name_property_class_prototype_methods.js
@@ -0,0 +1,10 @@
+function test() {
+
+class C { foo(){} };
+return (new C).foo.name === "foo";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/function_name_property_class_statements.js b/Source/JavaScriptCore/tests/es6/function_name_property_class_statements.js
new file mode 100644
index 0000000..fb00b9b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/function_name_property_class_statements.js
@@ -0,0 +1,12 @@
+function test() {
+
+class foo {};
+class bar { static name() {} };
+return foo.name === "foo" &&
+  typeof bar.name === "function";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/function_name_property_class_static_methods.js b/Source/JavaScriptCore/tests/es6/function_name_property_class_static_methods.js
new file mode 100644
index 0000000..491642d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/function_name_property_class_static_methods.js
@@ -0,0 +1,10 @@
+function test() {
+
+class C { static foo(){} };
+return C.foo.name === "foo";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/function_name_property_function_expressions.js b/Source/JavaScriptCore/tests/es6/function_name_property_function_expressions.js
new file mode 100644
index 0000000..a65a8ee
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/function_name_property_function_expressions.js
@@ -0,0 +1,10 @@
+function test() {
+
+return (function foo(){}).name === 'foo' &&
+  (function(){}).name === '';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/function_name_property_function_statements.js b/Source/JavaScriptCore/tests/es6/function_name_property_function_statements.js
new file mode 100644
index 0000000..c1f2999
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/function_name_property_function_statements.js
@@ -0,0 +1,11 @@
+function test() {
+
+function foo(){};
+return foo.name === 'foo' &&
+  (function(){}).name === '';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/function_name_property_isnt_writable_is_configurable.js b/Source/JavaScriptCore/tests/es6/function_name_property_isnt_writable_is_configurable.js
new file mode 100644
index 0000000..778e21c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/function_name_property_isnt_writable_is_configurable.js
@@ -0,0 +1,12 @@
+function test() {
+
+var descriptor = Object.getOwnPropertyDescriptor(function f(){},"name");
+return descriptor.enumerable   === false &&
+       descriptor.writable     === false &&
+       descriptor.configurable === true;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/function_name_property_new_Function.js b/Source/JavaScriptCore/tests/es6/function_name_property_new_Function.js
new file mode 100644
index 0000000..2407e51
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/function_name_property_new_Function.js
@@ -0,0 +1,9 @@
+function test() {
+
+return (new Function).name === "anonymous";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/function_name_property_object_methods_class.js b/Source/JavaScriptCore/tests/es6/function_name_property_object_methods_class.js
new file mode 100644
index 0000000..39e9809
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/function_name_property_object_methods_class.js
@@ -0,0 +1,13 @@
+function test() {
+
+var o = { foo: class {}, bar: class baz {}};
+o.qux = class {};
+return o.foo.name === "foo" &&
+       o.bar.name === "baz" &&
+       o.qux.name === "";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/function_name_property_object_methods_function.js b/Source/JavaScriptCore/tests/es6/function_name_property_object_methods_function.js
new file mode 100644
index 0000000..b5821b9
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/function_name_property_object_methods_function.js
@@ -0,0 +1,13 @@
+function test() {
+
+var o = { foo: function(){}, bar: function baz(){}};
+o.qux = function(){};
+return o.foo.name === "foo" &&
+       o.bar.name === "baz" &&
+       o.qux.name === "";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/function_name_property_shorthand_methods.js b/Source/JavaScriptCore/tests/es6/function_name_property_shorthand_methods.js
new file mode 100644
index 0000000..557ecdb
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/function_name_property_shorthand_methods.js
@@ -0,0 +1,10 @@
+function test() {
+
+var o = { foo(){} };
+return o.foo.name === "foo";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/function_name_property_shorthand_methods_no_lexical_binding.js b/Source/JavaScriptCore/tests/es6/function_name_property_shorthand_methods_no_lexical_binding.js
new file mode 100644
index 0000000..b2ff9d2
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/function_name_property_shorthand_methods_no_lexical_binding.js
@@ -0,0 +1,10 @@
+function test() {
+
+var f = "foo";
+return ({f() { return f; }}).f() === "foo";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/function_name_property_symbol-keyed_methods.js b/Source/JavaScriptCore/tests/es6/function_name_property_symbol-keyed_methods.js
new file mode 100644
index 0000000..e915dd9
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/function_name_property_symbol-keyed_methods.js
@@ -0,0 +1,17 @@
+function test() {
+
+var sym1 = Symbol("foo");
+var sym2 = Symbol();
+var o = {
+  [sym1]: function(){},
+  [sym2]: function(){}
+};
+
+return o[sym1].name === "[foo]" &&
+       o[sym2].name === "";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/function_name_property_variables_class.js b/Source/JavaScriptCore/tests/es6/function_name_property_variables_class.js
new file mode 100644
index 0000000..c14de21
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/function_name_property_variables_class.js
@@ -0,0 +1,14 @@
+function test() {
+
+var foo = class {};
+var bar = class baz {};
+var qux = class { static name() {} };
+return foo.name === "foo" &&
+       bar.name === "baz" &&
+       typeof qux.name === "function";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/function_name_property_variables_function.js b/Source/JavaScriptCore/tests/es6/function_name_property_variables_function.js
new file mode 100644
index 0000000..13b7cf8
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/function_name_property_variables_function.js
@@ -0,0 +1,11 @@
+function test() {
+
+var foo = function() {};
+var bar = function baz() {};
+return foo.name === "foo" && bar.name === "baz";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_%GeneratorPrototype%.constructor.js b/Source/JavaScriptCore/tests/es6/generators_%GeneratorPrototype%.constructor.js
new file mode 100644
index 0000000..9b8946d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_%GeneratorPrototype%.constructor.js
@@ -0,0 +1,19 @@
+function test() {
+
+function * g (){}
+var iterator = new g.constructor("a","b","c","yield a; yield b; yield c;")(5,6,7);
+var item = iterator.next();
+var passed = item.value === 5 && item.done === false;
+item = iterator.next();
+passed    &= item.value === 6 && item.done === false;
+item = iterator.next();
+passed    &= item.value === 7 && item.done === false;
+item = iterator.next();
+passed    &= item.value === undefined && item.done === true;
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_%GeneratorPrototype%.js b/Source/JavaScriptCore/tests/es6/generators_%GeneratorPrototype%.js
new file mode 100644
index 0000000..93f7b71
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_%GeneratorPrototype%.js
@@ -0,0 +1,18 @@
+function test() {
+
+function * generatorFn(){}
+var ownProto = Object.getPrototypeOf(generatorFn());
+var passed = ownProto === generatorFn.prototype;
+
+var sharedProto = Object.getPrototypeOf(ownProto);
+passed &= sharedProto !== Object.prototype &&
+  sharedProto === Object.getPrototypeOf(function*(){}.prototype) &&
+  sharedProto.hasOwnProperty('next');
+
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_%GeneratorPrototype%.return.js b/Source/JavaScriptCore/tests/es6/generators_%GeneratorPrototype%.return.js
new file mode 100644
index 0000000..e496b34
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_%GeneratorPrototype%.return.js
@@ -0,0 +1,19 @@
+function test() {
+
+function * generator(){
+  yield 5; yield 6;
+};
+var iterator = generator();
+var item = iterator.next();
+var passed = item.value === 5 && item.done === false;
+item = iterator.return("quxquux");
+passed    &= item.value === "quxquux" && item.done === true;
+item = iterator.next();
+passed    &= item.value === undefined && item.done === true;
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_%GeneratorPrototype%.throw.js b/Source/JavaScriptCore/tests/es6/generators_%GeneratorPrototype%.throw.js
new file mode 100644
index 0000000..89950b1
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_%GeneratorPrototype%.throw.js
@@ -0,0 +1,20 @@
+function test() {
+
+var passed = false;
+function * generator(){
+  try {
+    yield 5; yield 6;
+  } catch(e) {
+    passed = (e === "foo");
+  }
+};
+var iterator = generator();
+iterator.next();
+iterator.throw("foo");
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_basic_functionality.js b/Source/JavaScriptCore/tests/es6/generators_basic_functionality.js
new file mode 100644
index 0000000..6153761
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_basic_functionality.js
@@ -0,0 +1,19 @@
+function test() {
+
+function * generator(){
+  yield 5; yield 6;
+};
+var iterator = generator();
+var item = iterator.next();
+var passed = item.value === 5 && item.done === false;
+item = iterator.next();
+passed    &= item.value === 6 && item.done === false;
+item = iterator.next();
+passed    &= item.value === undefined && item.done === true;
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_cant_use_this_with_new.js b/Source/JavaScriptCore/tests/es6/generators_cant_use_this_with_new.js
new file mode 100644
index 0000000..b6dfefc
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_cant_use_this_with_new.js
@@ -0,0 +1,17 @@
+function test() {
+
+function * generator(){
+  yield this.x; yield this.y;
+};
+try {
+  (new generator()).next();
+}
+catch (e) {
+  return true;
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_computed_shorthand_generators.js b/Source/JavaScriptCore/tests/es6/generators_computed_shorthand_generators.js
new file mode 100644
index 0000000..b3d3ee2
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_computed_shorthand_generators.js
@@ -0,0 +1,22 @@
+function test() {
+
+var garply = "generator";
+var o = {
+  * [garply] () {
+    yield 5; yield 6;
+  },
+};
+var iterator = o.generator();
+var item = iterator.next();
+var passed = item.value === 5 && item.done === false;
+item = iterator.next();
+passed    &= item.value === 6 && item.done === false;
+item = iterator.next();
+passed    &= item.value === undefined && item.done === true;
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_computed_shorthand_generators_classes.js b/Source/JavaScriptCore/tests/es6/generators_computed_shorthand_generators_classes.js
new file mode 100644
index 0000000..0243b99
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_computed_shorthand_generators_classes.js
@@ -0,0 +1,22 @@
+function test() {
+
+var garply = "generator";
+class C {
+  * [garply] () {
+    yield 5; yield 6;
+  }
+}
+var iterator = new C().generator();
+var item = iterator.next();
+var passed = item.value === 5 && item.done === false;
+item = iterator.next();
+passed    &= item.value === 6 && item.done === false;
+item = iterator.next();
+passed    &= item.value === undefined && item.done === true;
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_correct_this_binding.js b/Source/JavaScriptCore/tests/es6/generators_correct_this_binding.js
new file mode 100644
index 0000000..d966ddd
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_correct_this_binding.js
@@ -0,0 +1,19 @@
+function test() {
+
+function * generator(){
+  yield this.x; yield this.y;
+};
+var iterator = { g: generator, x: 5, y: 6 }.g();
+var item = iterator.next();
+var passed = item.value === 5 && item.done === false;
+item = iterator.next();
+passed    &= item.value === 6 && item.done === false;
+item = iterator.next();
+passed    &= item.value === undefined && item.done === true;
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_generator_function_expressions.js b/Source/JavaScriptCore/tests/es6/generators_generator_function_expressions.js
new file mode 100644
index 0000000..7f61823
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_generator_function_expressions.js
@@ -0,0 +1,19 @@
+function test() {
+
+var generator = function * (){
+  yield 5; yield 6;
+};
+var iterator = generator();
+var item = iterator.next();
+var passed = item.value === 5 && item.done === false;
+item = iterator.next();
+passed    &= item.value === 6 && item.done === false;
+item = iterator.next();
+passed    &= item.value === undefined && item.done === true;
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_sending.js b/Source/JavaScriptCore/tests/es6/generators_sending.js
new file mode 100644
index 0000000..4c99390
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_sending.js
@@ -0,0 +1,17 @@
+function test() {
+
+var sent;
+function * generator(){
+  sent = [yield 5, yield 6];
+};
+var iterator = generator();
+iterator.next();
+iterator.next("foo");
+iterator.next("bar");
+return sent[0] === "foo" && sent[1] === "bar";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_shorthand_generator_methods.js b/Source/JavaScriptCore/tests/es6/generators_shorthand_generator_methods.js
new file mode 100644
index 0000000..ae532ac
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_shorthand_generator_methods.js
@@ -0,0 +1,21 @@
+function test() {
+
+var o = {
+  * generator() {
+    yield 5; yield 6;
+  },
+};
+var iterator = o.generator();
+var item = iterator.next();
+var passed = item.value === 5 && item.done === false;
+item = iterator.next();
+passed    &= item.value === 6 && item.done === false;
+item = iterator.next();
+passed    &= item.value === undefined && item.done === true;
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_shorthand_generator_methods_classes.js b/Source/JavaScriptCore/tests/es6/generators_shorthand_generator_methods_classes.js
new file mode 100644
index 0000000..78649b7
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_shorthand_generator_methods_classes.js
@@ -0,0 +1,21 @@
+function test() {
+
+class C {
+  * generator() {
+    yield 5; yield 6;
+  }
+};
+var iterator = new C().generator();
+var item = iterator.next();
+var passed = item.value === 5 && item.done === false;
+item = iterator.next();
+passed    &= item.value === 6 && item.done === false;
+item = iterator.next();
+passed    &= item.value === undefined && item.done === true;
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_string-keyed_shorthand_generator_methods.js b/Source/JavaScriptCore/tests/es6/generators_string-keyed_shorthand_generator_methods.js
new file mode 100644
index 0000000..d39bfed
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_string-keyed_shorthand_generator_methods.js
@@ -0,0 +1,21 @@
+function test() {
+
+var o = {
+  * "foo bar"() {
+    yield 5; yield 6;
+  },
+};
+var iterator = o["foo bar"]();
+var item = iterator.next();
+var passed = item.value === 5 && item.done === false;
+item = iterator.next();
+passed    &= item.value === 6 && item.done === false;
+item = iterator.next();
+passed    &= item.value === undefined && item.done === true;
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_yield_*_arrays.js b/Source/JavaScriptCore/tests/es6/generators_yield_*_arrays.js
new file mode 100644
index 0000000..d46ec63
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_yield_*_arrays.js
@@ -0,0 +1,18 @@
+function test() {
+
+var iterator = (function * generator() {
+  yield * [5, 6];
+}());
+var item = iterator.next();
+var passed = item.value === 5 && item.done === false;
+item = iterator.next();
+passed    &= item.value === 6 && item.done === false;
+item = iterator.next();
+passed    &= item.value === undefined && item.done === true;
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_yield_*_astral_plane_strings.js b/Source/JavaScriptCore/tests/es6/generators_yield_*_astral_plane_strings.js
new file mode 100644
index 0000000..cc7c524
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_yield_*_astral_plane_strings.js
@@ -0,0 +1,18 @@
+function test() {
+
+var iterator = (function * generator() {
+  yield * "𠮷𠮶";
+}());
+var item = iterator.next();
+var passed = item.value === "𠮷" && item.done === false;
+item = iterator.next();
+passed    &= item.value === "𠮶" && item.done === false;
+item = iterator.next();
+passed    &= item.value === undefined && item.done === true;
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_yield_*_generator_instances.js b/Source/JavaScriptCore/tests/es6/generators_yield_*_generator_instances.js
new file mode 100644
index 0000000..11986f0
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_yield_*_generator_instances.js
@@ -0,0 +1,20 @@
+function test() {
+
+var iterator = (function * generator() {
+  yield * (function*(){ yield 5; yield 6; yield 7; }());
+}());
+var item = iterator.next();
+var passed = item.value === 5 && item.done === false;
+item = iterator.next();
+passed    &= item.value === 6 && item.done === false;
+item = iterator.next();
+passed    &= item.value === 7 && item.done === false;
+item = iterator.next();
+passed    &= item.value === undefined && item.done === true;
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_yield_*_generic_iterables.js b/Source/JavaScriptCore/tests/es6/generators_yield_*_generic_iterables.js
new file mode 100644
index 0000000..a8b9b53
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_yield_*_generic_iterables.js
@@ -0,0 +1,20 @@
+function test() {
+
+var iterator = (function * generator() {
+  yield * global.__createIterableObject([5, 6, 7]);
+}());
+var item = iterator.next();
+var passed = item.value === 5 && item.done === false;
+item = iterator.next();
+passed    &= item.value === 6 && item.done === false;
+item = iterator.next();
+passed    &= item.value === 7 && item.done === false;
+item = iterator.next();
+passed    &= item.value === undefined && item.done === true;
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_yield_*_instances_of_iterables.js b/Source/JavaScriptCore/tests/es6/generators_yield_*_instances_of_iterables.js
new file mode 100644
index 0000000..b4c7453
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_yield_*_instances_of_iterables.js
@@ -0,0 +1,20 @@
+function test() {
+
+var iterator = (function * generator() {
+  yield * Object.create(__createIterableObject([5, 6, 7]));
+}());
+var item = iterator.next();
+var passed = item.value === 5 && item.done === false;
+item = iterator.next();
+passed    &= item.value === 6 && item.done === false;
+item = iterator.next();
+passed    &= item.value === 7 && item.done === false;
+item = iterator.next();
+passed    &= item.value === undefined && item.done === true;
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_yield_*_iterator_closing.js b/Source/JavaScriptCore/tests/es6/generators_yield_*_iterator_closing.js
new file mode 100644
index 0000000..6f682f5
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_yield_*_iterator_closing.js
@@ -0,0 +1,25 @@
+function test() {
+
+var closed = '';
+var iter = __createIterableObject([1, 2, 3], {
+  'return': function(){
+    closed += 'a';
+    return {done: true};
+  }
+});
+var gen = (function* generator(){
+  try {
+    yield *iter;
+  } finally {
+    closed += 'b';
+  }
+})();
+gen.next();
+gen['return']();
+return closed === 'ab';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_yield_*_iterator_closing_via_throw.js b/Source/JavaScriptCore/tests/es6/generators_yield_*_iterator_closing_via_throw.js
new file mode 100644
index 0000000..44a065a
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_yield_*_iterator_closing_via_throw.js
@@ -0,0 +1,24 @@
+function test() {
+
+var closed = false;
+var iter = global.__createIterableObject([1, 2, 3], {
+  'throw': undefined,
+  'return': function() {
+    closed = true;
+    return {done: true};
+  }
+});
+var gen = (function*(){
+  try {
+    yield *iter;
+  } catch(e){}
+})();
+gen.next();
+gen['throw']();
+return closed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_yield_*_on_non-iterables_is_a_runtime_error.js b/Source/JavaScriptCore/tests/es6/generators_yield_*_on_non-iterables_is_a_runtime_error.js
new file mode 100644
index 0000000..bc6e676
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_yield_*_on_non-iterables_is_a_runtime_error.js
@@ -0,0 +1,21 @@
+function test() {
+
+var iterator = (function * generator() {
+  yield * [5];
+}());
+var item = iterator.next();
+var passed = item.value === 5 && item.done === false;
+iterator = (function * generator() {
+  yield * 5;
+}());
+try {
+  iterator.next();
+} catch (e) {
+  return passed;
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_yield_*_sparse_arrays.js b/Source/JavaScriptCore/tests/es6/generators_yield_*_sparse_arrays.js
new file mode 100644
index 0000000..7f5da4a
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_yield_*_sparse_arrays.js
@@ -0,0 +1,18 @@
+function test() {
+
+var iterator = (function * generator() {
+  yield * [,,];
+}());
+var item = iterator.next();
+var passed = item.value === undefined && item.done === false;
+item = iterator.next();
+passed    &= item.value === undefined && item.done === false;
+item = iterator.next();
+passed    &= item.value === undefined && item.done === true;
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_yield_*_strings.js b/Source/JavaScriptCore/tests/es6/generators_yield_*_strings.js
new file mode 100644
index 0000000..f745f3c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_yield_*_strings.js
@@ -0,0 +1,18 @@
+function test() {
+
+var iterator = (function * generator() {
+  yield * "56";
+}());
+var item = iterator.next();
+var passed = item.value === "5" && item.done === false;
+item = iterator.next();
+passed    &= item.value === "6" && item.done === false;
+item = iterator.next();
+passed    &= item.value === undefined && item.done === true;
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/generators_yield_operator_precedence.js b/Source/JavaScriptCore/tests/es6/generators_yield_operator_precedence.js
new file mode 100644
index 0000000..efd1e2b6
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/generators_yield_operator_precedence.js
@@ -0,0 +1,16 @@
+function test() {
+
+var passed;
+function * generator(){
+  passed = yield 0 ? true : false;
+};
+var iterator = generator();
+iterator.next();
+iterator.next(true);
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/let_basic_support.js b/Source/JavaScriptCore/tests/es6/let_basic_support.js
new file mode 100644
index 0000000..b95ed90
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/let_basic_support.js
@@ -0,0 +1,10 @@
+function test() {
+
+let foo = 123;
+return (foo === 123);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/let_basic_support_strict_mode.js b/Source/JavaScriptCore/tests/es6/let_basic_support_strict_mode.js
new file mode 100644
index 0000000..f4ba80e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/let_basic_support_strict_mode.js
@@ -0,0 +1,11 @@
+function test() {
+
+'use strict';
+let foo = 123;
+return (foo === 123);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/let_for-loop_iteration_scope.js b/Source/JavaScriptCore/tests/es6/let_for-loop_iteration_scope.js
new file mode 100644
index 0000000..f613719
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/let_for-loop_iteration_scope.js
@@ -0,0 +1,20 @@
+function test() {
+
+let scopes = [];
+for(let i = 0; i < 2; i++) {
+  scopes.push(function(){ return i; });
+}
+let passed = (scopes[0]() === 0 && scopes[1]() === 1);
+
+scopes = [];
+for(let i in { a:1, b:1 }) {
+  scopes.push(function(){ return i; });
+}
+passed &= (scopes[0]() === "a" && scopes[1]() === "b");
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/let_for-loop_iteration_scope_strict_mode.js b/Source/JavaScriptCore/tests/es6/let_for-loop_iteration_scope_strict_mode.js
new file mode 100644
index 0000000..c244cc4
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/let_for-loop_iteration_scope_strict_mode.js
@@ -0,0 +1,21 @@
+function test() {
+
+'use strict';
+let scopes = [];
+for(let i = 0; i < 2; i++) {
+  scopes.push(function(){ return i; });
+}
+let passed = (scopes[0]() === 0 && scopes[1]() === 1);
+
+scopes = [];
+for(let i in { a:1, b:1 }) {
+  scopes.push(function(){ return i; });
+}
+passed &= (scopes[0]() === "a" && scopes[1]() === "b");
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/let_for-loop_statement_scope.js b/Source/JavaScriptCore/tests/es6/let_for-loop_statement_scope.js
new file mode 100644
index 0000000..99fa5c0
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/let_for-loop_statement_scope.js
@@ -0,0 +1,11 @@
+function test() {
+
+let baz = 1;
+for(let baz = 0; false; false) {}
+return baz === 1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/let_for-loop_statement_scope_strict_mode.js b/Source/JavaScriptCore/tests/es6/let_for-loop_statement_scope_strict_mode.js
new file mode 100644
index 0000000..139b800
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/let_for-loop_statement_scope_strict_mode.js
@@ -0,0 +1,12 @@
+function test() {
+
+'use strict';
+let baz = 1;
+for(let baz = 0; false; false) {}
+return baz === 1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/let_is_block-scoped.js b/Source/JavaScriptCore/tests/es6/let_is_block-scoped.js
new file mode 100644
index 0000000..70fed14
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/let_is_block-scoped.js
@@ -0,0 +1,11 @@
+function test() {
+
+let bar = 123;
+{ let bar = 456; }
+return bar === 123;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/let_is_block-scoped_strict_mode.js b/Source/JavaScriptCore/tests/es6/let_is_block-scoped_strict_mode.js
new file mode 100644
index 0000000..f9473d6
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/let_is_block-scoped_strict_mode.js
@@ -0,0 +1,12 @@
+function test() {
+
+'use strict';
+let bar = 123;
+{ let bar = 456; }
+return bar === 123;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/let_temporal_dead_zone.js b/Source/JavaScriptCore/tests/es6/let_temporal_dead_zone.js
new file mode 100644
index 0000000..7a4ba34
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/let_temporal_dead_zone.js
@@ -0,0 +1,13 @@
+function test() {
+
+var passed = (function(){ try {  qux; } catch(e) { return true; }}());
+function fn() { passed &= qux === 456; }
+let qux = 456;
+fn();
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/let_temporal_dead_zone_strict_mode.js b/Source/JavaScriptCore/tests/es6/let_temporal_dead_zone_strict_mode.js
new file mode 100644
index 0000000..444cd67
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/let_temporal_dead_zone_strict_mode.js
@@ -0,0 +1,14 @@
+function test() {
+
+'use strict';
+var passed = (function(){ try {  qux; } catch(e) { return true; }}());
+function fn() { passed &= qux === 456; }
+let qux = 456;
+fn();
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/miscellaneous_Invalid_Date.js b/Source/JavaScriptCore/tests/es6/miscellaneous_Invalid_Date.js
new file mode 100644
index 0000000..61d7c23
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/miscellaneous_Invalid_Date.js
@@ -0,0 +1,9 @@
+function test() {
+
+return new Date(NaN) + "" === "Invalid Date";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/miscellaneous_RegExp_constructor_can_alter_flags.js b/Source/JavaScriptCore/tests/es6/miscellaneous_RegExp_constructor_can_alter_flags.js
new file mode 100644
index 0000000..5649132
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/miscellaneous_RegExp_constructor_can_alter_flags.js
@@ -0,0 +1,9 @@
+function test() {
+
+return new RegExp(/./im, "g").global === true;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/miscellaneous_String.prototype_case_methods_Unicode_support.js b/Source/JavaScriptCore/tests/es6/miscellaneous_String.prototype_case_methods_Unicode_support.js
new file mode 100644
index 0000000..66a6e5c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/miscellaneous_String.prototype_case_methods_Unicode_support.js
@@ -0,0 +1,9 @@
+function test() {
+
+return "𐐘".toLowerCase() === "𐑀" && "𐑀".toUpperCase() === "𐐘";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/miscellaneous_accessors_arent_constructors.js b/Source/JavaScriptCore/tests/es6/miscellaneous_accessors_arent_constructors.js
new file mode 100644
index 0000000..b6966fe
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/miscellaneous_accessors_arent_constructors.js
@@ -0,0 +1,13 @@
+function test() {
+
+try {
+  new (Object.getOwnPropertyDescriptor({get a(){}}, 'a')).get;
+} catch(e) {
+  return true;
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/miscellaneous_built-in_prototypes_are_not_instances.js b/Source/JavaScriptCore/tests/es6/miscellaneous_built-in_prototypes_are_not_instances.js
new file mode 100644
index 0000000..a0d2472
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/miscellaneous_built-in_prototypes_are_not_instances.js
@@ -0,0 +1,15 @@
+function test() {
+
+try {
+  RegExp.prototype.source; return false;
+} catch(e) {}
+try {
+  Date.prototype.valueOf(); return false;
+} catch(e) {}
+return true;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/miscellaneous_duplicate_property_names_in_strict_mode.js b/Source/JavaScriptCore/tests/es6/miscellaneous_duplicate_property_names_in_strict_mode.js
new file mode 100644
index 0000000..85da5bb
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/miscellaneous_duplicate_property_names_in_strict_mode.js
@@ -0,0 +1,10 @@
+function test() {
+
+'use strict';
+return this === undefined && ({ a:1, a:1 }).a === 1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/miscellaneous_function_length_is_configurable.js b/Source/JavaScriptCore/tests/es6/miscellaneous_function_length_is_configurable.js
new file mode 100644
index 0000000..88abf1b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/miscellaneous_function_length_is_configurable.js
@@ -0,0 +1,17 @@
+function test() {
+
+var fn = function(a, b) {};
+
+var desc = Object.getOwnPropertyDescriptor(fn, "length");
+if (desc.configurable) {
+  Object.defineProperty(fn, "length", { value: 1 });
+  return fn.length === 1;
+}
+
+return false;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/miscellaneous_no_assignments_allowed_in_for-in_head.js b/Source/JavaScriptCore/tests/es6/miscellaneous_no_assignments_allowed_in_for-in_head.js
new file mode 100644
index 0000000..f34ca37
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/miscellaneous_no_assignments_allowed_in_for-in_head.js
@@ -0,0 +1,14 @@
+function test() {
+
+try {
+  eval('for (var i = 0 in {}) {}');
+}
+catch(e) {
+  return true;
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/miscellaneous_no_escaped_reserved_words_as_identifiers.js b/Source/JavaScriptCore/tests/es6/miscellaneous_no_escaped_reserved_words_as_identifiers.js
new file mode 100644
index 0000000..f45f05d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/miscellaneous_no_escaped_reserved_words_as_identifiers.js
@@ -0,0 +1,14 @@
+function test() {
+
+var \u0061;
+try {
+  eval('var v\\u0061r');
+} catch(e) {
+  return true;
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/miscellaneous_no_semicolon_needed_after_do-while.js b/Source/JavaScriptCore/tests/es6/miscellaneous_no_semicolon_needed_after_do-while.js
new file mode 100644
index 0000000..5a0b6ab
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/miscellaneous_no_semicolon_needed_after_do-while.js
@@ -0,0 +1,9 @@
+function test() {
+
+do {} while (false) return true;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/miscellaneous_subclassables_Boolean_is_subclassable.js b/Source/JavaScriptCore/tests/es6/miscellaneous_subclassables_Boolean_is_subclassable.js
new file mode 100644
index 0000000..2fcfdaf
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/miscellaneous_subclassables_Boolean_is_subclassable.js
@@ -0,0 +1,12 @@
+function test() {
+
+class C extends Boolean {}
+var c = new C(true);
+return c instanceof Boolean
+  && c == true;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/miscellaneous_subclassables_Map_is_subclassable.js b/Source/JavaScriptCore/tests/es6/miscellaneous_subclassables_Map_is_subclassable.js
new file mode 100644
index 0000000..0a0c68c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/miscellaneous_subclassables_Map_is_subclassable.js
@@ -0,0 +1,15 @@
+function test() {
+
+var key = {};
+class M extends Map {}
+var map = new M();
+
+map.set(key, 123);
+
+return map.has(key) && map.get(key) === 123;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/miscellaneous_subclassables_Number_is_subclassable.js b/Source/JavaScriptCore/tests/es6/miscellaneous_subclassables_Number_is_subclassable.js
new file mode 100644
index 0000000..f610a8e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/miscellaneous_subclassables_Number_is_subclassable.js
@@ -0,0 +1,12 @@
+function test() {
+
+class C extends Number {}
+var c = new C(6);
+return c instanceof Number
+  && +c === 6;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/miscellaneous_subclassables_Set_is_subclassable.js b/Source/JavaScriptCore/tests/es6/miscellaneous_subclassables_Set_is_subclassable.js
new file mode 100644
index 0000000..36e235b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/miscellaneous_subclassables_Set_is_subclassable.js
@@ -0,0 +1,16 @@
+function test() {
+
+var obj = {};
+class S extends Set {}
+var set = new S();
+
+set.add(123);
+set.add(123);
+
+return set.has(123);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/miscellaneous_subclassables_String_is_subclassable.js b/Source/JavaScriptCore/tests/es6/miscellaneous_subclassables_String_is_subclassable.js
new file mode 100644
index 0000000..9ad8354
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/miscellaneous_subclassables_String_is_subclassable.js
@@ -0,0 +1,14 @@
+function test() {
+
+class C extends String {}
+var c = new C("golly");
+return c instanceof String
+  && c + '' === "golly"
+  && c[0] === "g"
+  && c.length === 5;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/new.target_assignment_is_an_early_error.js b/Source/JavaScriptCore/tests/es6/new.target_assignment_is_an_early_error.js
new file mode 100644
index 0000000..1676edf
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/new.target_assignment_is_an_early_error.js
@@ -0,0 +1,18 @@
+function test() {
+
+var passed = false;
+new function f() {
+  passed = (new.target === f);
+}();
+
+try {
+  Function("new.target = function(){};");
+} catch(e) {
+  return passed;
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/new.target_in_constructors.js b/Source/JavaScriptCore/tests/es6/new.target_in_constructors.js
new file mode 100644
index 0000000..a81926b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/new.target_in_constructors.js
@@ -0,0 +1,16 @@
+function test() {
+
+var passed = false;
+new function f() {
+  passed = (new.target === f);
+}();
+(function() {
+  passed &= (new.target === undefined);
+}());
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/non-strict_function_semantics_function_statements_in_if-statement_clauses.js b/Source/JavaScriptCore/tests/es6/non-strict_function_semantics_function_statements_in_if-statement_clauses.js
new file mode 100644
index 0000000..0599849
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/non-strict_function_semantics_function_statements_in_if-statement_clauses.js
@@ -0,0 +1,16 @@
+function test() {
+
+// Note: only available outside of strict mode.
+if (!this) return false;
+
+if(true) function foo() { return 2; }
+if(false) {} else function bar() { return 3; }
+if(true) function baz() { return 4; } else {}
+if(false) function qux() { return 5; } else function qux() { return 6; }
+return foo() === 2 && bar() === 3 && baz() === 4 && qux() === 6;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/non-strict_function_semantics_hoisted_block-level_function_declaration.js b/Source/JavaScriptCore/tests/es6/non-strict_function_semantics_hoisted_block-level_function_declaration.js
new file mode 100644
index 0000000..3fd94f4
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/non-strict_function_semantics_hoisted_block-level_function_declaration.js
@@ -0,0 +1,23 @@
+function test() {
+
+// Note: only available outside of strict mode.
+if (!this) return false;
+var passed = f() === 1;
+function f() { return 1; }
+
+passed &= typeof g === 'undefined';
+{ function g() { return 1; } }
+passed &= g() === 1;
+
+passed &= h() === 2;
+{ function h() { return 1; } }
+function h() { return 2; }
+passed &= h() === 1;
+
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/non-strict_function_semantics_labeled_function_statements.js b/Source/JavaScriptCore/tests/es6/non-strict_function_semantics_labeled_function_statements.js
new file mode 100644
index 0000000..e132ef6
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/non-strict_function_semantics_labeled_function_statements.js
@@ -0,0 +1,13 @@
+function test() {
+
+// Note: only available outside of strict mode.
+if (!this) return false;
+
+label: function foo() { return 2; }
+return foo() === 2;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/object_literal_extensions_computed_accessors.js b/Source/JavaScriptCore/tests/es6/object_literal_extensions_computed_accessors.js
new file mode 100644
index 0000000..db68e2b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/object_literal_extensions_computed_accessors.js
@@ -0,0 +1,16 @@
+function test() {
+
+var x = 'y',
+    valueSet,
+    obj = {
+      get [x] () { return 1 },
+      set [x] (value) { valueSet = value }
+    };
+obj.y = 'foo';
+return obj.y === 1 && valueSet === 'foo';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/object_literal_extensions_computed_properties.js b/Source/JavaScriptCore/tests/es6/object_literal_extensions_computed_properties.js
new file mode 100644
index 0000000..6a6a6f7
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/object_literal_extensions_computed_properties.js
@@ -0,0 +1,10 @@
+function test() {
+
+var x = 'y';
+return ({ [x]: 1 }).y === 1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/object_literal_extensions_computed_shorthand_methods.js b/Source/JavaScriptCore/tests/es6/object_literal_extensions_computed_shorthand_methods.js
new file mode 100644
index 0000000..e53ca15
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/object_literal_extensions_computed_shorthand_methods.js
@@ -0,0 +1,10 @@
+function test() {
+
+var x = 'y';
+return ({ [x](){ return 1 } }).y() === 1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/object_literal_extensions_shorthand_methods.js b/Source/JavaScriptCore/tests/es6/object_literal_extensions_shorthand_methods.js
new file mode 100644
index 0000000..d90f538
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/object_literal_extensions_shorthand_methods.js
@@ -0,0 +1,9 @@
+function test() {
+
+return ({ y() { return 2; } }).y() === 2;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/object_literal_extensions_shorthand_properties.js b/Source/JavaScriptCore/tests/es6/object_literal_extensions_shorthand_properties.js
new file mode 100644
index 0000000..33552ebc
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/object_literal_extensions_shorthand_properties.js
@@ -0,0 +1,10 @@
+function test() {
+
+var a = 7, b = 8, c = {a,b};
+return c.a === 7 && c.b === 8;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/object_literal_extensions_string-keyed_shorthand_methods.js b/Source/JavaScriptCore/tests/es6/object_literal_extensions_string-keyed_shorthand_methods.js
new file mode 100644
index 0000000..be95a3a
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/object_literal_extensions_string-keyed_shorthand_methods.js
@@ -0,0 +1,9 @@
+function test() {
+
+return ({ "foo bar"() { return 4; } })["foo bar"]() === 4;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/octal_and_binary_literals_binary_literals.js b/Source/JavaScriptCore/tests/es6/octal_and_binary_literals_binary_literals.js
new file mode 100644
index 0000000..d3a3d43
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/octal_and_binary_literals_binary_literals.js
@@ -0,0 +1,9 @@
+function test() {
+
+return 0b10 === 2 && 0B10 === 2;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/octal_and_binary_literals_binary_supported_by_Number.js b/Source/JavaScriptCore/tests/es6/octal_and_binary_literals_binary_supported_by_Number.js
new file mode 100644
index 0000000..b3be669
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/octal_and_binary_literals_binary_supported_by_Number.js
@@ -0,0 +1,9 @@
+function test() {
+
+return Number('0b1') === 1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/octal_and_binary_literals_octal_literals.js b/Source/JavaScriptCore/tests/es6/octal_and_binary_literals_octal_literals.js
new file mode 100644
index 0000000..6d6514b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/octal_and_binary_literals_octal_literals.js
@@ -0,0 +1,9 @@
+function test() {
+
+return 0o10 === 8 && 0O10 === 8;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/octal_and_binary_literals_octal_supported_by_Number.js b/Source/JavaScriptCore/tests/es6/octal_and_binary_literals_octal_supported_by_Number.js
new file mode 100644
index 0000000..ed7df58
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/octal_and_binary_literals_octal_supported_by_Number.js
@@ -0,0 +1,9 @@
+function test() {
+
+return Number('0o1') === 1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/own_property_order_JSON.parse.js b/Source/JavaScriptCore/tests/es6/own_property_order_JSON.parse.js
new file mode 100644
index 0000000..c2b53db
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/own_property_order_JSON.parse.js
@@ -0,0 +1,17 @@
+function test() {
+
+var result = '';
+JSON.parse(
+  '{"0":true,"1":true,"2":true,"3":true,"4":true,"9":true," ":true,"D":true,"B":true,"-1":true,"A":true,"C":true}',
+  function reviver(k,v) {
+    result += k;
+    return v;
+  }
+);
+return result === "012349 DB-1AC";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/own_property_order_JSON.stringify.js b/Source/JavaScriptCore/tests/es6/own_property_order_JSON.stringify.js
new file mode 100644
index 0000000..c40af95
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/own_property_order_JSON.stringify.js
@@ -0,0 +1,27 @@
+function test() {
+
+var obj = {
+  2:    true,
+  0:    true,
+  1:    true,
+  ' ':  true,
+  9:    true,
+  D:    true,
+  B:    true,
+  '-1': true,
+};
+obj.A = true;
+obj[3] = true;
+Object.defineProperty(obj, 'C', { value: true, enumerable: true });
+Object.defineProperty(obj, '4', { value: true, enumerable: true });
+delete obj[2];
+obj[2] = true;
+
+return JSON.stringify(obj) ===
+  '{"0":true,"1":true,"2":true,"3":true,"4":true,"9":true," ":true,"D":true,"B":true,"-1":true,"A":true,"C":true}';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/own_property_order_Object.assign.js b/Source/JavaScriptCore/tests/es6/own_property_order_Object.assign.js
new file mode 100644
index 0000000..46627a9
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/own_property_order_Object.assign.js
@@ -0,0 +1,36 @@
+function test() {
+
+function f(key) {
+  return {
+    get: function() { result += key; return true; },
+    set: Object,
+    enumerable: true
+  };
+};
+var result = '';
+var obj = Object.defineProperties({}, {
+  2:    f(2),
+  0:    f(0),
+  1:    f(1),
+  ' ':  f(' '),
+  9:    f(9),
+  D:    f('D'),
+  B:    f('B'),
+  '-1': f('-1'),
+});
+Object.defineProperty(obj,'A',f('A'));
+Object.defineProperty(obj,'3',f('3'));
+Object.defineProperty(obj,'C',f('C'));
+Object.defineProperty(obj,'4',f('4'));
+delete obj[2];
+obj[2] = true;
+
+Object.assign({}, obj);
+
+return result === "012349 DB-1AC";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/own_property_order_Object.getOwnPropertyNames.js b/Source/JavaScriptCore/tests/es6/own_property_order_Object.getOwnPropertyNames.js
new file mode 100644
index 0000000..dbb40d0
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/own_property_order_Object.getOwnPropertyNames.js
@@ -0,0 +1,26 @@
+function test() {
+
+var obj = {
+  2:    true,
+  0:    true,
+  1:    true,
+  ' ':  true,
+  9:    true,
+  D:    true,
+  B:    true,
+  '-1': true,
+};
+obj.A = true;
+obj[3] = true;
+Object.defineProperty(obj, 'C', { value: true, enumerable: true });
+Object.defineProperty(obj, '4', { value: true, enumerable: true });
+delete obj[2];
+obj[2] = true;
+
+return Object.getOwnPropertyNames(obj).join('') === "012349 DB-1AC";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/own_property_order_Object.keys.js b/Source/JavaScriptCore/tests/es6/own_property_order_Object.keys.js
new file mode 100644
index 0000000..1ba0ca4
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/own_property_order_Object.keys.js
@@ -0,0 +1,26 @@
+function test() {
+
+var obj = {
+  2:    true,
+  0:    true,
+  1:    true,
+  ' ':  true,
+  9:    true,
+  D:    true,
+  B:    true,
+  '-1': true,
+};
+obj.A = true;
+obj[3] = true;
+Object.defineProperty(obj, 'C', { value: true, enumerable: true });
+Object.defineProperty(obj, '4', { value: true, enumerable: true });
+delete obj[2];
+obj[2] = true;
+
+return Object.keys(obj).join('') === "012349 DB-1AC";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/own_property_order_Reflect.ownKeys_string_key_order.js b/Source/JavaScriptCore/tests/es6/own_property_order_Reflect.ownKeys_string_key_order.js
new file mode 100644
index 0000000..4f3db06
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/own_property_order_Reflect.ownKeys_string_key_order.js
@@ -0,0 +1,26 @@
+function test() {
+
+var obj = {
+  2:    true,
+  0:    true,
+  1:    true,
+  ' ':  true,
+  9:    true,
+  D:    true,
+  B:    true,
+  '-1': true,
+};
+obj.A = true;
+obj[3] = true;
+Object.defineProperty(obj, 'C', { value: true, enumerable: true });
+Object.defineProperty(obj, '4', { value: true, enumerable: true });
+delete obj[2];
+obj[2] = true;
+
+return Reflect.ownKeys(obj).join('') === "012349 DB-1AC";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/own_property_order_Reflect.ownKeys_symbol_key_order.js b/Source/JavaScriptCore/tests/es6/own_property_order_Reflect.ownKeys_symbol_key_order.js
new file mode 100644
index 0000000..f210d4c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/own_property_order_Reflect.ownKeys_symbol_key_order.js
@@ -0,0 +1,24 @@
+function test() {
+
+var sym1 = Symbol(), sym2 = Symbol(), sym3 = Symbol();
+var obj = {
+  1:    true,
+  A:    true,
+};
+obj.B = true;
+obj[sym1] = true;
+obj[2] = true;
+obj[sym2] = true;
+Object.defineProperty(obj, 'C', { value: true, enumerable: true });
+Object.defineProperty(obj, sym3,{ value: true, enumerable: true });
+Object.defineProperty(obj, 'D', { value: true, enumerable: true });
+
+var result = Reflect.ownKeys(obj);
+var l = result.length;
+return result[l-3] === sym1 && result[l-2] === sym2 && result[l-1] === sym3;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/own_property_order_for..in.js b/Source/JavaScriptCore/tests/es6/own_property_order_for..in.js
new file mode 100644
index 0000000..11da8b0
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/own_property_order_for..in.js
@@ -0,0 +1,30 @@
+function test() {
+
+var obj = {
+  2:    true,
+  0:    true,
+  1:    true,
+  ' ':  true,
+  9:    true,
+  D:    true,
+  B:    true,
+  '-1': true,
+};
+obj.A = true;
+obj[3] = true;
+Object.defineProperty(obj, 'C', { value: true, enumerable: true });
+Object.defineProperty(obj, '4', { value: true, enumerable: true });
+delete obj[2];
+obj[2] = true;
+
+var result = '';
+for(var i in obj) {
+  result += i;
+}
+return result === "012349 DB-1AC";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/proper_tail_calls_tail_call_optimisation_direct_recursion.js b/Source/JavaScriptCore/tests/es6/proper_tail_calls_tail_call_optimisation_direct_recursion.js
new file mode 100644
index 0000000..f5d20ac
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/proper_tail_calls_tail_call_optimisation_direct_recursion.js
@@ -0,0 +1,15 @@
+function test() {
+
+"use strict";
+return (function f(n){
+  if (n <= 0) {
+    return  "foo";
+  }
+  return f(n - 1);
+}(1e6)) === "foo";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/proper_tail_calls_tail_call_optimisation_mutual_recursion.js b/Source/JavaScriptCore/tests/es6/proper_tail_calls_tail_call_optimisation_mutual_recursion.js
new file mode 100644
index 0000000..568367c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/proper_tail_calls_tail_call_optimisation_mutual_recursion.js
@@ -0,0 +1,22 @@
+function test() {
+
+"use strict";
+function f(n){
+  if (n <= 0) {
+    return  "foo";
+  }
+  return g(n - 1);
+}
+function g(n){
+  if (n <= 0) {
+    return  "bar";
+  }
+  return f(n - 1);
+}
+return f(1e6) === "foo" && f(1e6+1) === "bar";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/prototype_of_bound_functions_arrow_functions.js b/Source/JavaScriptCore/tests/es6/prototype_of_bound_functions_arrow_functions.js
new file mode 100644
index 0000000..36298a0
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/prototype_of_bound_functions_arrow_functions.js
@@ -0,0 +1,22 @@
+function test() {
+
+function correctProtoBound(proto) {
+  var f = ()=>5;
+  if (Object.setPrototypeOf) {
+    Object.setPrototypeOf(f, proto);
+  }
+  else {
+    f.__proto__ = proto;
+  } 
+  var boundF = Function.prototype.bind.call(f, null);
+  return Object.getPrototypeOf(boundF) === proto;
+}
+return correctProtoBound(Function.prototype)
+  && correctProtoBound({})
+  && correctProtoBound(null);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/prototype_of_bound_functions_basic_functions.js b/Source/JavaScriptCore/tests/es6/prototype_of_bound_functions_basic_functions.js
new file mode 100644
index 0000000..9e2ced8
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/prototype_of_bound_functions_basic_functions.js
@@ -0,0 +1,22 @@
+function test() {
+
+function correctProtoBound(proto) {
+  var f = function(){};
+  if (Object.setPrototypeOf) {
+    Object.setPrototypeOf(f, proto);
+  }
+  else {
+    f.__proto__ = proto;
+  } 
+  var boundF = Function.prototype.bind.call(f, null);
+  return Object.getPrototypeOf(boundF) === proto;
+}
+return correctProtoBound(Function.prototype)
+  && correctProtoBound({})
+  && correctProtoBound(null);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/prototype_of_bound_functions_classes.js b/Source/JavaScriptCore/tests/es6/prototype_of_bound_functions_classes.js
new file mode 100644
index 0000000..f984e50
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/prototype_of_bound_functions_classes.js
@@ -0,0 +1,22 @@
+function test() {
+
+function correctProtoBound(proto) {
+  class C {}
+  if (Object.setPrototypeOf) {
+    Object.setPrototypeOf(C, proto);
+  }
+  else {
+    C.__proto__ = proto;
+  } 
+  var boundF = Function.prototype.bind.call(C, null);
+  return Object.getPrototypeOf(boundF) === proto;
+}
+return correctProtoBound(Function.prototype)
+  && correctProtoBound({})
+  && correctProtoBound(null);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/prototype_of_bound_functions_generator_functions.js b/Source/JavaScriptCore/tests/es6/prototype_of_bound_functions_generator_functions.js
new file mode 100644
index 0000000..9727499
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/prototype_of_bound_functions_generator_functions.js
@@ -0,0 +1,22 @@
+function test() {
+
+function correctProtoBound(proto) {
+  var f = function*(){};
+  if (Object.setPrototypeOf) {
+    Object.setPrototypeOf(f, proto);
+  }
+  else {
+    f.__proto__ = proto;
+  } 
+  var boundF = Function.prototype.bind.call(f, null);
+  return Object.getPrototypeOf(boundF) === proto;
+}
+return correctProtoBound(Function.prototype)
+  && correctProtoBound({})
+  && correctProtoBound(null);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/prototype_of_bound_functions_subclasses.js b/Source/JavaScriptCore/tests/es6/prototype_of_bound_functions_subclasses.js
new file mode 100644
index 0000000..a0be852
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/prototype_of_bound_functions_subclasses.js
@@ -0,0 +1,20 @@
+function test() {
+
+function correctProtoBound(superclass) {
+  class C extends superclass {
+    constructor() {
+      return Object.create(null);
+    }
+  }
+  var boundF = Function.prototype.bind.call(C, null);
+  return Object.getPrototypeOf(boundF) === Object.getPrototypeOf(C);
+}
+return correctProtoBound(function(){})
+  && correctProtoBound(Array)
+  && correctProtoBound(null);
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/rest_parameters_arguments_object_interaction.js b/Source/JavaScriptCore/tests/es6/rest_parameters_arguments_object_interaction.js
new file mode 100644
index 0000000..55d8656
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/rest_parameters_arguments_object_interaction.js
@@ -0,0 +1,17 @@
+function test() {
+
+return (function (foo, ...args) {
+  foo = "qux";
+  // The arguments object is not mapped to the
+  // parameters, even outside of strict mode.
+  return arguments.length === 3
+    && arguments[0] === "foo"
+    && arguments[1] === "bar"
+    && arguments[2] === "baz";
+}("foo", "bar", "baz"));
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/rest_parameters_basic_functionality.js b/Source/JavaScriptCore/tests/es6/rest_parameters_basic_functionality.js
new file mode 100644
index 0000000..4dd29cb
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/rest_parameters_basic_functionality.js
@@ -0,0 +1,11 @@
+function test() {
+
+return (function (foo, ...args) {
+  return args instanceof Array && args + "" === "bar,baz";
+}("foo", "bar", "baz"));
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/rest_parameters_cant_be_used_in_setters.js b/Source/JavaScriptCore/tests/es6/rest_parameters_cant_be_used_in_setters.js
new file mode 100644
index 0000000..f809259
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/rest_parameters_cant_be_used_in_setters.js
@@ -0,0 +1,15 @@
+function test() {
+
+return (function (...args) {
+  try {
+    eval("({set e(...args){}})");
+  } catch(e) {
+    return true;
+  }
+}());
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/rest_parameters_function_length_property.js b/Source/JavaScriptCore/tests/es6/rest_parameters_function_length_property.js
new file mode 100644
index 0000000..394bd84
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/rest_parameters_function_length_property.js
@@ -0,0 +1,9 @@
+function test() {
+
+return function(a, ...b){}.length === 1 && function(...c){}.length === 0;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/rest_parameters_new_Function_support.js b/Source/JavaScriptCore/tests/es6/rest_parameters_new_Function_support.js
new file mode 100644
index 0000000..30e4e05b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/rest_parameters_new_Function_support.js
@@ -0,0 +1,11 @@
+function test() {
+
+return new Function("a", "...b",
+  "return b instanceof Array && a+b === 'foobar,baz';"
+)('foo','bar','baz');
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/spread_..._operator_spreading_non-iterables_is_a_runtime_error.js b/Source/JavaScriptCore/tests/es6/spread_..._operator_spreading_non-iterables_is_a_runtime_error.js
new file mode 100644
index 0000000..78047d0
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/spread_..._operator_spreading_non-iterables_is_a_runtime_error.js
@@ -0,0 +1,13 @@
+function test() {
+
+try {
+  Math.max(...2);
+} catch(e) {
+  return Math.max(...[1, 2, 3]) === 3;
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/spread_..._operator_with_arrays_in_array_literals.js b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_arrays_in_array_literals.js
new file mode 100644
index 0000000..10a1ad2
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_arrays_in_array_literals.js
@@ -0,0 +1,9 @@
+function test() {
+
+return [...[1, 2, 3]][2] === 3;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/spread_..._operator_with_arrays_in_function_calls.js b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_arrays_in_function_calls.js
new file mode 100644
index 0000000..3c200da
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_arrays_in_function_calls.js
@@ -0,0 +1,9 @@
+function test() {
+
+return Math.max(...[1, 2, 3]) === 3
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/spread_..._operator_with_astral_plane_strings_in_array_literals.js b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_astral_plane_strings_in_array_literals.js
new file mode 100644
index 0000000..62d95a8
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_astral_plane_strings_in_array_literals.js
@@ -0,0 +1,9 @@
+function test() {
+
+return [..."𠮷𠮶"][0] === "𠮷";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/spread_..._operator_with_astral_plane_strings_in_function_calls.js b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_astral_plane_strings_in_function_calls.js
new file mode 100644
index 0000000..c9b5fc9
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_astral_plane_strings_in_function_calls.js
@@ -0,0 +1,9 @@
+function test() {
+
+return Array(..."𠮷𠮶")[0] === "𠮷";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/spread_..._operator_with_generator_instances_in_arrays.js b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_generator_instances_in_arrays.js
new file mode 100644
index 0000000..c386f27
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_generator_instances_in_arrays.js
@@ -0,0 +1,10 @@
+function test() {
+
+var iterable = (function*(){ yield "b"; yield "c"; yield "d"; }());
+return ["a", ...iterable, "e"][3] === "d";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/spread_..._operator_with_generator_instances_in_calls.js b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_generator_instances_in_calls.js
new file mode 100644
index 0000000..67207ad
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_generator_instances_in_calls.js
@@ -0,0 +1,10 @@
+function test() {
+
+var iterable = (function*(){ yield 1; yield 2; yield 3; }());
+return Math.max(...iterable) === 3;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/spread_..._operator_with_generic_iterables_in_arrays.js b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_generic_iterables_in_arrays.js
new file mode 100644
index 0000000..4e9a648
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_generic_iterables_in_arrays.js
@@ -0,0 +1,10 @@
+function test() {
+
+var iterable = global.__createIterableObject(["b", "c", "d"]);
+return ["a", ...iterable, "e"][3] === "d";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/spread_..._operator_with_generic_iterables_in_calls.js b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_generic_iterables_in_calls.js
new file mode 100644
index 0000000..35a1081
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_generic_iterables_in_calls.js
@@ -0,0 +1,10 @@
+function test() {
+
+var iterable = global.__createIterableObject([1, 2, 3]);
+return Math.max(...iterable) === 3;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/spread_..._operator_with_instances_of_iterables_in_arrays.js b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_instances_of_iterables_in_arrays.js
new file mode 100644
index 0000000..22d6984c2
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_instances_of_iterables_in_arrays.js
@@ -0,0 +1,10 @@
+function test() {
+
+var iterable = global.__createIterableObject(["b", "c", "d"]);
+return ["a", ...Object.create(iterable), "e"][3] === "d";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/spread_..._operator_with_instances_of_iterables_in_calls.js b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_instances_of_iterables_in_calls.js
new file mode 100644
index 0000000..9d2118b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_instances_of_iterables_in_calls.js
@@ -0,0 +1,10 @@
+function test() {
+
+var iterable = global.__createIterableObject([1, 2, 3]);
+return Math.max(...Object.create(iterable)) === 3;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/spread_..._operator_with_sparse_arrays_in_array_literals.js b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_sparse_arrays_in_array_literals.js
new file mode 100644
index 0000000..3883f46
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_sparse_arrays_in_array_literals.js
@@ -0,0 +1,10 @@
+function test() {
+
+var a = [...[,,]];
+return "0" in a && "1" in a && '' + a[0] + a[1] === "undefinedundefined";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/spread_..._operator_with_sparse_arrays_in_function_calls.js b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_sparse_arrays_in_function_calls.js
new file mode 100644
index 0000000..ef1c408
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_sparse_arrays_in_function_calls.js
@@ -0,0 +1,10 @@
+function test() {
+
+var a = Array(...[,,]);
+return "0" in a && "1" in a && '' + a[0] + a[1] === "undefinedundefined";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/spread_..._operator_with_strings_in_array_literals.js b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_strings_in_array_literals.js
new file mode 100644
index 0000000..ab10a82
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_strings_in_array_literals.js
@@ -0,0 +1,9 @@
+function test() {
+
+return ["a", ..."bcd", "e"][3] === "d";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/spread_..._operator_with_strings_in_function_calls.js b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_strings_in_function_calls.js
new file mode 100644
index 0000000..27e9a39
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/spread_..._operator_with_strings_in_function_calls.js
@@ -0,0 +1,9 @@
+function test() {
+
+return Math.max(..."1234") === 4;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/super_constructor_calls_use_correct_new.target_binding.js b/Source/JavaScriptCore/tests/es6/super_constructor_calls_use_correct_new.target_binding.js
new file mode 100644
index 0000000..1b91616
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/super_constructor_calls_use_correct_new.target_binding.js
@@ -0,0 +1,17 @@
+function test() {
+
+var passed;
+class B {
+  constructor() { passed = (new.target === C); }
+}
+class C extends B {
+  constructor() { super(); }
+}
+new C();
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/super_expression_in_constructors.js b/Source/JavaScriptCore/tests/es6/super_expression_in_constructors.js
new file mode 100644
index 0000000..514e7c2
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/super_expression_in_constructors.js
@@ -0,0 +1,15 @@
+function test() {
+
+class B {
+  constructor(a) { return ["foo" + a]; }
+}
+class C extends B {
+  constructor(a) { return super("bar" + a); }
+}
+return new C("baz")[0] === "foobarbaz";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/super_in_methods_method_calls.js b/Source/JavaScriptCore/tests/es6/super_in_methods_method_calls.js
new file mode 100644
index 0000000..bd37887
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/super_in_methods_method_calls.js
@@ -0,0 +1,15 @@
+function test() {
+
+class B {
+  qux(a) { return "foo" + a; }
+}
+class C extends B {
+  qux(a) { return super.qux("bar" + a); }
+}
+return new C().qux("baz") === "foobarbaz";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/super_in_methods_property_access.js b/Source/JavaScriptCore/tests/es6/super_in_methods_property_access.js
new file mode 100644
index 0000000..f6c651d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/super_in_methods_property_access.js
@@ -0,0 +1,16 @@
+function test() {
+
+class B {}
+B.prototype.qux = "foo";
+B.prototype.corge = "baz";
+class C extends B {
+  quux(a) { return super.qux + a + super["corge"]; }
+}
+C.prototype.qux = "garply";
+return new C().quux("bar") === "foobarbaz";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/super_is_statically_bound.js b/Source/JavaScriptCore/tests/es6/super_is_statically_bound.js
new file mode 100644
index 0000000..0a73ebe
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/super_is_statically_bound.js
@@ -0,0 +1,19 @@
+function test() {
+
+class B {
+  qux() { return "bar"; }
+}
+class C extends B {
+  qux() { return super.qux() + this.corge; }
+}
+var obj = {
+  qux: C.prototype.qux,
+  corge: "ley"
+};
+return obj.qux() === "barley";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/super_method_calls_use_correct_this_binding.js b/Source/JavaScriptCore/tests/es6/super_method_calls_use_correct_this_binding.js
new file mode 100644
index 0000000..a0924bd
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/super_method_calls_use_correct_this_binding.js
@@ -0,0 +1,17 @@
+function test() {
+
+class B {
+  qux(a) { return this.foo + a; }
+}
+class C extends B {
+  qux(a) { return super.qux("bar" + a); }
+}
+var obj = new C();
+obj.foo = "foo";
+return obj.qux("baz") === "foobarbaz";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/super_statement_in_constructors.js b/Source/JavaScriptCore/tests/es6/super_statement_in_constructors.js
new file mode 100644
index 0000000..a3f1218
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/super_statement_in_constructors.js
@@ -0,0 +1,17 @@
+function test() {
+
+var passed = false;
+class B {
+  constructor(a) { passed = (a === "barbaz"); }
+}
+class C extends B {
+  constructor(a) { super("bar" + a); }
+}
+new C("baz");
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/template_strings_basic_functionality.js b/Source/JavaScriptCore/tests/es6/template_strings_basic_functionality.js
new file mode 100644
index 0000000..865810a
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/template_strings_basic_functionality.js
@@ -0,0 +1,11 @@
+function test() {
+
+var a = "ba", b = "QUX";
+return `foo bar
+${a + "z"} ${b.toLowerCase()}` === "foo bar\nbaz qux";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/template_strings_line_break_normalisation.js b/Source/JavaScriptCore/tests/es6/template_strings_line_break_normalisation.js
new file mode 100644
index 0000000..9f0f8fb
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/template_strings_line_break_normalisation.js
@@ -0,0 +1,14 @@
+function test() {
+
+var cr   = eval("`x" + String.fromCharCode(13)    + "y`");
+var lf   = eval("`x" + String.fromCharCode(10)    + "y`");
+var crlf = eval("`x" + String.fromCharCode(13,10) + "y`");
+
+return cr.length === 3 && lf.length === 3 && crlf.length === 3
+  && cr[1] === lf[1] && lf[1] === crlf[1] && crlf[1] === '\n';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/template_strings_passed_array_is_frozen.js b/Source/JavaScriptCore/tests/es6/template_strings_passed_array_is_frozen.js
new file mode 100644
index 0000000..9957c4e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/template_strings_passed_array_is_frozen.js
@@ -0,0 +1,11 @@
+function test() {
+
+return (function(parts) {
+  return Object.isFrozen(parts) && Object.isFrozen(parts.raw);
+}) `foo${0}bar${0}baz`;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/template_strings_tagged_template_strings.js b/Source/JavaScriptCore/tests/es6/template_strings_tagged_template_strings.js
new file mode 100644
index 0000000..9db083a
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/template_strings_tagged_template_strings.js
@@ -0,0 +1,20 @@
+function test() {
+
+var called = false;
+function fn(parts, a, b) {
+  called = true;
+  return parts instanceof Array &&
+    parts[0]     === "foo"      &&
+    parts[1]     === "bar\n"    &&
+    parts.raw[0] === "foo"      &&
+    parts.raw[1] === "bar\\n"   &&
+    a === 123                   &&
+    b === 456;
+}
+return fn `foo${123}bar\n${456}` && called;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/template_strings_toString_conversion.js b/Source/JavaScriptCore/tests/es6/template_strings_toString_conversion.js
new file mode 100644
index 0000000..8dddb62
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/template_strings_toString_conversion.js
@@ -0,0 +1,13 @@
+function test() {
+
+var a = {
+  toString: function() { return "foo"; },
+  valueOf: function() { return "bar"; },
+};
+return `${a}` === "foo";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.from.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.from.js
new file mode 100644
index 0000000..3d6d006
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.from.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.from === "function" &&
+  typeof Uint8Array.from === "function" &&
+  typeof Uint8ClampedArray.from === "function" &&
+  typeof Int16Array.from === "function" &&
+  typeof Uint16Array.from === "function" &&
+  typeof Int32Array.from === "function" &&
+  typeof Uint32Array.from === "function" &&
+  typeof Float32Array.from === "function" &&
+  typeof Float64Array.from === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.of.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.of.js
new file mode 100644
index 0000000..92f2419
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.of.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.of === "function" &&
+  typeof Uint8Array.of === "function" &&
+  typeof Uint8ClampedArray.of === "function" &&
+  typeof Int16Array.of === "function" &&
+  typeof Uint16Array.of === "function" &&
+  typeof Int32Array.of === "function" &&
+  typeof Uint32Array.of === "function" &&
+  typeof Float32Array.of === "function" &&
+  typeof Float64Array.of === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.copyWithin.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.copyWithin.js
new file mode 100644
index 0000000..2430505
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.copyWithin.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.prototype.copyWithin === "function" &&
+  typeof Uint8Array.prototype.copyWithin === "function" &&
+  typeof Uint8ClampedArray.prototype.copyWithin === "function" &&
+  typeof Int16Array.prototype.copyWithin === "function" &&
+  typeof Uint16Array.prototype.copyWithin === "function" &&
+  typeof Int32Array.prototype.copyWithin === "function" &&
+  typeof Uint32Array.prototype.copyWithin === "function" &&
+  typeof Float32Array.prototype.copyWithin === "function" &&
+  typeof Float64Array.prototype.copyWithin === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.entries.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.entries.js
new file mode 100644
index 0000000..9cafb06
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.entries.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.prototype.entries === "function" &&
+  typeof Uint8Array.prototype.entries === "function" &&
+  typeof Uint8ClampedArray.prototype.entries === "function" &&
+  typeof Int16Array.prototype.entries === "function" &&
+  typeof Uint16Array.prototype.entries === "function" &&
+  typeof Int32Array.prototype.entries === "function" &&
+  typeof Uint32Array.prototype.entries === "function" &&
+  typeof Float32Array.prototype.entries === "function" &&
+  typeof Float64Array.prototype.entries === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.every.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.every.js
new file mode 100644
index 0000000..0c59641
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.every.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.prototype.every === "function" &&
+  typeof Uint8Array.prototype.every === "function" &&
+  typeof Uint8ClampedArray.prototype.every === "function" &&
+  typeof Int16Array.prototype.every === "function" &&
+  typeof Uint16Array.prototype.every === "function" &&
+  typeof Int32Array.prototype.every === "function" &&
+  typeof Uint32Array.prototype.every === "function" &&
+  typeof Float32Array.prototype.every === "function" &&
+  typeof Float64Array.prototype.every === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.fill.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.fill.js
new file mode 100644
index 0000000..4f3ef6c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.fill.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.prototype.fill === "function" &&
+  typeof Uint8Array.prototype.fill === "function" &&
+  typeof Uint8ClampedArray.prototype.fill === "function" &&
+  typeof Int16Array.prototype.fill === "function" &&
+  typeof Uint16Array.prototype.fill === "function" &&
+  typeof Int32Array.prototype.fill === "function" &&
+  typeof Uint32Array.prototype.fill === "function" &&
+  typeof Float32Array.prototype.fill === "function" &&
+  typeof Float64Array.prototype.fill === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.filter.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.filter.js
new file mode 100644
index 0000000..3b6b8ca
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.filter.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.prototype.filter === "function" &&
+  typeof Uint8Array.prototype.filter === "function" &&
+  typeof Uint8ClampedArray.prototype.filter === "function" &&
+  typeof Int16Array.prototype.filter === "function" &&
+  typeof Uint16Array.prototype.filter === "function" &&
+  typeof Int32Array.prototype.filter === "function" &&
+  typeof Uint32Array.prototype.filter === "function" &&
+  typeof Float32Array.prototype.filter === "function" &&
+  typeof Float64Array.prototype.filter === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.find.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.find.js
new file mode 100644
index 0000000..d47040d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.find.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.prototype.find === "function" &&
+  typeof Uint8Array.prototype.find === "function" &&
+  typeof Uint8ClampedArray.prototype.find === "function" &&
+  typeof Int16Array.prototype.find === "function" &&
+  typeof Uint16Array.prototype.find === "function" &&
+  typeof Int32Array.prototype.find === "function" &&
+  typeof Uint32Array.prototype.find === "function" &&
+  typeof Float32Array.prototype.find === "function" &&
+  typeof Float64Array.prototype.find === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.findIndex.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.findIndex.js
new file mode 100644
index 0000000..acb1294
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.findIndex.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.prototype.findIndex === "function" &&
+  typeof Uint8Array.prototype.findIndex === "function" &&
+  typeof Uint8ClampedArray.prototype.findIndex === "function" &&
+  typeof Int16Array.prototype.findIndex === "function" &&
+  typeof Uint16Array.prototype.findIndex === "function" &&
+  typeof Int32Array.prototype.findIndex === "function" &&
+  typeof Uint32Array.prototype.findIndex === "function" &&
+  typeof Float32Array.prototype.findIndex === "function" &&
+  typeof Float64Array.prototype.findIndex === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.forEach.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.forEach.js
new file mode 100644
index 0000000..47775ed
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.forEach.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.prototype.forEach === "function" &&
+  typeof Uint8Array.prototype.forEach === "function" &&
+  typeof Uint8ClampedArray.prototype.forEach === "function" &&
+  typeof Int16Array.prototype.forEach === "function" &&
+  typeof Uint16Array.prototype.forEach === "function" &&
+  typeof Int32Array.prototype.forEach === "function" &&
+  typeof Uint32Array.prototype.forEach === "function" &&
+  typeof Float32Array.prototype.forEach === "function" &&
+  typeof Float64Array.prototype.forEach === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.indexOf.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.indexOf.js
new file mode 100644
index 0000000..9a209f4
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.indexOf.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.prototype.indexOf === "function" &&
+  typeof Uint8Array.prototype.indexOf === "function" &&
+  typeof Uint8ClampedArray.prototype.indexOf === "function" &&
+  typeof Int16Array.prototype.indexOf === "function" &&
+  typeof Uint16Array.prototype.indexOf === "function" &&
+  typeof Int32Array.prototype.indexOf === "function" &&
+  typeof Uint32Array.prototype.indexOf === "function" &&
+  typeof Float32Array.prototype.indexOf === "function" &&
+  typeof Float64Array.prototype.indexOf === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.join.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.join.js
new file mode 100644
index 0000000..f8eaf8b
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.join.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.prototype.join === "function" &&
+  typeof Uint8Array.prototype.join === "function" &&
+  typeof Uint8ClampedArray.prototype.join === "function" &&
+  typeof Int16Array.prototype.join === "function" &&
+  typeof Uint16Array.prototype.join === "function" &&
+  typeof Int32Array.prototype.join === "function" &&
+  typeof Uint32Array.prototype.join === "function" &&
+  typeof Float32Array.prototype.join === "function" &&
+  typeof Float64Array.prototype.join === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.keys.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.keys.js
new file mode 100644
index 0000000..e14a9c7
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.keys.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.prototype.keys === "function" &&
+  typeof Uint8Array.prototype.keys === "function" &&
+  typeof Uint8ClampedArray.prototype.keys === "function" &&
+  typeof Int16Array.prototype.keys === "function" &&
+  typeof Uint16Array.prototype.keys === "function" &&
+  typeof Int32Array.prototype.keys === "function" &&
+  typeof Uint32Array.prototype.keys === "function" &&
+  typeof Float32Array.prototype.keys === "function" &&
+  typeof Float64Array.prototype.keys === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.lastIndexOf.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.lastIndexOf.js
new file mode 100644
index 0000000..01955d1
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.lastIndexOf.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.prototype.lastIndexOf === "function" &&
+  typeof Uint8Array.prototype.lastIndexOf === "function" &&
+  typeof Uint8ClampedArray.prototype.lastIndexOf === "function" &&
+  typeof Int16Array.prototype.lastIndexOf === "function" &&
+  typeof Uint16Array.prototype.lastIndexOf === "function" &&
+  typeof Int32Array.prototype.lastIndexOf === "function" &&
+  typeof Uint32Array.prototype.lastIndexOf === "function" &&
+  typeof Float32Array.prototype.lastIndexOf === "function" &&
+  typeof Float64Array.prototype.lastIndexOf === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.map.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.map.js
new file mode 100644
index 0000000..d4d2992
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.map.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.prototype.map === "function" &&
+  typeof Uint8Array.prototype.map === "function" &&
+  typeof Uint8ClampedArray.prototype.map === "function" &&
+  typeof Int16Array.prototype.map === "function" &&
+  typeof Uint16Array.prototype.map === "function" &&
+  typeof Int32Array.prototype.map === "function" &&
+  typeof Uint32Array.prototype.map === "function" &&
+  typeof Float32Array.prototype.map === "function" &&
+  typeof Float64Array.prototype.map === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.reduce.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.reduce.js
new file mode 100644
index 0000000..e7ba0a4
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.reduce.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.prototype.reduce === "function" &&
+  typeof Uint8Array.prototype.reduce === "function" &&
+  typeof Uint8ClampedArray.prototype.reduce === "function" &&
+  typeof Int16Array.prototype.reduce === "function" &&
+  typeof Uint16Array.prototype.reduce === "function" &&
+  typeof Int32Array.prototype.reduce === "function" &&
+  typeof Uint32Array.prototype.reduce === "function" &&
+  typeof Float32Array.prototype.reduce === "function" &&
+  typeof Float64Array.prototype.reduce === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.reduceRight.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.reduceRight.js
new file mode 100644
index 0000000..23cb2c7
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.reduceRight.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.prototype.reduceRight === "function" &&
+  typeof Uint8Array.prototype.reduceRight === "function" &&
+  typeof Uint8ClampedArray.prototype.reduceRight === "function" &&
+  typeof Int16Array.prototype.reduceRight === "function" &&
+  typeof Uint16Array.prototype.reduceRight === "function" &&
+  typeof Int32Array.prototype.reduceRight === "function" &&
+  typeof Uint32Array.prototype.reduceRight === "function" &&
+  typeof Float32Array.prototype.reduceRight === "function" &&
+  typeof Float64Array.prototype.reduceRight === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.reverse.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.reverse.js
new file mode 100644
index 0000000..a0b903e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.reverse.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.prototype.reverse === "function" &&
+  typeof Uint8Array.prototype.reverse === "function" &&
+  typeof Uint8ClampedArray.prototype.reverse === "function" &&
+  typeof Int16Array.prototype.reverse === "function" &&
+  typeof Uint16Array.prototype.reverse === "function" &&
+  typeof Int32Array.prototype.reverse === "function" &&
+  typeof Uint32Array.prototype.reverse === "function" &&
+  typeof Float32Array.prototype.reverse === "function" &&
+  typeof Float64Array.prototype.reverse === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.slice.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.slice.js
new file mode 100644
index 0000000..b7a9b76
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.slice.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.prototype.slice === "function" &&
+  typeof Uint8Array.prototype.slice === "function" &&
+  typeof Uint8ClampedArray.prototype.slice === "function" &&
+  typeof Int16Array.prototype.slice === "function" &&
+  typeof Uint16Array.prototype.slice === "function" &&
+  typeof Int32Array.prototype.slice === "function" &&
+  typeof Uint32Array.prototype.slice === "function" &&
+  typeof Float32Array.prototype.slice === "function" &&
+  typeof Float64Array.prototype.slice === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.some.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.some.js
new file mode 100644
index 0000000..bfbb141
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.some.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.prototype.some === "function" &&
+  typeof Uint8Array.prototype.some === "function" &&
+  typeof Uint8ClampedArray.prototype.some === "function" &&
+  typeof Int16Array.prototype.some === "function" &&
+  typeof Uint16Array.prototype.some === "function" &&
+  typeof Int32Array.prototype.some === "function" &&
+  typeof Uint32Array.prototype.some === "function" &&
+  typeof Float32Array.prototype.some === "function" &&
+  typeof Float64Array.prototype.some === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.sort.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.sort.js
new file mode 100644
index 0000000..bb4feb6
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.sort.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.prototype.sort === "function" &&
+  typeof Uint8Array.prototype.sort === "function" &&
+  typeof Uint8ClampedArray.prototype.sort === "function" &&
+  typeof Int16Array.prototype.sort === "function" &&
+  typeof Uint16Array.prototype.sort === "function" &&
+  typeof Int32Array.prototype.sort === "function" &&
+  typeof Uint32Array.prototype.sort === "function" &&
+  typeof Float32Array.prototype.sort === "function" &&
+  typeof Float64Array.prototype.sort === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.subarray.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.subarray.js
new file mode 100644
index 0000000..ca7a65c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.subarray.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.prototype.subarray === "function" &&
+  typeof Uint8Array.prototype.subarray === "function" &&
+  typeof Uint8ClampedArray.prototype.subarray === "function" &&
+  typeof Int16Array.prototype.subarray === "function" &&
+  typeof Uint16Array.prototype.subarray === "function" &&
+  typeof Int32Array.prototype.subarray === "function" &&
+  typeof Uint32Array.prototype.subarray === "function" &&
+  typeof Float32Array.prototype.subarray === "function" &&
+  typeof Float64Array.prototype.subarray === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.values.js b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.values.js
new file mode 100644
index 0000000..862e97f
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype.values.js
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.prototype.values === "function" &&
+  typeof Uint8Array.prototype.values === "function" &&
+  typeof Uint8ClampedArray.prototype.values === "function" &&
+  typeof Int16Array.prototype.values === "function" &&
+  typeof Uint16Array.prototype.values === "function" &&
+  typeof Int32Array.prototype.values === "function" &&
+  typeof Uint32Array.prototype.values === "function" &&
+  typeof Float32Array.prototype.values === "function" &&
+  typeof Float64Array.prototype.values === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype\133Symbol.iterator\135.js" "b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype\133Symbol.iterator\135.js"
new file mode 100644
index 0000000..50037ad
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%.prototype\133Symbol.iterator\135.js"
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array.prototype[Symbol.iterator] === "function" &&
+  typeof Uint8Array.prototype[Symbol.iterator] === "function" &&
+  typeof Uint8ClampedArray.prototype[Symbol.iterator] === "function" &&
+  typeof Int16Array.prototype[Symbol.iterator] === "function" &&
+  typeof Uint16Array.prototype[Symbol.iterator] === "function" &&
+  typeof Int32Array.prototype[Symbol.iterator] === "function" &&
+  typeof Uint32Array.prototype[Symbol.iterator] === "function" &&
+  typeof Float32Array.prototype[Symbol.iterator] === "function" &&
+  typeof Float64Array.prototype[Symbol.iterator] === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%\133Symbol.species\135.js" "b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%\133Symbol.species\135.js"
new file mode 100644
index 0000000..58e99d7
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/typed_arrays_%TypedArray%\133Symbol.species\135.js"
@@ -0,0 +1,17 @@
+function test() {
+
+return typeof Int8Array[Symbol.species] === "function" &&
+  typeof Uint8Array[Symbol.species] === "function" &&
+  typeof Uint8ClampedArray[Symbol.species] === "function" &&
+  typeof Int16Array[Symbol.species] === "function" &&
+  typeof Uint16Array[Symbol.species] === "function" &&
+  typeof Int32Array[Symbol.species] === "function" &&
+  typeof Uint32Array[Symbol.species] === "function" &&
+  typeof Float32Array[Symbol.species] === "function" &&
+  typeof Float64Array[Symbol.species] === "function";
+
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/typed_arrays_ArrayBuffer\133Symbol.species\135.js" "b/Source/JavaScriptCore/tests/es6/typed_arrays_ArrayBuffer\133Symbol.species\135.js"
new file mode 100644
index 0000000..e8e524e
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/typed_arrays_ArrayBuffer\133Symbol.species\135.js"
@@ -0,0 +1,9 @@
+function test() {
+
+return typeof ArrayBuffer[Symbol.species] === 'function';
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Float32.js b/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Float32.js
new file mode 100644
index 0000000..26fcefd
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Float32.js
@@ -0,0 +1,12 @@
+function test() {
+
+var buffer = new ArrayBuffer(64);
+var view = new DataView(buffer);
+view.setFloat32(0, 0.1);
+return view.getFloat32(0) === 0.10000000149011612;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Float64.js b/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Float64.js
new file mode 100644
index 0000000..2cc2606
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Float64.js
@@ -0,0 +1,12 @@
+function test() {
+
+var buffer = new ArrayBuffer(64);
+var view = new DataView(buffer);
+view.setFloat64(0, 0.1);
+return view.getFloat64(0) === 0.1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Int16.js b/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Int16.js
new file mode 100644
index 0000000..cc795df
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Int16.js
@@ -0,0 +1,12 @@
+function test() {
+
+var buffer = new ArrayBuffer(64);
+var view = new DataView(buffer);
+view.setInt16(0, 0x8000);
+return view.getInt16(0) === -0x8000;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Int32.js b/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Int32.js
new file mode 100644
index 0000000..98a6539
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Int32.js
@@ -0,0 +1,12 @@
+function test() {
+
+var buffer = new ArrayBuffer(64);
+var view = new DataView(buffer);
+view.setInt32(0, 0x80000000);
+return view.getInt32(0) === -0x80000000;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Int8.js b/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Int8.js
new file mode 100644
index 0000000..c4ad9c9
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Int8.js
@@ -0,0 +1,12 @@
+function test() {
+
+var buffer = new ArrayBuffer(64);
+var view = new DataView(buffer);
+view.setInt8 (0, 0x80);
+return view.getInt8(0) === -0x80;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Uint16.js b/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Uint16.js
new file mode 100644
index 0000000..809fafa
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Uint16.js
@@ -0,0 +1,12 @@
+function test() {
+
+var buffer = new ArrayBuffer(64);
+var view = new DataView(buffer);
+view.setUint16(0, 0x10000);
+return view.getUint16(0) === 0;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Uint32.js b/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Uint32.js
new file mode 100644
index 0000000..fc77f10
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Uint32.js
@@ -0,0 +1,12 @@
+function test() {
+
+var buffer = new ArrayBuffer(64);
+var view = new DataView(buffer);
+view.setUint32(0, 0x100000000);
+return view.getUint32(0) === 0;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Uint8.js b/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Uint8.js
new file mode 100644
index 0000000..71f18bb
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_DataView_Uint8.js
@@ -0,0 +1,12 @@
+function test() {
+
+var buffer = new ArrayBuffer(64);
+var view = new DataView(buffer);
+view.setUint8(0, 0x100);
+return view.getUint8(0) === 0;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_Float32Array.js b/Source/JavaScriptCore/tests/es6/typed_arrays_Float32Array.js
new file mode 100644
index 0000000..2b507b3
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_Float32Array.js
@@ -0,0 +1,11 @@
+function test() {
+
+var buffer = new ArrayBuffer(64);
+var view = new Float32Array(buffer);       view[0] = 0.1;
+return view[0] === 0.10000000149011612;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_Float64Array.js b/Source/JavaScriptCore/tests/es6/typed_arrays_Float64Array.js
new file mode 100644
index 0000000..30df5eb
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_Float64Array.js
@@ -0,0 +1,11 @@
+function test() {
+
+var buffer = new ArrayBuffer(64);
+var view = new Float64Array(buffer);       view[0] = 0.1;
+return view[0] === 0.1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_Int16Array.js b/Source/JavaScriptCore/tests/es6/typed_arrays_Int16Array.js
new file mode 100644
index 0000000..db01397
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_Int16Array.js
@@ -0,0 +1,11 @@
+function test() {
+
+var buffer = new ArrayBuffer(64);
+var view = new Int16Array(buffer);        view[0] = 0x8000;
+return view[0] === -0x8000;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_Int32Array.js b/Source/JavaScriptCore/tests/es6/typed_arrays_Int32Array.js
new file mode 100644
index 0000000..3bc6612
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_Int32Array.js
@@ -0,0 +1,11 @@
+function test() {
+
+var buffer = new ArrayBuffer(64);
+var view = new Int32Array(buffer);        view[0] = 0x80000000;
+return view[0] === -0x80000000;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_Int8Array.js b/Source/JavaScriptCore/tests/es6/typed_arrays_Int8Array.js
new file mode 100644
index 0000000..d7e08b1
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_Int8Array.js
@@ -0,0 +1,11 @@
+function test() {
+
+var buffer = new ArrayBuffer(64);
+var view = new Int8Array(buffer);         view[0] = 0x80;
+return view[0] === -0x80;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_Uint16Array.js b/Source/JavaScriptCore/tests/es6/typed_arrays_Uint16Array.js
new file mode 100644
index 0000000..d9b63d8
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_Uint16Array.js
@@ -0,0 +1,11 @@
+function test() {
+
+var buffer = new ArrayBuffer(64);
+var view = new Uint16Array(buffer);       view[0] = 0x10000;
+return view[0] === 0;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_Uint32Array.js b/Source/JavaScriptCore/tests/es6/typed_arrays_Uint32Array.js
new file mode 100644
index 0000000..02f24f7
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_Uint32Array.js
@@ -0,0 +1,11 @@
+function test() {
+
+var buffer = new ArrayBuffer(64);
+var view = new Uint32Array(buffer);       view[0] = 0x100000000;
+return view[0] === 0;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_Uint8Array.js b/Source/JavaScriptCore/tests/es6/typed_arrays_Uint8Array.js
new file mode 100644
index 0000000..3aceb3a
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_Uint8Array.js
@@ -0,0 +1,11 @@
+function test() {
+
+var buffer = new ArrayBuffer(64);
+var view = new Uint8Array(buffer);        view[0] = 0x100;
+return view[0] === 0;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_Uint8ClampedArray.js b/Source/JavaScriptCore/tests/es6/typed_arrays_Uint8ClampedArray.js
new file mode 100644
index 0000000..cd2e60a6
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_Uint8ClampedArray.js
@@ -0,0 +1,11 @@
+function test() {
+
+var buffer = new ArrayBuffer(64);
+var view = new Uint8ClampedArray(buffer); view[0] = 0x100;
+return view[0] === 0xFF;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_constructors_require_new.js b/Source/JavaScriptCore/tests/es6/typed_arrays_constructors_require_new.js
new file mode 100644
index 0000000..5813bf6
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_constructors_require_new.js
@@ -0,0 +1,32 @@
+function test() {
+
+var buffer = new ArrayBuffer(64);
+var constructors = [
+  'ArrayBuffer',
+  'DataView',
+  'Int8Array',
+  'Uint8Array',
+  'Uint8ClampedArray',
+  'Int16Array',
+  'Uint16Array',
+  'Int32Array',
+  'Uint32Array',
+  'Float32Array',
+  'Float64Array'
+];
+for(var i = 0; i < constructors.length; i+=1) {
+  try {
+    if (constructors[i] in global) {
+      global[constructors[i]](constructors[i] === "ArrayBuffer" ? 64 : buffer);
+    }
+    return false;
+  } catch(e) {
+  }
+}
+return true;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/typed_arrays_correct_prototype_chains.js b/Source/JavaScriptCore/tests/es6/typed_arrays_correct_prototype_chains.js
new file mode 100644
index 0000000..79c99c4
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/typed_arrays_correct_prototype_chains.js
@@ -0,0 +1,31 @@
+function test() {
+
+var constructors = [
+  'Int8Array',
+  'Uint8Array',
+  'Uint8ClampedArray',
+  'Int16Array',
+  'Uint16Array',
+  'Int32Array',
+  'Uint32Array',
+  'Float32Array',
+  'Float64Array'
+];
+var constructor = Object.getPrototypeOf(Int8Array);
+var prototype = Object.getPrototypeOf(Int8Array.prototype);
+for(var i = 0; i < constructors.length; i+=1) {
+  if (!(constructors[i] in global
+      && Object.getPrototypeOf(global[constructors[i]]) === constructor
+      && Object.getPrototypeOf(global[constructors[i]].prototype) === prototype
+      && Object.getOwnPropertyNames(global[constructors[i]].prototype).sort() + ''
+        === "BYTES_PER_ELEMENT,constructor")) {
+    return false;
+  }
+}
+return true;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.hasInstance.js b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.hasInstance.js
new file mode 100644
index 0000000..45e42e0
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.hasInstance.js
@@ -0,0 +1,16 @@
+function test() {
+
+var passed = false;
+var obj = { foo: true };
+var C = function(){};
+Object.defineProperty(C, Symbol.hasInstance, {
+  value: function(inst) { passed = inst.foo; return false; }
+});
+obj instanceof C;
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.isConcatSpreadable.js b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.isConcatSpreadable.js
new file mode 100644
index 0000000..cf9f671
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.isConcatSpreadable.js
@@ -0,0 +1,12 @@
+function test() {
+
+var a = [], b = [];
+b[Symbol.isConcatSpreadable] = false;
+a = a.concat(b);
+return a[0] === b;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.iterator_arguments_object.js b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.iterator_arguments_object.js
new file mode 100644
index 0000000..813dabb
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.iterator_arguments_object.js
@@ -0,0 +1,12 @@
+function test() {
+
+return (function() {
+  return typeof arguments[Symbol.iterator] === 'function'
+    && Object.hasOwnProperty.call(arguments, Symbol.iterator);
+}());
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.iterator_existence.js b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.iterator_existence.js
new file mode 100644
index 0000000..5511073
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.iterator_existence.js
@@ -0,0 +1,9 @@
+function test() {
+
+return "iterator" in Symbol;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.match.js b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.match.js
new file mode 100644
index 0000000..7e4fdf5
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.match.js
@@ -0,0 +1,13 @@
+function test() {
+
+var O = {};
+O[Symbol.match] = function(){
+  return 42;
+};
+return ''.match(O) === 42;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.replace.js b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.replace.js
new file mode 100644
index 0000000..89182ed
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.replace.js
@@ -0,0 +1,13 @@
+function test() {
+
+var O = {};
+O[Symbol.replace] = function(){
+  return 42;
+};
+return ''.replace(O) === 42;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.search.js b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.search.js
new file mode 100644
index 0000000..1c85a7e
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.search.js
@@ -0,0 +1,13 @@
+function test() {
+
+var O = {};
+O[Symbol.search] = function(){
+  return 42;
+};
+return ''.search(O) === 42;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.species_Array.prototype.concat.js b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.species_Array.prototype.concat.js
new file mode 100644
index 0000000..5997eec
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.species_Array.prototype.concat.js
@@ -0,0 +1,14 @@
+function test() {
+
+var obj = [];
+obj.constructor = {};
+obj.constructor[Symbol.species] = function() {
+    return { foo: 1 };
+};
+return Array.prototype.concat.call(obj, []).foo === 1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.species_Array.prototype.filter.js b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.species_Array.prototype.filter.js
new file mode 100644
index 0000000..3d8e0ca
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.species_Array.prototype.filter.js
@@ -0,0 +1,14 @@
+function test() {
+
+var obj = [];
+obj.constructor = {};
+obj.constructor[Symbol.species] = function() {
+    return { foo: 1 };
+};
+return Array.prototype.filter.call(obj, Boolean).foo === 1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.species_Array.prototype.map.js b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.species_Array.prototype.map.js
new file mode 100644
index 0000000..45479e5
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.species_Array.prototype.map.js
@@ -0,0 +1,14 @@
+function test() {
+
+var obj = [];
+obj.constructor = {};
+obj.constructor[Symbol.species] = function() {
+    return { foo: 1 };
+};
+return Array.prototype.map.call(obj, Boolean).foo === 1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.species_Array.prototype.slice.js b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.species_Array.prototype.slice.js
new file mode 100644
index 0000000..fe90717
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.species_Array.prototype.slice.js
@@ -0,0 +1,14 @@
+function test() {
+
+var obj = [];
+obj.constructor = {};
+obj.constructor[Symbol.species] = function() {
+    return { foo: 1 };
+};
+return Array.prototype.slice.call(obj, 0).foo === 1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.species_Array.prototype.splice.js b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.species_Array.prototype.splice.js
new file mode 100644
index 0000000..3920b0c
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.species_Array.prototype.splice.js
@@ -0,0 +1,14 @@
+function test() {
+
+var obj = [];
+obj.constructor = {};
+obj.constructor[Symbol.species] = function() {
+    return { foo: 1 };
+};
+return Array.prototype.splice.call(obj, 0).foo === 1;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git "a/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.species_RegExp.prototype\133Symbol.split\135.js" "b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.species_RegExp.prototype\133Symbol.split\135.js"
new file mode 100644
index 0000000..463c639
--- /dev/null
+++ "b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.species_RegExp.prototype\133Symbol.split\135.js"
@@ -0,0 +1,17 @@
+function test() {
+
+var passed = false;
+var obj = { constructor: {} };
+obj[Symbol.split] = RegExp.prototype[Symbol.split];
+obj.constructor[Symbol.species] = function() {
+  passed = true;
+  return /./;
+};
+"".split(obj);
+return passed;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.species_existence.js b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.species_existence.js
new file mode 100644
index 0000000..21abeaf
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.species_existence.js
@@ -0,0 +1,9 @@
+function test() {
+
+return "species" in Symbol;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.split.js b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.split.js
new file mode 100644
index 0000000..e57cb3d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.split.js
@@ -0,0 +1,13 @@
+function test() {
+
+var O = {};
+O[Symbol.split] = function(){
+  return 42;
+};
+return ''.split(O) === 42;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.toPrimitive.js b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.toPrimitive.js
new file mode 100644
index 0000000..7914b26
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.toPrimitive.js
@@ -0,0 +1,18 @@
+function test() {
+
+var a = {}, b = {}, c = {};
+var passed = 0;
+a[Symbol.toPrimitive] = function(hint) { passed += hint === "number";  return 0; };
+b[Symbol.toPrimitive] = function(hint) { passed += hint === "string";  return 0; };
+c[Symbol.toPrimitive] = function(hint) { passed += hint === "default"; return 0; };
+
+a >= 0;
+b in {};
+c == 0;
+return passed === 3;
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.toStringTag.js b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.toStringTag.js
new file mode 100644
index 0000000..7d9777d
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.toStringTag.js
@@ -0,0 +1,11 @@
+function test() {
+
+var a = {};
+a[Symbol.toStringTag] = "foo";
+return (a + "") === "[object foo]";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.toStringTag_misc._built-ins.js b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.toStringTag_misc._built-ins.js
new file mode 100644
index 0000000..c05320f
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.toStringTag_misc._built-ins.js
@@ -0,0 +1,11 @@
+function test() {
+
+var s = Symbol.toStringTag;
+return Math[s] === "Math"
+  && JSON[s] === "JSON";
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+
diff --git a/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.unscopables.js b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.unscopables.js
new file mode 100644
index 0000000..eee68e9
--- /dev/null
+++ b/Source/JavaScriptCore/tests/es6/well-known_symbols_Symbol.unscopables.js
@@ -0,0 +1,13 @@
+function test() {
+
+var a = { foo: 1, bar: 2 };
+a[Symbol.unscopables] = { bar: true };
+with (a) {
+  return foo === 1 && typeof bar === "undefined";
+}
+      
+}
+
+if (!test())
+    throw new Error("Test failed");
+