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

Unified Diff: src/compiler.cc

Issue 2687973003: Revert of [Compiler] Enable handles created during parsing and scope analysis to be deferred. (Closed)
Patch Set: Created 3 years, 10 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
« no previous file with comments | « src/compilation-info.cc ('k') | src/compiler-dispatcher/compiler-dispatcher.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler.cc
diff --git a/src/compiler.cc b/src/compiler.cc
index 7a923ab08cab4a893de6efb0f247e8043344c122..efae4db085959c631fd4709a63b58fec1c82c1ca 100644
--- a/src/compiler.cc
+++ b/src/compiler.cc
@@ -39,19 +39,6 @@
namespace v8 {
namespace internal {
-// A wrapper around a ParseInfo that detaches the parser handles from the
-// underlying DeferredHandleScope and stores them in info_ on destruction.
-class ParseHandleScope final {
- public:
- explicit ParseHandleScope(ParseInfo* info)
- : deferred_(info->isolate()), info_(info) {}
- ~ParseHandleScope() { info_->set_deferred_handles(deferred_.Detach()); }
-
- private:
- DeferredHandleScope deferred_;
- ParseInfo* info_;
-};
-
// A wrapper around a CompilationInfo that detaches the Handles from
// the underlying DeferredHandleScope and stores them in info_ on
// destruction.
@@ -525,7 +512,7 @@
bool CompileUnoptimizedInnerFunctions(
Compiler::EagerInnerFunctionLiterals* literals,
Compiler::ConcurrencyMode inner_function_mode,
- std::shared_ptr<Zone> parse_zone, CompilationInfo* outer_info) {
+ CompilationInfo* outer_info) {
Isolate* isolate = outer_info->isolate();
Handle<Script> script = outer_info->script();
bool is_debug = outer_info->is_debug();
@@ -547,9 +534,7 @@
CompilerDispatcher* dispatcher = isolate->compiler_dispatcher();
if (UseCompilerDispatcher(inner_function_mode, dispatcher, literal->scope(),
shared, is_debug, will_serialize) &&
- dispatcher->EnqueueAndStep(shared, literal, parse_zone,
- outer_info->parse_info()->deferred_handles(),
- outer_info->deferred_handles())) {
+ dispatcher->EnqueueAndStep(shared, literal)) {
// If we have successfully queued up the function for compilation on the
// compiler dispatcher then we are done.
continue;
@@ -594,15 +579,9 @@
DCHECK(AllowCompilation::IsAllowed(isolate));
Compiler::EagerInnerFunctionLiterals inner_literals;
- {
- std::unique_ptr<CompilationHandleScope> compilation_handle_scope;
- if (inner_function_mode == Compiler::CONCURRENT) {
- compilation_handle_scope.reset(new CompilationHandleScope(info));
- }
- if (!Compiler::Analyze(info->parse_info(), &inner_literals)) {
- if (!isolate->has_pending_exception()) isolate->StackOverflow();
- return false;
- }
+ if (!Compiler::Analyze(info->parse_info(), &inner_literals)) {
+ if (!isolate->has_pending_exception()) isolate->StackOverflow();
+ return false;
}
// Disable concurrent inner compilation for asm-wasm code.
@@ -613,17 +592,15 @@
inner_function_mode = Compiler::NOT_CONCURRENT;
}
- std::shared_ptr<Zone> parse_zone;
if (inner_function_mode == Compiler::CONCURRENT) {
// Seal the parse zone so that it can be shared by parallel inner function
// compilation jobs.
DCHECK_NE(info->parse_info()->zone(), info->zone());
- parse_zone = info->parse_info()->zone_shared();
- parse_zone->Seal();
+ info->parse_info()->zone()->Seal();
}
if (!CompileUnoptimizedInnerFunctions(&inner_literals, inner_function_mode,
- parse_zone, info) ||
+ info) ||
!GenerateUnoptimizedCode(info)) {
if (!isolate->has_pending_exception()) isolate->StackOverflow();
return false;
@@ -664,20 +641,8 @@
VMState<COMPILER> state(info->isolate());
PostponeInterruptsScope postpone(info->isolate());
- // Parse and update ParseInfo with the results.
- {
- if (!parsing::ParseAny(info->parse_info(),
- inner_function_mode != Compiler::CONCURRENT)) {
- return MaybeHandle<Code>();
- }
-
- if (inner_function_mode == Compiler::CONCURRENT) {
- ParseHandleScope parse_handles(info->parse_info());
- info->parse_info()->ReopenHandlesInNewHandleScope();
- info->parse_info()->ast_value_factory()->Internalize(info->isolate());
- }
- }
-
+ // Parse and update CompilationInfo with the results.
+ if (!parsing::ParseAny(info->parse_info())) return MaybeHandle<Code>();
if (info->parse_info()->is_toplevel()) {
EnsureSharedFunctionInfosArrayOnScript(info->parse_info());
}
@@ -1169,16 +1134,9 @@
Handle<SharedFunctionInfo> result;
{ VMState<COMPILER> state(info->isolate());
- if (parse_info->literal() == nullptr) {
- if (!parsing::ParseProgram(parse_info, false)) {
- return Handle<SharedFunctionInfo>::null();
- }
-
- {
- ParseHandleScope parse_handles(parse_info);
- parse_info->ReopenHandlesInNewHandleScope();
- parse_info->ast_value_factory()->Internalize(info->isolate());
- }
+ if (parse_info->literal() == nullptr &&
+ !parsing::ParseProgram(parse_info)) {
+ return Handle<SharedFunctionInfo>::null();
}
EnsureSharedFunctionInfosArrayOnScript(parse_info);
« no previous file with comments | « src/compilation-info.cc ('k') | src/compiler-dispatcher/compiler-dispatcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698