OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 | 64 |
65 #ifdef ENABLE_DEBUGGER_SUPPORT | 65 #ifdef ENABLE_DEBUGGER_SUPPORT |
66 void DeoptimizerData::Iterate(ObjectVisitor* v) { | 66 void DeoptimizerData::Iterate(ObjectVisitor* v) { |
67 if (deoptimized_frame_info_ != NULL) { | 67 if (deoptimized_frame_info_ != NULL) { |
68 deoptimized_frame_info_->Iterate(v); | 68 deoptimized_frame_info_->Iterate(v); |
69 } | 69 } |
70 } | 70 } |
71 #endif | 71 #endif |
72 | 72 |
73 | 73 |
| 74 // We rely on this function not causing a GC. It is called from generated code |
| 75 // without having a real stack frame in place. |
74 Deoptimizer* Deoptimizer::New(JSFunction* function, | 76 Deoptimizer* Deoptimizer::New(JSFunction* function, |
75 BailoutType type, | 77 BailoutType type, |
76 unsigned bailout_id, | 78 unsigned bailout_id, |
77 Address from, | 79 Address from, |
78 int fp_to_sp_delta, | 80 int fp_to_sp_delta, |
79 Isolate* isolate) { | 81 Isolate* isolate) { |
80 ASSERT(isolate == Isolate::Current()); | 82 ASSERT(isolate == Isolate::Current()); |
81 Deoptimizer* deoptimizer = new Deoptimizer(isolate, | 83 Deoptimizer* deoptimizer = new Deoptimizer(isolate, |
82 function, | 84 function, |
83 type, | 85 type, |
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
455 DeoptimizingCodeListNode* node = | 457 DeoptimizingCodeListNode* node = |
456 isolate->deoptimizer_data()->deoptimizing_code_list_; | 458 isolate->deoptimizer_data()->deoptimizing_code_list_; |
457 while (node != NULL) { | 459 while (node != NULL) { |
458 length++; | 460 length++; |
459 node = node->next(); | 461 node = node->next(); |
460 } | 462 } |
461 return length; | 463 return length; |
462 } | 464 } |
463 | 465 |
464 | 466 |
| 467 // We rely on this function not causing a GC. It is called from generated code |
| 468 // without having a real stack frame in place. |
465 void Deoptimizer::DoComputeOutputFrames() { | 469 void Deoptimizer::DoComputeOutputFrames() { |
466 if (bailout_type_ == OSR) { | 470 if (bailout_type_ == OSR) { |
467 DoComputeOsrOutputFrame(); | 471 DoComputeOsrOutputFrame(); |
468 return; | 472 return; |
469 } | 473 } |
470 | 474 |
471 // Print some helpful diagnostic information. | 475 // Print some helpful diagnostic information. |
472 int64_t start = OS::Ticks(); | 476 int64_t start = OS::Ticks(); |
473 if (FLAG_trace_deopt) { | 477 if (FLAG_trace_deopt) { |
474 PrintF("[deoptimizing%s: begin 0x%08" V8PRIxPTR " ", | 478 PrintF("[deoptimizing%s: begin 0x%08" V8PRIxPTR " ", |
(...skipping 989 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1464 | 1468 |
1465 void DeoptimizedFrameInfo::Iterate(ObjectVisitor* v) { | 1469 void DeoptimizedFrameInfo::Iterate(ObjectVisitor* v) { |
1466 v->VisitPointer(BitCast<Object**>(&function_)); | 1470 v->VisitPointer(BitCast<Object**>(&function_)); |
1467 v->VisitPointers(parameters_, parameters_ + parameters_count_); | 1471 v->VisitPointers(parameters_, parameters_ + parameters_count_); |
1468 v->VisitPointers(expression_stack_, expression_stack_ + expression_count_); | 1472 v->VisitPointers(expression_stack_, expression_stack_ + expression_count_); |
1469 } | 1473 } |
1470 | 1474 |
1471 #endif // ENABLE_DEBUGGER_SUPPORT | 1475 #endif // ENABLE_DEBUGGER_SUPPORT |
1472 | 1476 |
1473 } } // namespace v8::internal | 1477 } } // namespace v8::internal |
OLD | NEW |