Merge V8 5.2.361.47 DO NOT MERGE
https://chromium.googlesource.com/v8/v8/+/5.2.361.47
FPIIM-449
Change-Id: Ibec421b85a9b88cb3a432ada642e469fe7e78346
(cherry picked from commit bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8)
diff --git a/src/factory.cc b/src/factory.cc
index 41c3cb5..7d2dad0 100644
--- a/src/factory.cc
+++ b/src/factory.cc
@@ -190,8 +190,8 @@
Handle<AccessorPair> Factory::NewAccessorPair() {
Handle<AccessorPair> accessors =
Handle<AccessorPair>::cast(NewStruct(ACCESSOR_PAIR_TYPE));
- accessors->set_getter(*the_hole_value(), SKIP_WRITE_BARRIER);
- accessors->set_setter(*the_hole_value(), SKIP_WRITE_BARRIER);
+ accessors->set_getter(*null_value(), SKIP_WRITE_BARRIER);
+ accessors->set_setter(*null_value(), SKIP_WRITE_BARRIER);
return accessors;
}
@@ -853,15 +853,6 @@
}
-Handle<CodeCache> Factory::NewCodeCache() {
- Handle<CodeCache> code_cache =
- Handle<CodeCache>::cast(NewStruct(CODE_CACHE_TYPE));
- code_cache->set_default_cache(*empty_fixed_array(), SKIP_WRITE_BARRIER);
- code_cache->set_normal_type_cache(*undefined_value(), SKIP_WRITE_BARRIER);
- return code_cache;
-}
-
-
Handle<AliasedArgumentsEntry> Factory::NewAliasedArgumentsEntry(
int aliased_context_slot) {
Handle<AliasedArgumentsEntry> entry = Handle<AliasedArgumentsEntry>::cast(
@@ -894,7 +885,7 @@
script->set_wrapper(heap->undefined_value());
script->set_line_ends(heap->undefined_value());
script->set_eval_from_shared(heap->undefined_value());
- script->set_eval_from_instructions_offset(0);
+ script->set_eval_from_position(0);
script->set_shared_function_infos(Smi::FromInt(0));
script->set_flags(0);
@@ -1237,6 +1228,7 @@
map.is_identical_to(
isolate()->sloppy_function_with_readonly_prototype_map()) ||
map.is_identical_to(isolate()->strict_function_map()) ||
+ map.is_identical_to(isolate()->strict_function_without_prototype_map()) ||
// TODO(titzer): wasm_function_map() could be undefined here. ugly.
(*map == context->get(Context::WASM_FUNCTION_MAP_INDEX)) ||
map.is_identical_to(isolate()->proxy_function_map()));
@@ -1411,8 +1403,10 @@
int obj_size = Code::SizeFor(body_size);
Handle<Code> code = NewCodeRaw(obj_size, immovable);
- DCHECK(isolate()->code_range() == NULL || !isolate()->code_range()->valid() ||
- isolate()->code_range()->contains(code->address()) ||
+ DCHECK(isolate()->heap()->memory_allocator()->code_range() == NULL ||
+ !isolate()->heap()->memory_allocator()->code_range()->valid() ||
+ isolate()->heap()->memory_allocator()->code_range()->contains(
+ code->address()) ||
obj_size <= isolate()->heap()->code_space()->AreaSize());
// The code object has not been fully initialized yet. We rely on the
@@ -1668,7 +1662,7 @@
Handle<JSGeneratorObject> Factory::NewJSGeneratorObject(
Handle<JSFunction> function) {
- DCHECK(function->shared()->is_generator());
+ DCHECK(function->shared()->is_resumable());
JSFunction::EnsureHasInitialMap(function);
Handle<Map> map(function->initial_map());
DCHECK_EQ(JS_GENERATOR_OBJECT_TYPE, map->instance_type());
@@ -1968,13 +1962,9 @@
}
// Setup the map for the JSBoundFunction instance.
- Handle<Map> map = handle(
- target_function->IsConstructor()
- ? isolate()->native_context()->bound_function_with_constructor_map()
- : isolate()
- ->native_context()
- ->bound_function_without_constructor_map(),
- isolate());
+ Handle<Map> map = target_function->IsConstructor()
+ ? isolate()->bound_function_with_constructor_map()
+ : isolate()->bound_function_without_constructor_map();
if (map->prototype() != *prototype) {
map = Map::TransitionToPrototype(map, prototype, REGULAR_PROTOTYPE);
}
@@ -1986,8 +1976,6 @@
result->set_bound_target_function(*target_function);
result->set_bound_this(*bound_this);
result->set_bound_arguments(*bound_arguments);
- result->set_length(Smi::FromInt(0));
- result->set_name(*undefined_value(), SKIP_WRITE_BARRIER);
return result;
}
@@ -2080,6 +2068,11 @@
shared->set_instance_class_name(isolate()->heap()->Generator_string());
shared->DisableOptimization(kGenerator);
}
+ if (IsAsyncFunction(kind)) {
+ // TODO(caitp): Enable optimization of async functions when they are enabled
+ // for generators functions.
+ shared->DisableOptimization(kGenerator);
+ }
return shared;
}
@@ -2247,14 +2240,19 @@
Handle<DebugInfo>::cast(NewStruct(DEBUG_INFO_TYPE));
debug_info->set_shared(*shared);
if (shared->HasBytecodeArray()) {
- // Create a copy for debugging.
- Handle<BytecodeArray> original(shared->bytecode_array(), isolate());
- Handle<BytecodeArray> copy = CopyBytecodeArray(original);
- debug_info->set_abstract_code(AbstractCode::cast(*copy));
+ // We need to create a copy, but delay since this may cause heap
+ // verification.
+ debug_info->set_abstract_code(AbstractCode::cast(shared->bytecode_array()));
} else {
debug_info->set_abstract_code(AbstractCode::cast(shared->code()));
}
debug_info->set_break_points(*break_points);
+ if (shared->HasBytecodeArray()) {
+ // Create a copy for debugging.
+ Handle<BytecodeArray> original(shared->bytecode_array());
+ Handle<BytecodeArray> copy = CopyBytecodeArray(original);
+ debug_info->set_abstract_code(AbstractCode::cast(*copy));
+ }
// Link debug info to function.
shared->set_debug_info(*debug_info);