Commit 28112133 authored by yangguo@chromium.org's avatar yangguo@chromium.org

Flag for serialization when compiling code stubs if --serialize-toplevel.

R=mvstanton@chromium.org
BUG=v8:3465
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22596 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent ac89b178
......@@ -270,6 +270,8 @@ static Handle<Code> DoGenerateCode(Stub* stub) {
}
CodeStubGraphBuilder<Stub> builder(isolate, stub);
LChunk* chunk = OptimizeGraph(builder.CreateGraph());
// TODO(yangguo) remove this once the code serializer handles code stubs.
if (FLAG_serialize_toplevel) chunk->info()->PrepareForSerializing();
Handle<Code> code = chunk->Codegen();
if (FLAG_profile_hydrogen_code_stub_compilation) {
OFStream os(stdout);
......
......@@ -149,6 +149,9 @@ Handle<Code> PlatformCodeStub::GenerateCode() {
// Generate the new code.
MacroAssembler masm(isolate(), NULL, 256);
// TODO(yangguo) remove this once the code serializer handles code stubs.
if (FLAG_serialize_toplevel) masm.enable_serializer();
{
// Update the static counter each time a new code stub is generated.
isolate()->counters()->code_stubs()->Increment();
......
......@@ -184,7 +184,6 @@ class CompilationInfo {
}
void PrepareForSerializing() {
ASSERT(!is_lazy());
flags_ |= PrepareForSerializing::encode(true);
}
......
......@@ -32,9 +32,6 @@
##############################################################################
# BUG(3465): SerializeToplevelIsolates crashes.
'test-serialize/SerializeToplevelIsolates': [SKIP],
# BUG(382): Weird test. Can't guarantee that it never times out.
'test-api/ApplyInterruption': [PASS, TIMEOUT],
......
......@@ -799,18 +799,19 @@ TEST(SerializeToplevelIsolates) {
const char* source = "function f() { return 'abc'; }; f() + 'def'";
v8::ScriptCompiler::CachedData* cache;
v8::Isolate* isolate = v8::Isolate::New();
v8::Isolate* isolate1 = v8::Isolate::New();
v8::Isolate* isolate2 = v8::Isolate::New();
{
v8::Isolate::Scope iscope(isolate);
v8::HandleScope scope(isolate);
v8::Local<v8::Context> context = v8::Context::New(isolate);
v8::Isolate::Scope iscope(isolate1);
v8::HandleScope scope(isolate1);
v8::Local<v8::Context> context = v8::Context::New(isolate1);
v8::Context::Scope context_scope(context);
v8::Local<v8::String> source_str = v8_str(source);
v8::ScriptOrigin origin(v8_str("test"));
v8::ScriptCompiler::Source source(source_str, origin);
v8::Local<v8::UnboundScript> script = v8::ScriptCompiler::CompileUnbound(
isolate, &source, v8::ScriptCompiler::kProduceCodeCache);
isolate1, &source, v8::ScriptCompiler::kProduceCodeCache);
const v8::ScriptCompiler::CachedData* data = source.GetCachedData();
// Persist cached data.
uint8_t* buffer = NewArray<uint8_t>(data->length);
......@@ -821,13 +822,12 @@ TEST(SerializeToplevelIsolates) {
v8::Local<v8::Value> result = script->BindToCurrentContext()->Run();
CHECK(result->ToString()->Equals(v8_str("abcdef")));
}
isolate->Dispose();
isolate1->Dispose();
isolate = v8::Isolate::New();
{
v8::Isolate::Scope iscope(isolate);
v8::HandleScope scope(isolate);
v8::Local<v8::Context> context = v8::Context::New(isolate);
v8::Isolate::Scope iscope(isolate2);
v8::HandleScope scope(isolate2);
v8::Local<v8::Context> context = v8::Context::New(isolate2);
v8::Context::Scope context_scope(context);
v8::Local<v8::String> source_str = v8_str(source);
......@@ -835,12 +835,12 @@ TEST(SerializeToplevelIsolates) {
v8::ScriptCompiler::Source source(source_str, origin, cache);
v8::Local<v8::UnboundScript> script;
{
DisallowCompilation no_compile(reinterpret_cast<Isolate*>(isolate));
DisallowCompilation no_compile(reinterpret_cast<Isolate*>(isolate2));
script = v8::ScriptCompiler::CompileUnbound(
isolate, &source, v8::ScriptCompiler::kConsumeCodeCache);
isolate2, &source, v8::ScriptCompiler::kConsumeCodeCache);
}
v8::Local<v8::Value> result = script->BindToCurrentContext()->Run();
CHECK(result->ToString()->Equals(v8_str("abcdef")));
}
isolate->Dispose();
isolate2->Dispose();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment