OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/compiler/js-inlining.h" | 5 #include "src/compiler/js-inlining.h" |
6 | 6 |
7 #include "src/ast/ast.h" | 7 #include "src/ast/ast.h" |
8 #include "src/compilation-info.h" | 8 #include "src/compilation-info.h" |
9 #include "src/compiler.h" | 9 #include "src/compiler.h" |
10 #include "src/compiler/all-nodes.h" | 10 #include "src/compiler/all-nodes.h" |
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
480 } else { | 480 } else { |
481 TRACE( | 481 TRACE( |
482 "Inlining %s into %s regardless of surrounding try-block to catcher " | 482 "Inlining %s into %s regardless of surrounding try-block to catcher " |
483 "#%d:%s\n", | 483 "#%d:%s\n", |
484 shared_info->DebugName()->ToCString().get(), | 484 shared_info->DebugName()->ToCString().get(), |
485 info_->shared_info()->DebugName()->ToCString().get(), | 485 info_->shared_info()->DebugName()->ToCString().get(), |
486 exception_target->id(), exception_target->op()->mnemonic()); | 486 exception_target->id(), exception_target->op()->mnemonic()); |
487 } | 487 } |
488 } | 488 } |
489 | 489 |
490 Zone zone(info_->isolate()->allocator(), ZONE_NAME); | 490 ParseInfo parse_info(shared_info); |
491 ParseInfo parse_info(&zone, shared_info); | |
492 CompilationInfo info(&parse_info, Handle<JSFunction>::null()); | 491 CompilationInfo info(&parse_info, Handle<JSFunction>::null()); |
493 if (info_->is_deoptimization_enabled()) info.MarkAsDeoptimizationEnabled(); | 492 if (info_->is_deoptimization_enabled()) info.MarkAsDeoptimizationEnabled(); |
494 info.MarkAsOptimizeFromBytecode(); | 493 info.MarkAsOptimizeFromBytecode(); |
495 | 494 |
496 if (!Compiler::EnsureBytecode(&info)) { | 495 if (!Compiler::EnsureBytecode(&info)) { |
497 TRACE("Not inlining %s into %s because bytecode generation failed\n", | 496 TRACE("Not inlining %s into %s because bytecode generation failed\n", |
498 shared_info->DebugName()->ToCString().get(), | 497 shared_info->DebugName()->ToCString().get(), |
499 info_->shared_info()->DebugName()->ToCString().get()); | 498 info_->shared_info()->DebugName()->ToCString().get()); |
500 if (info_->isolate()->has_pending_exception()) { | 499 if (info_->isolate()->has_pending_exception()) { |
501 info_->isolate()->clear_pending_exception(); | 500 info_->isolate()->clear_pending_exception(); |
(...skipping 18 matching lines...) Expand all Loading... |
520 // If function was lazily compiled, its literals array may not yet be set up. | 519 // If function was lazily compiled, its literals array may not yet be set up. |
521 JSFunction::EnsureLiterals(function); | 520 JSFunction::EnsureLiterals(function); |
522 | 521 |
523 // Create the subgraph for the inlinee. | 522 // Create the subgraph for the inlinee. |
524 Node* start; | 523 Node* start; |
525 Node* end; | 524 Node* end; |
526 { | 525 { |
527 // Run the BytecodeGraphBuilder to create the subgraph. | 526 // Run the BytecodeGraphBuilder to create the subgraph. |
528 Graph::SubgraphScope scope(graph()); | 527 Graph::SubgraphScope scope(graph()); |
529 BytecodeGraphBuilder graph_builder( | 528 BytecodeGraphBuilder graph_builder( |
530 &zone, shared_info, handle(function->feedback_vector()), | 529 parse_info.zone(), shared_info, handle(function->feedback_vector()), |
531 BailoutId::None(), jsgraph(), call.frequency(), source_positions_, | 530 BailoutId::None(), jsgraph(), call.frequency(), source_positions_, |
532 inlining_id); | 531 inlining_id); |
533 graph_builder.CreateGraph(false); | 532 graph_builder.CreateGraph(false); |
534 | 533 |
535 // Extract the inlinee start/end nodes. | 534 // Extract the inlinee start/end nodes. |
536 start = graph()->start(); | 535 start = graph()->start(); |
537 end = graph()->end(); | 536 end = graph()->end(); |
538 } | 537 } |
539 | 538 |
540 if (exception_target != nullptr) { | 539 if (exception_target != nullptr) { |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
670 | 669 |
671 CommonOperatorBuilder* JSInliner::common() const { return jsgraph()->common(); } | 670 CommonOperatorBuilder* JSInliner::common() const { return jsgraph()->common(); } |
672 | 671 |
673 SimplifiedOperatorBuilder* JSInliner::simplified() const { | 672 SimplifiedOperatorBuilder* JSInliner::simplified() const { |
674 return jsgraph()->simplified(); | 673 return jsgraph()->simplified(); |
675 } | 674 } |
676 | 675 |
677 } // namespace compiler | 676 } // namespace compiler |
678 } // namespace internal | 677 } // namespace internal |
679 } // namespace v8 | 678 } // namespace v8 |
OLD | NEW |