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

Unified Diff: src/objects.cc

Issue 21340002: Generate a custom OSR entrypoint for OSR compiles on all platforms, and transition to optimized cod… (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: src/objects.cc
diff --git a/src/objects.cc b/src/objects.cc
index 03e0120b0e047705ac6658891523df9461a5decc..0da8815c1448343aad281956cde065de64e596c0 100644
--- a/src/objects.cc
+++ b/src/objects.cc
@@ -9290,11 +9290,12 @@ void JSFunction::MarkInRecompileQueue() {
static bool CompileLazyHelper(CompilationInfo* info,
- ClearExceptionFlag flag) {
+ ClearExceptionFlag flag,
+ bool install) {
Michael Starzinger 2013/07/31 14:55:50 The boolean flag is obsolete, see comments in "com
// Compile the source information to a code object.
ASSERT(info->IsOptimizing() || !info->shared_info()->is_compiled());
ASSERT(!info->isolate()->has_pending_exception());
- bool result = Compiler::CompileLazy(info);
+ bool result = Compiler::CompileLazy(info, install);
ASSERT(result != Isolate::Current()->has_pending_exception());
if (!result && flag == CLEAR_EXCEPTION) {
info->isolate()->clear_pending_exception();
@@ -9307,7 +9308,7 @@ bool SharedFunctionInfo::CompileLazy(Handle<SharedFunctionInfo> shared,
ClearExceptionFlag flag) {
ASSERT(shared->allows_lazy_compilation_without_context());
CompilationInfoWithZone info(shared);
- return CompileLazyHelper(&info, flag);
+ return CompileLazyHelper(&info, flag, true);
}
@@ -9457,19 +9458,31 @@ bool JSFunction::CompileLazy(Handle<JSFunction> function,
} else {
ASSERT(function->shared()->allows_lazy_compilation());
CompilationInfoWithZone info(function);
- result = CompileLazyHelper(&info, flag);
+ result = CompileLazyHelper(&info, flag, true);
ASSERT(!result || function->is_compiled());
}
return result;
}
-bool JSFunction::CompileOptimized(Handle<JSFunction> function,
+Handle<Code> JSFunction::CompileOsr(Handle<JSFunction> function,
BailoutId osr_ast_id,
ClearExceptionFlag flag) {
CompilationInfoWithZone info(function);
info.SetOptimizing(osr_ast_id);
- return CompileLazyHelper(&info, flag);
+ if (CompileLazyHelper(&info, flag, false)) {
+ return info.code();
+ } else {
+ return Handle<Code>::null();
+ }
+}
+
+
+bool JSFunction::CompileOptimized(Handle<JSFunction> function,
+ ClearExceptionFlag flag) {
+ CompilationInfoWithZone info(function);
+ info.SetOptimizing(BailoutId::None());
+ return CompileLazyHelper(&info, flag, true);
}

Powered by Google App Engine
This is Rietveld 408576698