Work around two ASSERTs that we're hitting now that DEBUG is #defined again
R=danno@chromium.org Review URL: https://codereview.chromium.org/49433002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17418 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
5b5f2e59dc
commit
ec50a6f33c
118
src/compiler.cc
118
src/compiler.cc
@ -665,67 +665,71 @@ static Handle<SharedFunctionInfo> MakeFunctionInfo(CompilationInfo* info) {
|
||||
}
|
||||
}
|
||||
|
||||
// Measure how long it takes to do the compilation; only take the
|
||||
// rest of the function into account to avoid overlap with the
|
||||
// parsing statistics.
|
||||
HistogramTimer* rate = info->is_eval()
|
||||
? info->isolate()->counters()->compile_eval()
|
||||
: info->isolate()->counters()->compile();
|
||||
HistogramTimerScope timer(rate);
|
||||
|
||||
// Compile the code.
|
||||
FunctionLiteral* lit = info->function();
|
||||
LiveEditFunctionTracker live_edit_tracker(isolate, lit);
|
||||
if (!MakeCode(info)) {
|
||||
if (!isolate->has_pending_exception()) isolate->StackOverflow();
|
||||
return Handle<SharedFunctionInfo>::null();
|
||||
Handle<SharedFunctionInfo> result;
|
||||
{
|
||||
// Measure how long it takes to do the compilation; only take the
|
||||
// rest of the function into account to avoid overlap with the
|
||||
// parsing statistics.
|
||||
HistogramTimer* rate = info->is_eval()
|
||||
? info->isolate()->counters()->compile_eval()
|
||||
: info->isolate()->counters()->compile();
|
||||
HistogramTimerScope timer(rate);
|
||||
|
||||
// Compile the code.
|
||||
if (!MakeCode(info)) {
|
||||
if (!isolate->has_pending_exception()) isolate->StackOverflow();
|
||||
return Handle<SharedFunctionInfo>::null();
|
||||
}
|
||||
|
||||
// Allocate function.
|
||||
ASSERT(!info->code().is_null());
|
||||
result =
|
||||
isolate->factory()->NewSharedFunctionInfo(
|
||||
lit->name(),
|
||||
lit->materialized_literal_count(),
|
||||
lit->is_generator(),
|
||||
info->code(),
|
||||
ScopeInfo::Create(info->scope(), info->zone()));
|
||||
|
||||
ASSERT_EQ(RelocInfo::kNoPosition, lit->function_token_position());
|
||||
Compiler::SetFunctionInfo(result, lit, true, script);
|
||||
|
||||
if (script->name()->IsString()) {
|
||||
PROFILE(isolate, CodeCreateEvent(
|
||||
info->is_eval()
|
||||
? Logger::EVAL_TAG
|
||||
: Logger::ToNativeByScript(Logger::SCRIPT_TAG, *script),
|
||||
*info->code(),
|
||||
*result,
|
||||
info,
|
||||
String::cast(script->name())));
|
||||
GDBJIT(AddCode(Handle<String>(String::cast(script->name())),
|
||||
script,
|
||||
info->code(),
|
||||
info));
|
||||
} else {
|
||||
PROFILE(isolate, CodeCreateEvent(
|
||||
info->is_eval()
|
||||
? Logger::EVAL_TAG
|
||||
: Logger::ToNativeByScript(Logger::SCRIPT_TAG, *script),
|
||||
*info->code(),
|
||||
*result,
|
||||
info,
|
||||
isolate->heap()->empty_string()));
|
||||
GDBJIT(AddCode(Handle<String>(), script, info->code(), info));
|
||||
}
|
||||
|
||||
// Hint to the runtime system used when allocating space for initial
|
||||
// property space by setting the expected number of properties for
|
||||
// the instances of the function.
|
||||
SetExpectedNofPropertiesFromEstimate(result,
|
||||
lit->expected_property_count());
|
||||
|
||||
script->set_compilation_state(Script::COMPILATION_STATE_COMPILED);
|
||||
}
|
||||
|
||||
// Allocate function.
|
||||
ASSERT(!info->code().is_null());
|
||||
Handle<SharedFunctionInfo> result =
|
||||
isolate->factory()->NewSharedFunctionInfo(
|
||||
lit->name(),
|
||||
lit->materialized_literal_count(),
|
||||
lit->is_generator(),
|
||||
info->code(),
|
||||
ScopeInfo::Create(info->scope(), info->zone()));
|
||||
|
||||
ASSERT_EQ(RelocInfo::kNoPosition, lit->function_token_position());
|
||||
Compiler::SetFunctionInfo(result, lit, true, script);
|
||||
|
||||
if (script->name()->IsString()) {
|
||||
PROFILE(isolate, CodeCreateEvent(
|
||||
info->is_eval()
|
||||
? Logger::EVAL_TAG
|
||||
: Logger::ToNativeByScript(Logger::SCRIPT_TAG, *script),
|
||||
*info->code(),
|
||||
*result,
|
||||
info,
|
||||
String::cast(script->name())));
|
||||
GDBJIT(AddCode(Handle<String>(String::cast(script->name())),
|
||||
script,
|
||||
info->code(),
|
||||
info));
|
||||
} else {
|
||||
PROFILE(isolate, CodeCreateEvent(
|
||||
info->is_eval()
|
||||
? Logger::EVAL_TAG
|
||||
: Logger::ToNativeByScript(Logger::SCRIPT_TAG, *script),
|
||||
*info->code(),
|
||||
*result,
|
||||
info,
|
||||
isolate->heap()->empty_string()));
|
||||
GDBJIT(AddCode(Handle<String>(), script, info->code(), info));
|
||||
}
|
||||
|
||||
// Hint to the runtime system used when allocating space for initial
|
||||
// property space by setting the expected number of properties for
|
||||
// the instances of the function.
|
||||
SetExpectedNofPropertiesFromEstimate(result, lit->expected_property_count());
|
||||
|
||||
script->set_compilation_state(Script::COMPILATION_STATE_COMPILED);
|
||||
|
||||
#ifdef ENABLE_DEBUGGER_SUPPORT
|
||||
// Notify debugger
|
||||
isolate->debugger()->OnAfterCompile(
|
||||
|
@ -1667,7 +1667,9 @@ int JSObject::GetHeaderSize() {
|
||||
case JS_MESSAGE_OBJECT_TYPE:
|
||||
return JSMessageObject::kSize;
|
||||
default:
|
||||
UNREACHABLE();
|
||||
// TODO(jkummerow): Re-enable this. Blink currently hits this
|
||||
// from its CustomElementConstructorBuilder.
|
||||
// UNREACHABLE();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user