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 600 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
611 Handle<Code> code = info->code(); | 611 Handle<Code> code = info->code(); |
612 // Set optimizable to false if this is disallowed by the shared | 612 // Set optimizable to false if this is disallowed by the shared |
613 // function info, e.g., we might have flushed the code and must | 613 // function info, e.g., we might have flushed the code and must |
614 // reset this bit when lazy compiling the code again. | 614 // reset this bit when lazy compiling the code again. |
615 if (shared->optimization_disabled()) code->set_optimizable(false); | 615 if (shared->optimization_disabled()) code->set_optimizable(false); |
616 | 616 |
617 Handle<JSFunction> function = info->closure(); | 617 Handle<JSFunction> function = info->closure(); |
618 RecordFunctionCompilation(Logger::LAZY_COMPILE_TAG, info, shared); | 618 RecordFunctionCompilation(Logger::LAZY_COMPILE_TAG, info, shared); |
619 | 619 |
620 if (info->IsOptimizing()) { | 620 if (info->IsOptimizing()) { |
| 621 ASSERT(shared->scope_info() != SerializedScopeInfo::Empty()); |
621 function->ReplaceCode(*code); | 622 function->ReplaceCode(*code); |
622 } else { | 623 } else { |
623 // Update the shared function info with the compiled code and the | 624 // Update the shared function info with the compiled code and the |
624 // scope info. Please note, that the order of the shared function | 625 // scope info. Please note, that the order of the shared function |
625 // info initialization is important since set_scope_info might | 626 // info initialization is important since set_scope_info might |
626 // trigger a GC, causing the ASSERT below to be invalid if the code | 627 // trigger a GC, causing the ASSERT below to be invalid if the code |
627 // was flushed. By settting the code object last we avoid this. | 628 // was flushed. By settting the code object last we avoid this. |
628 Handle<SerializedScopeInfo> scope_info = | 629 Handle<SerializedScopeInfo> scope_info = |
629 SerializedScopeInfo::Create(info->scope()); | 630 SerializedScopeInfo::Create(info->scope()); |
630 shared->set_scope_info(*scope_info); | 631 shared->set_scope_info(*scope_info); |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
785 shared->DebugName())); | 786 shared->DebugName())); |
786 } | 787 } |
787 } | 788 } |
788 | 789 |
789 GDBJIT(AddCode(Handle<String>(shared->DebugName()), | 790 GDBJIT(AddCode(Handle<String>(shared->DebugName()), |
790 Handle<Script>(info->script()), | 791 Handle<Script>(info->script()), |
791 Handle<Code>(info->code()))); | 792 Handle<Code>(info->code()))); |
792 } | 793 } |
793 | 794 |
794 } } // namespace v8::internal | 795 } } // namespace v8::internal |
OLD | NEW |