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 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 if (!ava.Analyze()) return Handle<Code>::null(); | 113 if (!ava.Analyze()) return Handle<Code>::null(); |
114 return CodeGenerator::MakeCode(info); | 114 return CodeGenerator::MakeCode(info); |
115 } | 115 } |
116 | 116 |
117 | 117 |
118 #ifdef ENABLE_DEBUGGER_SUPPORT | 118 #ifdef ENABLE_DEBUGGER_SUPPORT |
119 Handle<Code> MakeCodeForLiveEdit(CompilationInfo* info) { | 119 Handle<Code> MakeCodeForLiveEdit(CompilationInfo* info) { |
120 Handle<Context> context = Handle<Context>::null(); | 120 Handle<Context> context = Handle<Context>::null(); |
121 Handle<Code> code = MakeCode(context, info); | 121 Handle<Code> code = MakeCode(context, info); |
122 if (!info->shared_info().is_null()) { | 122 if (!info->shared_info().is_null()) { |
123 info->shared_info()->set_scope_info( | 123 Handle<SerializedScopeInfo> scope_info = |
124 *SerializedScopeInfo::Create(info->scope())); | 124 SerializedScopeInfo::Create(info->scope()); |
| 125 info->shared_info()->set_scope_info(*scope_info); |
125 } | 126 } |
126 return code; | 127 return code; |
127 } | 128 } |
128 #endif | 129 #endif |
129 | 130 |
130 | 131 |
131 static Handle<SharedFunctionInfo> MakeFunctionInfo(bool is_global, | 132 static Handle<SharedFunctionInfo> MakeFunctionInfo(bool is_global, |
132 bool is_eval, | 133 bool is_eval, |
133 Compiler::ValidationState validate, | 134 Compiler::ValidationState validate, |
134 Handle<Script> script, | 135 Handle<Script> script, |
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
413 | 414 |
414 RecordFunctionCompilation(Logger::LAZY_COMPILE_TAG, | 415 RecordFunctionCompilation(Logger::LAZY_COMPILE_TAG, |
415 name, | 416 name, |
416 Handle<String>(shared->inferred_name()), | 417 Handle<String>(shared->inferred_name()), |
417 start_position, | 418 start_position, |
418 info->script(), | 419 info->script(), |
419 code); | 420 code); |
420 | 421 |
421 // Update the shared function info with the compiled code and the scope info. | 422 // Update the shared function info with the compiled code and the scope info. |
422 // Please note, that the order of the sharedfunction initialization is | 423 // Please note, that the order of the sharedfunction initialization is |
423 // important since set_scope_info might trigger a GC, causing the ASSERT | 424 // important since SerializedScopeInfo::Create might trigger a GC, causing |
424 // below to be invalid if the code was flushed. By settting the code | 425 // the ASSERT below to be invalid if the code was flushed. By setting the code |
425 // object last we avoid this. | 426 // object last we avoid this. |
426 shared->set_scope_info(*SerializedScopeInfo::Create(info->scope())); | 427 Handle<SerializedScopeInfo> scope_info = |
| 428 SerializedScopeInfo::Create(info->scope()); |
| 429 shared->set_scope_info(*scope_info); |
427 shared->set_code(*code); | 430 shared->set_code(*code); |
428 if (!info->closure().is_null()) { | 431 if (!info->closure().is_null()) { |
429 info->closure()->set_code(*code); | 432 info->closure()->set_code(*code); |
430 } | 433 } |
431 | 434 |
432 // Set the expected number of properties for instances. | 435 // Set the expected number of properties for instances. |
433 SetExpectedNofPropertiesFromEstimate(shared, lit->expected_property_count()); | 436 SetExpectedNofPropertiesFromEstimate(shared, lit->expected_property_count()); |
434 | 437 |
435 // Set the optimication hints after performing lazy compilation, as these are | 438 // Set the optimication hints after performing lazy compilation, as these are |
436 // not set when the function is set up as a lazily compiled function. | 439 // not set when the function is set up as a lazily compiled function. |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
578 PROFILE(CodeCreateEvent(Logger::ToNativeByScript(tag, *script), | 581 PROFILE(CodeCreateEvent(Logger::ToNativeByScript(tag, *script), |
579 *code, *func_name)); | 582 *code, *func_name)); |
580 OPROFILE(CreateNativeCodeRegion(*func_name, | 583 OPROFILE(CreateNativeCodeRegion(*func_name, |
581 code->instruction_start(), | 584 code->instruction_start(), |
582 code->instruction_size())); | 585 code->instruction_size())); |
583 } | 586 } |
584 } | 587 } |
585 } | 588 } |
586 | 589 |
587 } } // namespace v8::internal | 590 } } // namespace v8::internal |
OLD | NEW |