OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
278 // deopt anyway, so just leave things as they are. | 278 // deopt anyway, so just leave things as they are. |
279 INC_STAT(empty_); | 279 INC_STAT(empty_); |
280 } else { | 280 } else { |
281 // Update set of maps in the entry. | 281 // Update set of maps in the entry. |
282 entry->maps_ = intersection; | 282 entry->maps_ = intersection; |
283 if (intersection->size() != i->size()) { | 283 if (intersection->size() != i->size()) { |
284 // Narrow set of maps in the second check maps instruction. | 284 // Narrow set of maps in the second check maps instruction. |
285 HGraph* graph = instr->block()->graph(); | 285 HGraph* graph = instr->block()->graph(); |
286 HCheckMaps* new_check_maps = | 286 HCheckMaps* new_check_maps = |
287 HCheckMaps::New(graph->zone(), NULL, instr->value(), | 287 HCheckMaps::New(graph->zone(), NULL, instr->value(), |
288 intersection, instr->typecheck()); | 288 intersection, instr->typecheck(), |
| 289 instr->has_migration_target()); |
289 if (entry->check_ != NULL && | 290 if (entry->check_ != NULL && |
290 entry->check_->block() == instr->block()) { | 291 entry->check_->block() == instr->block()) { |
291 // There is a check in the same block so replace it with a more | 292 // There is a check in the same block so replace it with a more |
292 // strict check and eliminate the second check entirely. | 293 // strict check and eliminate the second check entirely. |
293 new_check_maps->InsertBefore(entry->check_); | 294 new_check_maps->InsertBefore(entry->check_); |
294 entry->check_->DeleteAndReplaceWith(new_check_maps); | 295 entry->check_->DeleteAndReplaceWith(new_check_maps); |
295 TRACE(("Check #%d narrowed to #%d\n", | 296 TRACE(("Check #%d narrowed to #%d\n", |
296 entry->check_->id(), new_check_maps->id())); | 297 entry->check_->id(), new_check_maps->id())); |
297 | 298 |
298 } else { | 299 } else { |
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
642 PRINT_STAT(removed_cho); | 643 PRINT_STAT(removed_cho); |
643 PRINT_STAT(narrowed); | 644 PRINT_STAT(narrowed); |
644 PRINT_STAT(loads); | 645 PRINT_STAT(loads); |
645 PRINT_STAT(empty); | 646 PRINT_STAT(empty); |
646 PRINT_STAT(compares_true); | 647 PRINT_STAT(compares_true); |
647 PRINT_STAT(compares_false); | 648 PRINT_STAT(compares_false); |
648 PRINT_STAT(transitions); | 649 PRINT_STAT(transitions); |
649 } | 650 } |
650 | 651 |
651 } } // namespace v8::internal | 652 } } // namespace v8::internal |
OLD | NEW |