Chromium Code Reviews| 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 |