Commit 8041a753 authored by mstarzinger's avatar mstarzinger Committed by Commit bot

Drop "current_code" from compiler API.

This removes the need to pass in the current unoptimized code when
requesting optimized code for a function. Note that the notion of
unoptimized code becomes moot when optimizing from the interpreter
bytecode, hence the API should not encode such a dependency.

R=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#33353}
parent a4414c95
...@@ -1056,9 +1056,8 @@ MaybeHandle<Code> Compiler::GetLazyCode(Handle<JSFunction> function) { ...@@ -1056,9 +1056,8 @@ MaybeHandle<Code> Compiler::GetLazyCode(Handle<JSFunction> function) {
if (FLAG_always_opt) { if (FLAG_always_opt) {
Handle<Code> opt_code; Handle<Code> opt_code;
if (Compiler::GetOptimizedCode( if (Compiler::GetOptimizedCode(function, Compiler::NOT_CONCURRENT)
function, result, .ToHandle(&opt_code)) {
Compiler::NOT_CONCURRENT).ToHandle(&opt_code)) {
result = opt_code; result = opt_code;
} }
} }
...@@ -1692,7 +1691,6 @@ Handle<SharedFunctionInfo> Compiler::GetSharedFunctionInfo( ...@@ -1692,7 +1691,6 @@ Handle<SharedFunctionInfo> Compiler::GetSharedFunctionInfo(
MaybeHandle<Code> Compiler::GetOptimizedCode(Handle<JSFunction> function, MaybeHandle<Code> Compiler::GetOptimizedCode(Handle<JSFunction> function,
Handle<Code> current_code,
ConcurrencyMode mode, ConcurrencyMode mode,
BailoutId osr_ast_id, BailoutId osr_ast_id,
JavaScriptFrame* osr_frame) { JavaScriptFrame* osr_frame) {
...@@ -1716,6 +1714,7 @@ MaybeHandle<Code> Compiler::GetOptimizedCode(Handle<JSFunction> function, ...@@ -1716,6 +1714,7 @@ MaybeHandle<Code> Compiler::GetOptimizedCode(Handle<JSFunction> function,
DCHECK(AllowCompilation::IsAllowed(isolate)); DCHECK(AllowCompilation::IsAllowed(isolate));
Handle<Code> current_code(shared->code());
if (!shared->is_compiled() || if (!shared->is_compiled() ||
shared->scope_info() == ScopeInfo::Empty(isolate)) { shared->scope_info() == ScopeInfo::Empty(isolate)) {
// The function was never compiled. Compile it unoptimized first. // The function was never compiled. Compile it unoptimized first.
......
...@@ -628,8 +628,8 @@ class Compiler : public AllStatic { ...@@ -628,8 +628,8 @@ class Compiler : public AllStatic {
// In the latter case, return the InOptimizationQueue builtin. On failure, // In the latter case, return the InOptimizationQueue builtin. On failure,
// return the empty handle. // return the empty handle.
MUST_USE_RESULT static MaybeHandle<Code> GetOptimizedCode( MUST_USE_RESULT static MaybeHandle<Code> GetOptimizedCode(
Handle<JSFunction> function, Handle<Code> current_code, Handle<JSFunction> function, ConcurrencyMode mode,
ConcurrencyMode mode, BailoutId osr_ast_id = BailoutId::None(), BailoutId osr_ast_id = BailoutId::None(),
JavaScriptFrame* osr_frame = nullptr); JavaScriptFrame* osr_frame = nullptr);
// Generate and return code from previously queued optimization job. // Generate and return code from previously queued optimization job.
......
...@@ -52,8 +52,7 @@ Object* CompileOptimized(Isolate* isolate, Handle<JSFunction> function, ...@@ -52,8 +52,7 @@ Object* CompileOptimized(Isolate* isolate, Handle<JSFunction> function,
if (check.JsHasOverflowed(1 * KB)) return isolate->StackOverflow(); if (check.JsHasOverflowed(1 * KB)) return isolate->StackOverflow();
Handle<Code> code; Handle<Code> code;
Handle<Code> unoptimized(function->shared()->code()); if (Compiler::GetOptimizedCode(function, mode).ToHandle(&code)) {
if (Compiler::GetOptimizedCode(function, unoptimized, mode).ToHandle(&code)) {
// Optimization succeeded, return optimized code. // Optimization succeeded, return optimized code.
function->ReplaceCode(*code); function->ReplaceCode(*code);
} else { } else {
...@@ -282,7 +281,7 @@ RUNTIME_FUNCTION(Runtime_CompileForOnStackReplacement) { ...@@ -282,7 +281,7 @@ RUNTIME_FUNCTION(Runtime_CompileForOnStackReplacement) {
PrintF(" at AST id %d]\n", ast_id.ToInt()); PrintF(" at AST id %d]\n", ast_id.ToInt());
} }
MaybeHandle<Code> maybe_result = Compiler::GetOptimizedCode( MaybeHandle<Code> maybe_result = Compiler::GetOptimizedCode(
function, caller_code, mode, ast_id, function, mode, ast_id,
(mode == Compiler::NOT_CONCURRENT) ? frame : nullptr); (mode == Compiler::NOT_CONCURRENT) ? frame : nullptr);
if (maybe_result.ToHandle(&result) && if (maybe_result.ToHandle(&result) &&
result.is_identical_to(isolate->builtins()->InOptimizationQueue())) { result.is_identical_to(isolate->builtins()->InOptimizationQueue())) {
......
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