Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(136)

Side by Side Diff: src/compiler.cc

Issue 14253015: Skip samples where top function's stack frame is not setup properly (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Supported other archs Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 function_ = NULL; 96 function_ = NULL;
97 scope_ = NULL; 97 scope_ = NULL;
98 global_scope_ = NULL; 98 global_scope_ = NULL;
99 extension_ = NULL; 99 extension_ = NULL;
100 pre_parse_data_ = NULL; 100 pre_parse_data_ = NULL;
101 zone_ = zone; 101 zone_ = zone;
102 deferred_handles_ = NULL; 102 deferred_handles_ = NULL;
103 code_stub_ = NULL; 103 code_stub_ = NULL;
104 prologue_offset_ = kPrologueOffsetNotSet; 104 prologue_offset_ = kPrologueOffsetNotSet;
105 opt_count_ = shared_info().is_null() ? 0 : shared_info()->opt_count(); 105 opt_count_ = shared_info().is_null() ? 0 : shared_info()->opt_count();
106 no_frame_ranges_ = isolate->cpu_profiler()->is_profiling() ?
Jakob Kummerow 2013/05/14 12:38:51 nit: putting the '?' on the second line is prefera
yurys 2013/05/14 22:51:19 Done.
107 new List<OffsetRange>(2) : NULL;
106 if (mode == STUB) { 108 if (mode == STUB) {
107 mode_ = STUB; 109 mode_ = STUB;
108 return; 110 return;
109 } 111 }
110 mode_ = V8::UseCrankshaft() ? mode : NONOPT; 112 mode_ = V8::UseCrankshaft() ? mode : NONOPT;
111 if (script_->type()->value() == Script::TYPE_NATIVE) { 113 if (script_->type()->value() == Script::TYPE_NATIVE) {
112 MarkAsNative(); 114 MarkAsNative();
113 } 115 }
114 if (!shared_info_.is_null()) { 116 if (!shared_info_.is_null()) {
115 ASSERT(language_mode() == CLASSIC_MODE); 117 ASSERT(language_mode() == CLASSIC_MODE);
116 SetLanguageMode(shared_info_->language_mode()); 118 SetLanguageMode(shared_info_->language_mode());
117 } 119 }
118 set_bailout_reason("unknown"); 120 set_bailout_reason("unknown");
119 } 121 }
120 122
121 123
122 CompilationInfo::~CompilationInfo() { 124 CompilationInfo::~CompilationInfo() {
123 delete deferred_handles_; 125 delete deferred_handles_;
126 delete no_frame_ranges_;
124 } 127 }
125 128
126 129
127 int CompilationInfo::num_parameters() const { 130 int CompilationInfo::num_parameters() const {
128 ASSERT(!IsStub()); 131 ASSERT(!IsStub());
129 return scope()->num_parameters(); 132 return scope()->num_parameters();
130 } 133 }
131 134
132 135
133 int CompilationInfo::num_heap_slots() const { 136 int CompilationInfo::num_heap_slots() const {
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 ASSERT_EQ(RelocInfo::kNoPosition, lit->function_token_position()); 569 ASSERT_EQ(RelocInfo::kNoPosition, lit->function_token_position());
567 Compiler::SetFunctionInfo(result, lit, true, script); 570 Compiler::SetFunctionInfo(result, lit, true, script);
568 571
569 if (script->name()->IsString()) { 572 if (script->name()->IsString()) {
570 PROFILE(isolate, CodeCreateEvent( 573 PROFILE(isolate, CodeCreateEvent(
571 info->is_eval() 574 info->is_eval()
572 ? Logger::EVAL_TAG 575 ? Logger::EVAL_TAG
573 : Logger::ToNativeByScript(Logger::SCRIPT_TAG, *script), 576 : Logger::ToNativeByScript(Logger::SCRIPT_TAG, *script),
574 *info->code(), 577 *info->code(),
575 *result, 578 *result,
579 info,
576 String::cast(script->name()))); 580 String::cast(script->name())));
577 GDBJIT(AddCode(Handle<String>(String::cast(script->name())), 581 GDBJIT(AddCode(Handle<String>(String::cast(script->name())),
578 script, 582 script,
579 info->code(), 583 info->code(),
580 info)); 584 info));
581 } else { 585 } else {
582 PROFILE(isolate, CodeCreateEvent( 586 PROFILE(isolate, CodeCreateEvent(
583 info->is_eval() 587 info->is_eval()
584 ? Logger::EVAL_TAG 588 ? Logger::EVAL_TAG
585 : Logger::ToNativeByScript(Logger::SCRIPT_TAG, *script), 589 : Logger::ToNativeByScript(Logger::SCRIPT_TAG, *script),
586 *info->code(), 590 *info->code(),
587 *result, 591 *result,
592 info,
588 isolate->heap()->empty_string())); 593 isolate->heap()->empty_string()));
589 GDBJIT(AddCode(Handle<String>(), script, info->code(), info)); 594 GDBJIT(AddCode(Handle<String>(), script, info->code(), info));
590 } 595 }
591 596
592 // Hint to the runtime system used when allocating space for initial 597 // Hint to the runtime system used when allocating space for initial
593 // property space by setting the expected number of properties for 598 // property space by setting the expected number of properties for
594 // the instances of the function. 599 // the instances of the function.
595 SetExpectedNofPropertiesFromEstimate(result, lit->expected_property_count()); 600 SetExpectedNofPropertiesFromEstimate(result, lit->expected_property_count());
596 601
597 script->set_compilation_state( 602 script->set_compilation_state(
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
805 static void InstallCodeCommon(CompilationInfo* info) { 810 static void InstallCodeCommon(CompilationInfo* info) {
806 Handle<SharedFunctionInfo> shared = info->shared_info(); 811 Handle<SharedFunctionInfo> shared = info->shared_info();
807 Handle<Code> code = info->code(); 812 Handle<Code> code = info->code();
808 ASSERT(!code.is_null()); 813 ASSERT(!code.is_null());
809 814
810 // Set optimizable to false if this is disallowed by the shared 815 // Set optimizable to false if this is disallowed by the shared
811 // function info, e.g., we might have flushed the code and must 816 // function info, e.g., we might have flushed the code and must
812 // reset this bit when lazy compiling the code again. 817 // reset this bit when lazy compiling the code again.
813 if (shared->optimization_disabled()) code->set_optimizable(false); 818 if (shared->optimization_disabled()) code->set_optimizable(false);
814 819
820 if (shared->code() == *code) {
821 // Do not send compilation event for the same code twice.
822 return;
823 }
815 Compiler::RecordFunctionCompilation(Logger::LAZY_COMPILE_TAG, info, shared); 824 Compiler::RecordFunctionCompilation(Logger::LAZY_COMPILE_TAG, info, shared);
816 } 825 }
817 826
818 827
819 static void InsertCodeIntoOptimizedCodeMap(CompilationInfo* info) { 828 static void InsertCodeIntoOptimizedCodeMap(CompilationInfo* info) {
820 Handle<Code> code = info->code(); 829 Handle<Code> code = info->code();
821 if (FLAG_cache_optimized_code && 830 if (FLAG_cache_optimized_code &&
822 info->osr_ast_id().IsNone() && 831 info->osr_ast_id().IsNone() &&
823 code->kind() == Code::OPTIMIZED_FUNCTION) { 832 code->kind() == Code::OPTIMIZED_FUNCTION) {
824 Handle<JSFunction> function = info->closure(); 833 Handle<JSFunction> function = info->closure();
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after
1149 Handle<Code> code = info->code(); 1158 Handle<Code> code = info->code();
1150 if (*code == info->isolate()->builtins()->builtin(Builtins::kLazyCompile)) 1159 if (*code == info->isolate()->builtins()->builtin(Builtins::kLazyCompile))
1151 return; 1160 return;
1152 if (script->name()->IsString()) { 1161 if (script->name()->IsString()) {
1153 int line_num = GetScriptLineNumber(script, shared->start_position()) + 1; 1162 int line_num = GetScriptLineNumber(script, shared->start_position()) + 1;
1154 USE(line_num); 1163 USE(line_num);
1155 PROFILE(info->isolate(), 1164 PROFILE(info->isolate(),
1156 CodeCreateEvent(Logger::ToNativeByScript(tag, *script), 1165 CodeCreateEvent(Logger::ToNativeByScript(tag, *script),
1157 *code, 1166 *code,
1158 *shared, 1167 *shared,
1168 info,
1159 String::cast(script->name()), 1169 String::cast(script->name()),
1160 line_num)); 1170 line_num));
1161 } else { 1171 } else {
1162 PROFILE(info->isolate(), 1172 PROFILE(info->isolate(),
1163 CodeCreateEvent(Logger::ToNativeByScript(tag, *script), 1173 CodeCreateEvent(Logger::ToNativeByScript(tag, *script),
1164 *code, 1174 *code,
1165 *shared, 1175 *shared,
1176 info,
1166 shared->DebugName())); 1177 shared->DebugName()));
1167 } 1178 }
1168 } 1179 }
1169 1180
1170 GDBJIT(AddCode(Handle<String>(shared->DebugName()), 1181 GDBJIT(AddCode(Handle<String>(shared->DebugName()),
1171 Handle<Script>(info->script()), 1182 Handle<Script>(info->script()),
1172 Handle<Code>(info->code()), 1183 Handle<Code>(info->code()),
1173 info)); 1184 info));
1174 } 1185 }
1175 1186
1176 } } // namespace v8::internal 1187 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698