OLD | NEW |
1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 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 3260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3271 set_in_spilled_code(false); | 3271 set_in_spilled_code(false); |
3272 Visit(statement); | 3272 Visit(statement); |
3273 if (frame_ != NULL) { | 3273 if (frame_ != NULL) { |
3274 frame_->SpillAll(); | 3274 frame_->SpillAll(); |
3275 } | 3275 } |
3276 set_in_spilled_code(true); | 3276 set_in_spilled_code(true); |
3277 } | 3277 } |
3278 | 3278 |
3279 | 3279 |
3280 void CodeGenerator::VisitStatementsAndSpill(ZoneList<Statement*>* statements) { | 3280 void CodeGenerator::VisitStatementsAndSpill(ZoneList<Statement*>* statements) { |
| 3281 #ifdef DEBUG |
| 3282 int original_height = frame_->height(); |
| 3283 #endif |
3281 ASSERT(in_spilled_code()); | 3284 ASSERT(in_spilled_code()); |
3282 set_in_spilled_code(false); | 3285 set_in_spilled_code(false); |
3283 VisitStatements(statements); | 3286 VisitStatements(statements); |
3284 if (frame_ != NULL) { | 3287 if (frame_ != NULL) { |
3285 frame_->SpillAll(); | 3288 frame_->SpillAll(); |
3286 } | 3289 } |
3287 set_in_spilled_code(true); | 3290 set_in_spilled_code(true); |
| 3291 |
| 3292 ASSERT(!has_valid_frame() || frame_->height() == original_height); |
3288 } | 3293 } |
3289 | 3294 |
3290 | 3295 |
3291 void CodeGenerator::VisitStatements(ZoneList<Statement*>* statements) { | 3296 void CodeGenerator::VisitStatements(ZoneList<Statement*>* statements) { |
| 3297 #ifdef DEBUG |
| 3298 int original_height = frame_->height(); |
| 3299 #endif |
3292 ASSERT(!in_spilled_code()); | 3300 ASSERT(!in_spilled_code()); |
3293 for (int i = 0; has_valid_frame() && i < statements->length(); i++) { | 3301 for (int i = 0; has_valid_frame() && i < statements->length(); i++) { |
3294 Visit(statements->at(i)); | 3302 Visit(statements->at(i)); |
3295 } | 3303 } |
| 3304 ASSERT(!has_valid_frame() || frame_->height() == original_height); |
3296 } | 3305 } |
3297 | 3306 |
3298 | 3307 |
3299 void CodeGenerator::VisitBlock(Block* node) { | 3308 void CodeGenerator::VisitBlock(Block* node) { |
3300 ASSERT(!in_spilled_code()); | 3309 ASSERT(!in_spilled_code()); |
3301 Comment cmnt(masm_, "[ Block"); | 3310 Comment cmnt(masm_, "[ Block"); |
3302 CodeForStatementPosition(node); | 3311 CodeForStatementPosition(node); |
3303 node->break_target()->set_direction(JumpTarget::FORWARD_ONLY); | 3312 node->break_target()->set_direction(JumpTarget::FORWARD_ONLY); |
3304 VisitStatements(node->statements()); | 3313 VisitStatements(node->statements()); |
3305 if (node->break_target()->is_linked()) { | 3314 if (node->break_target()->is_linked()) { |
(...skipping 10394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13700 masm.GetCode(&desc); | 13709 masm.GetCode(&desc); |
13701 // Call the function from C++. | 13710 // Call the function from C++. |
13702 return FUNCTION_CAST<MemCopyFunction>(buffer); | 13711 return FUNCTION_CAST<MemCopyFunction>(buffer); |
13703 } | 13712 } |
13704 | 13713 |
13705 #undef __ | 13714 #undef __ |
13706 | 13715 |
13707 } } // namespace v8::internal | 13716 } } // namespace v8::internal |
13708 | 13717 |
13709 #endif // V8_TARGET_ARCH_IA32 | 13718 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |