Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(88)

Side by Side Diff: src/objects.cc

Issue 12488006: Parallel recompilation: remove interrupt for code generation. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 7961 matching lines...) Expand 10 before | Expand all | Expand 10 after
7972 7972
7973 7973
7974 void JSFunction::MarkForLazyRecompilation() { 7974 void JSFunction::MarkForLazyRecompilation() {
7975 ASSERT(is_compiled() && !IsOptimized()); 7975 ASSERT(is_compiled() && !IsOptimized());
7976 ASSERT(shared()->allows_lazy_compilation() || 7976 ASSERT(shared()->allows_lazy_compilation() ||
7977 code()->optimizable()); 7977 code()->optimizable());
7978 Builtins* builtins = GetIsolate()->builtins(); 7978 Builtins* builtins = GetIsolate()->builtins();
7979 ReplaceCode(builtins->builtin(Builtins::kLazyRecompile)); 7979 ReplaceCode(builtins->builtin(Builtins::kLazyRecompile));
7980 } 7980 }
7981 7981
7982
7982 void JSFunction::MarkForParallelRecompilation() { 7983 void JSFunction::MarkForParallelRecompilation() {
7983 ASSERT(is_compiled() && !IsOptimized()); 7984 ASSERT(is_compiled() && !IsOptimized());
7984 ASSERT(shared()->allows_lazy_compilation() || code()->optimizable()); 7985 ASSERT(shared()->allows_lazy_compilation() || code()->optimizable());
7986 ASSERT(FLAG_parallel_recompilation);
7987 if (FLAG_trace_parallel_recompilation) {
7988 PrintF(" ** Marking ");
7989 PrintName();
7990 PrintF(" for parallel recompilation.\n");
7991 }
7985 Builtins* builtins = GetIsolate()->builtins(); 7992 Builtins* builtins = GetIsolate()->builtins();
7986 ReplaceCode(builtins->builtin(Builtins::kParallelRecompile)); 7993 ReplaceCode(builtins->builtin(Builtins::kParallelRecompile));
7994 }
7987 7995
7988 // Unlike MarkForLazyRecompilation, after queuing a function for 7996
7989 // recompilation on the compiler thread, we actually tail-call into 7997 void JSFunction::MarkForInstallingRecompiledCode() {
7990 // the full code. We reset the profiler ticks here so that the 7998 ASSERT(is_compiled() && !IsOptimized());
7991 // function doesn't bother the runtime profiler too much. 7999 ASSERT(shared()->allows_lazy_compilation() || code()->optimizable());
7992 shared()->code()->set_profiler_ticks(0); 8000 ASSERT(FLAG_parallel_recompilation);
8001 set_code_no_write_barrier(
8002 GetIsolate()->builtins()->builtin(Builtins::kInstallRecompiledCode));
8003 // No write barrier required, since the builtin is part of the root set.
Jakob Kummerow 2013/03/12 15:19:30 Since this is true for all builtins, please update
Yang 2013/03/12 18:03:38 Done.
7993 } 8004 }
7994 8005
8006
8007 void JSFunction::MarkInRecompileQueue() {
8008 ASSERT(is_compiled() && !IsOptimized());
8009 ASSERT(shared()->allows_lazy_compilation() || code()->optimizable());
8010 ASSERT(FLAG_parallel_recompilation);
8011 if (FLAG_trace_parallel_recompilation) {
8012 PrintF(" ** Queueing ");
8013 PrintName();
8014 PrintF(" for parallel recompilation.\n");
8015 }
8016 Builtins* builtins = GetIsolate()->builtins();
8017 ReplaceCode(builtins->builtin(Builtins::kInRecompileQueue));
8018 }
8019
8020
7995 static bool CompileLazyHelper(CompilationInfo* info, 8021 static bool CompileLazyHelper(CompilationInfo* info,
7996 ClearExceptionFlag flag) { 8022 ClearExceptionFlag flag) {
7997 // Compile the source information to a code object. 8023 // Compile the source information to a code object.
7998 ASSERT(info->IsOptimizing() || !info->shared_info()->is_compiled()); 8024 ASSERT(info->IsOptimizing() || !info->shared_info()->is_compiled());
7999 ASSERT(!info->isolate()->has_pending_exception()); 8025 ASSERT(!info->isolate()->has_pending_exception());
8000 bool result = Compiler::CompileLazy(info); 8026 bool result = Compiler::CompileLazy(info);
8001 ASSERT(result != Isolate::Current()->has_pending_exception()); 8027 ASSERT(result != Isolate::Current()->has_pending_exception());
8002 if (!result && flag == CLEAR_EXCEPTION) { 8028 if (!result && flag == CLEAR_EXCEPTION) {
8003 info->isolate()->clear_pending_exception(); 8029 info->isolate()->clear_pending_exception();
8004 } 8030 }
(...skipping 6274 matching lines...) Expand 10 before | Expand all | Expand 10 after
14279 set_year(Smi::FromInt(year), SKIP_WRITE_BARRIER); 14305 set_year(Smi::FromInt(year), SKIP_WRITE_BARRIER);
14280 set_month(Smi::FromInt(month), SKIP_WRITE_BARRIER); 14306 set_month(Smi::FromInt(month), SKIP_WRITE_BARRIER);
14281 set_day(Smi::FromInt(day), SKIP_WRITE_BARRIER); 14307 set_day(Smi::FromInt(day), SKIP_WRITE_BARRIER);
14282 set_weekday(Smi::FromInt(weekday), SKIP_WRITE_BARRIER); 14308 set_weekday(Smi::FromInt(weekday), SKIP_WRITE_BARRIER);
14283 set_hour(Smi::FromInt(hour), SKIP_WRITE_BARRIER); 14309 set_hour(Smi::FromInt(hour), SKIP_WRITE_BARRIER);
14284 set_min(Smi::FromInt(min), SKIP_WRITE_BARRIER); 14310 set_min(Smi::FromInt(min), SKIP_WRITE_BARRIER);
14285 set_sec(Smi::FromInt(sec), SKIP_WRITE_BARRIER); 14311 set_sec(Smi::FromInt(sec), SKIP_WRITE_BARRIER);
14286 } 14312 }
14287 14313
14288 } } // namespace v8::internal 14314 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698