| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 "hydrogen-check-elimination.h" | 5 #include "hydrogen-check-elimination.h" |
| 6 #include "hydrogen-alias-analysis.h" | 6 #include "hydrogen-alias-analysis.h" |
| 7 #include "hydrogen-flow-engine.h" | 7 #include "hydrogen-flow-engine.h" |
| 8 | 8 |
| 9 #define GLOBAL 1 | 9 #define GLOBAL 1 |
| 10 | 10 |
| (...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 333 } else { | 333 } else { |
| 334 // No entry; insert a new one. | 334 // No entry; insert a new one. |
| 335 Insert(object, instr, instr->maps()); | 335 Insert(object, instr, instr->maps()); |
| 336 } | 336 } |
| 337 } | 337 } |
| 338 | 338 |
| 339 void ReduceLoadNamedField(HLoadNamedField* instr) { | 339 void ReduceLoadNamedField(HLoadNamedField* instr) { |
| 340 // Reduce a load of the map field when it is known to be a constant. | 340 // Reduce a load of the map field when it is known to be a constant. |
| 341 if (!instr->access().IsMap()) { | 341 if (!instr->access().IsMap()) { |
| 342 // Check if we introduce field maps here. | 342 // Check if we introduce field maps here. |
| 343 if (instr->maps()->size() != 0) { | 343 MapSet maps = instr->maps(); |
| 344 Insert(instr, instr, instr->maps()); | 344 if (maps != NULL) { |
| 345 ASSERT_NE(0, maps->size()); |
| 346 Insert(instr, NULL, maps); |
| 345 } | 347 } |
| 346 return; | 348 return; |
| 347 } | 349 } |
| 348 | 350 |
| 349 HValue* object = instr->object()->ActualValue(); | 351 HValue* object = instr->object()->ActualValue(); |
| 350 MapSet maps = FindMaps(object); | 352 MapSet maps = FindMaps(object); |
| 351 if (maps == NULL || maps->size() != 1) return; // Not a constant. | 353 if (maps == NULL || maps->size() != 1) return; // Not a constant. |
| 352 | 354 |
| 353 Unique<Map> map = maps->at(0); | 355 Unique<Map> map = maps->at(0); |
| 354 HConstant* constant = HConstant::CreateAndInsertBefore( | 356 HConstant* constant = HConstant::CreateAndInsertBefore( |
| (...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 656 PRINT_STAT(removed_cho); | 658 PRINT_STAT(removed_cho); |
| 657 PRINT_STAT(narrowed); | 659 PRINT_STAT(narrowed); |
| 658 PRINT_STAT(loads); | 660 PRINT_STAT(loads); |
| 659 PRINT_STAT(empty); | 661 PRINT_STAT(empty); |
| 660 PRINT_STAT(compares_true); | 662 PRINT_STAT(compares_true); |
| 661 PRINT_STAT(compares_false); | 663 PRINT_STAT(compares_false); |
| 662 PRINT_STAT(transitions); | 664 PRINT_STAT(transitions); |
| 663 } | 665 } |
| 664 | 666 |
| 665 } } // namespace v8::internal | 667 } } // namespace v8::internal |
| OLD | NEW |