OLD | NEW |
---|---|
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 628 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
639 if (!allocator.Allocate(chunk)) { | 639 if (!allocator.Allocate(chunk)) { |
640 if (FLAG_trace_bailout) { | 640 if (FLAG_trace_bailout) { |
641 PrintF("Not enough virtual registers (regalloc).\n"); | 641 PrintF("Not enough virtual registers (regalloc).\n"); |
642 } | 642 } |
643 return Handle<Code>::null(); | 643 return Handle<Code>::null(); |
644 } | 644 } |
645 | 645 |
646 MacroAssembler assembler(info->isolate(), NULL, 0); | 646 MacroAssembler assembler(info->isolate(), NULL, 0); |
647 LCodeGen generator(chunk, &assembler, info); | 647 LCodeGen generator(chunk, &assembler, info); |
648 | 648 |
649 if (FLAG_eliminate_empty_blocks) { | 649 chunk->MarkEmptyBlocks(); |
650 chunk->MarkEmptyBlocks(); | |
651 } | |
652 | 650 |
653 if (generator.GenerateCode()) { | 651 if (generator.GenerateCode()) { |
654 if (FLAG_trace_codegen) { | 652 if (FLAG_trace_codegen) { |
655 PrintF("Crankshaft Compiler - "); | 653 PrintF("Crankshaft Compiler - "); |
656 } | 654 } |
657 CodeGenerator::MakeCodePrologue(info); | 655 CodeGenerator::MakeCodePrologue(info); |
658 Code::Flags flags = Code::ComputeFlags(Code::OPTIMIZED_FUNCTION); | 656 Code::Flags flags = Code::ComputeFlags(Code::OPTIMIZED_FUNCTION); |
659 Handle<Code> code = | 657 Handle<Code> code = |
660 CodeGenerator::MakeCodeEpilogue(&assembler, flags, info); | 658 CodeGenerator::MakeCodeEpilogue(&assembler, flags, info); |
661 generator.FinishCode(code); | 659 generator.FinishCode(code); |
(...skipping 1702 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2364 graph()->PropagateDeoptimizingMark(); | 2362 graph()->PropagateDeoptimizingMark(); |
2365 if (!graph()->CheckConstPhiUses()) { | 2363 if (!graph()->CheckConstPhiUses()) { |
2366 Bailout("Unsupported phi use of const variable"); | 2364 Bailout("Unsupported phi use of const variable"); |
2367 return NULL; | 2365 return NULL; |
2368 } | 2366 } |
2369 graph()->EliminateRedundantPhis(); | 2367 graph()->EliminateRedundantPhis(); |
2370 if (!graph()->CheckArgumentsPhiUses()) { | 2368 if (!graph()->CheckArgumentsPhiUses()) { |
2371 Bailout("Unsupported phi use of arguments"); | 2369 Bailout("Unsupported phi use of arguments"); |
2372 return NULL; | 2370 return NULL; |
2373 } | 2371 } |
2374 if (FLAG_eliminate_dead_phis) graph()->EliminateUnreachablePhis(); | 2372 graph()->EliminateUnreachablePhis(); |
Vyacheslav Egorov (Chromium)
2012/02/08 15:31:12
please keep this flag it helps debugging.
| |
2375 graph()->CollectPhis(); | 2373 graph()->CollectPhis(); |
2376 | 2374 |
2377 HInferRepresentation rep(graph()); | 2375 HInferRepresentation rep(graph()); |
2378 rep.Analyze(); | 2376 rep.Analyze(); |
2379 | 2377 |
2380 graph()->MarkDeoptimizeOnUndefined(); | 2378 graph()->MarkDeoptimizeOnUndefined(); |
2381 graph()->InsertRepresentationChanges(); | 2379 graph()->InsertRepresentationChanges(); |
2382 | 2380 |
2383 graph()->InitializeInferredTypes(); | 2381 graph()->InitializeInferredTypes(); |
2384 graph()->Canonicalize(); | 2382 graph()->Canonicalize(); |
(...skipping 5130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
7515 } | 7513 } |
7516 } | 7514 } |
7517 | 7515 |
7518 #ifdef DEBUG | 7516 #ifdef DEBUG |
7519 if (graph_ != NULL) graph_->Verify(false); // No full verify. | 7517 if (graph_ != NULL) graph_->Verify(false); // No full verify. |
7520 if (allocator_ != NULL) allocator_->Verify(); | 7518 if (allocator_ != NULL) allocator_->Verify(); |
7521 #endif | 7519 #endif |
7522 } | 7520 } |
7523 | 7521 |
7524 } } // namespace v8::internal | 7522 } } // namespace v8::internal |
OLD | NEW |