Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_COMPILATION_INFO_H_ | 5 #ifndef V8_COMPILATION_INFO_H_ |
| 6 #define V8_COMPILATION_INFO_H_ | 6 #define V8_COMPILATION_INFO_H_ |
| 7 | 7 |
| 8 #include <memory> | 8 #include <memory> |
| 9 | 9 |
| 10 #include "src/compilation-dependencies.h" | 10 #include "src/compilation-dependencies.h" |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 276 struct InlinedFunctionHolder { | 276 struct InlinedFunctionHolder { |
| 277 Handle<SharedFunctionInfo> shared_info; | 277 Handle<SharedFunctionInfo> shared_info; |
| 278 | 278 |
| 279 // Root that holds the unoptimized code of the inlined function alive | 279 // Root that holds the unoptimized code of the inlined function alive |
| 280 // (and out of reach of code flushing) until we finish compilation. | 280 // (and out of reach of code flushing) until we finish compilation. |
| 281 // Do not remove. | 281 // Do not remove. |
| 282 Handle<Code> inlined_code_object_root; | 282 Handle<Code> inlined_code_object_root; |
| 283 | 283 |
| 284 InliningPosition position; | 284 InliningPosition position; |
| 285 | 285 |
| 286 static const int kSourceNotDumped = -1; | |
| 287 int source_id; | |
|
Tobias Tebbi
2016/12/15 16:22:01
These are too many ids. Now we have inlining_id, i
| |
| 288 | |
| 286 InlinedFunctionHolder(Handle<SharedFunctionInfo> inlined_shared_info, | 289 InlinedFunctionHolder(Handle<SharedFunctionInfo> inlined_shared_info, |
| 287 Handle<Code> inlined_code_object_root, | 290 Handle<Code> inlined_code_object_root, |
| 288 SourcePosition pos) | 291 SourcePosition pos) |
| 289 : shared_info(inlined_shared_info), | 292 : shared_info(inlined_shared_info), |
| 290 inlined_code_object_root(inlined_code_object_root) { | 293 inlined_code_object_root(inlined_code_object_root), |
| 294 source_id(kSourceNotDumped) { | |
| 291 position.position = pos; | 295 position.position = pos; |
| 292 // initialized when generating the deoptimization literals | 296 // initialized when generating the deoptimization literals |
| 293 position.inlined_function_id = DeoptimizationInputData::kNotInlinedIndex; | 297 position.inlined_function_id = DeoptimizationInputData::kNotInlinedIndex; |
| 294 } | 298 } |
| 295 | 299 |
| 296 void RegisterInlinedFunctionId(size_t inlined_function_id) { | 300 void RegisterInlinedFunctionId(size_t inlined_function_id) { |
| 297 position.inlined_function_id = static_cast<int>(inlined_function_id); | 301 position.inlined_function_id = static_cast<int>(inlined_function_id); |
| 298 } | 302 } |
| 299 }; | 303 }; |
| 300 | 304 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 333 void SetFlag(Flag flag) { flags_ |= flag; } | 337 void SetFlag(Flag flag) { flags_ |= flag; } |
| 334 | 338 |
| 335 void SetFlag(Flag flag, bool value) { | 339 void SetFlag(Flag flag, bool value) { |
| 336 flags_ = value ? flags_ | flag : flags_ & ~flag; | 340 flags_ = value ? flags_ | flag : flags_ & ~flag; |
| 337 } | 341 } |
| 338 | 342 |
| 339 bool GetFlag(Flag flag) const { return (flags_ & flag) != 0; } | 343 bool GetFlag(Flag flag) const { return (flags_ & flag) != 0; } |
| 340 | 344 |
| 341 void set_is_debug(); | 345 void set_is_debug(); |
| 342 | 346 |
| 347 // If we are tracking source positions then this function prints a unique | |
|
Tobias Tebbi
2016/12/15 16:22:01
"tracking source positions" is not an accurate des
| |
| 348 // identifier assigned to each inlining and dumps function source if it | |
| 349 // was inlined for the first time during the current optimization. | |
| 350 void TraceInlinedFunction(Handle<SharedFunctionInfo> shared, | |
| 351 SourcePosition position, int inlining_id); | |
| 352 | |
| 353 // Assign source id to the given inlining: source ids are used to | |
| 354 // avoid dumping the same function multiple times to minimize trace | |
| 355 // size. | |
| 356 bool AssignSourceIdToInlining(int inlining_id, int* source_id); | |
| 357 | |
| 343 unsigned flags_; | 358 unsigned flags_; |
| 344 | 359 |
| 345 Code::Flags code_flags_; | 360 Code::Flags code_flags_; |
| 346 | 361 |
| 347 Handle<JSFunction> closure_; | 362 Handle<JSFunction> closure_; |
| 348 | 363 |
| 349 // The compiled code. | 364 // The compiled code. |
| 350 Handle<Code> code_; | 365 Handle<Code> code_; |
| 351 | 366 |
| 352 // Compilation mode flag and whether deoptimization is allowed. | 367 // Compilation mode flag and whether deoptimization is allowed. |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 385 | 400 |
| 386 Vector<const char> debug_name_; | 401 Vector<const char> debug_name_; |
| 387 | 402 |
| 388 DISALLOW_COPY_AND_ASSIGN(CompilationInfo); | 403 DISALLOW_COPY_AND_ASSIGN(CompilationInfo); |
| 389 }; | 404 }; |
| 390 | 405 |
| 391 } // namespace internal | 406 } // namespace internal |
| 392 } // namespace v8 | 407 } // namespace v8 |
| 393 | 408 |
| 394 #endif // V8_COMPILATION_INFO_H_ | 409 #endif // V8_COMPILATION_INFO_H_ |
| OLD | NEW |