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 2283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2294 | 2294 |
2295 { | 2295 { |
2296 HPhase phase("Block building"); | 2296 HPhase phase("Block building"); |
2297 current_block_ = graph()->entry_block(); | 2297 current_block_ = graph()->entry_block(); |
2298 | 2298 |
2299 Scope* scope = info()->scope(); | 2299 Scope* scope = info()->scope(); |
2300 if (scope->HasIllegalRedeclaration()) { | 2300 if (scope->HasIllegalRedeclaration()) { |
2301 Bailout("function with illegal redeclaration"); | 2301 Bailout("function with illegal redeclaration"); |
2302 return NULL; | 2302 return NULL; |
2303 } | 2303 } |
2304 SetupScope(scope); | 2304 SetUpScope(scope); |
2305 | 2305 |
2306 // Add an edge to the body entry. This is warty: the graph's start | 2306 // Add an edge to the body entry. This is warty: the graph's start |
2307 // environment will be used by the Lithium translation as the initial | 2307 // environment will be used by the Lithium translation as the initial |
2308 // environment on graph entry, but it has now been mutated by the | 2308 // environment on graph entry, but it has now been mutated by the |
2309 // Hydrogen translation of the instructions in the start block. This | 2309 // Hydrogen translation of the instructions in the start block. This |
2310 // environment uses values which have not been defined yet. These | 2310 // environment uses values which have not been defined yet. These |
2311 // Hydrogen instructions will then be replayed by the Lithium | 2311 // Hydrogen instructions will then be replayed by the Lithium |
2312 // translation, so they cannot have an environment effect. The edge to | 2312 // translation, so they cannot have an environment effect. The edge to |
2313 // the body's entry block (along with some special logic for the start | 2313 // the body's entry block (along with some special logic for the start |
2314 // block in HInstruction::InsertAfter) seals the start block from | 2314 // block in HInstruction::InsertAfter) seals the start block from |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2458 arguments.Add(Pop()); | 2458 arguments.Add(Pop()); |
2459 } | 2459 } |
2460 | 2460 |
2461 while (!arguments.is_empty()) { | 2461 while (!arguments.is_empty()) { |
2462 AddInstruction(new(zone()) HPushArgument(arguments.RemoveLast())); | 2462 AddInstruction(new(zone()) HPushArgument(arguments.RemoveLast())); |
2463 } | 2463 } |
2464 return call; | 2464 return call; |
2465 } | 2465 } |
2466 | 2466 |
2467 | 2467 |
2468 void HGraphBuilder::SetupScope(Scope* scope) { | 2468 void HGraphBuilder::SetUpScope(Scope* scope) { |
2469 HConstant* undefined_constant = new(zone()) HConstant( | 2469 HConstant* undefined_constant = new(zone()) HConstant( |
2470 isolate()->factory()->undefined_value(), Representation::Tagged()); | 2470 isolate()->factory()->undefined_value(), Representation::Tagged()); |
2471 AddInstruction(undefined_constant); | 2471 AddInstruction(undefined_constant); |
2472 graph_->set_undefined_constant(undefined_constant); | 2472 graph_->set_undefined_constant(undefined_constant); |
2473 | 2473 |
2474 // Set the initial values of parameters including "this". "This" has | 2474 // Set the initial values of parameters including "this". "This" has |
2475 // parameter index 0. | 2475 // parameter index 0. |
2476 ASSERT_EQ(scope->num_parameters() + 1, environment()->parameter_count()); | 2476 ASSERT_EQ(scope->num_parameters() + 1, environment()->parameter_count()); |
2477 | 2477 |
2478 for (int i = 0; i < environment()->parameter_count(); ++i) { | 2478 for (int i = 0; i < environment()->parameter_count(); ++i) { |
(...skipping 4838 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7317 } | 7317 } |
7318 } | 7318 } |
7319 | 7319 |
7320 #ifdef DEBUG | 7320 #ifdef DEBUG |
7321 if (graph_ != NULL) graph_->Verify(false); // No full verify. | 7321 if (graph_ != NULL) graph_->Verify(false); // No full verify. |
7322 if (allocator_ != NULL) allocator_->Verify(); | 7322 if (allocator_ != NULL) allocator_->Verify(); |
7323 #endif | 7323 #endif |
7324 } | 7324 } |
7325 | 7325 |
7326 } } // namespace v8::internal | 7326 } } // namespace v8::internal |
OLD | NEW |