| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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_COMPILER_H_ | 5 #ifndef V8_COMPILER_H_ |
| 6 #define V8_COMPILER_H_ | 6 #define V8_COMPILER_H_ |
| 7 | 7 |
| 8 #include "src/allocation.h" | 8 #include "src/allocation.h" |
| 9 #include "src/ast.h" | 9 #include "src/ast.h" |
| 10 #include "src/bailout-reason.h" | 10 #include "src/bailout-reason.h" |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 int num_parameters() const; | 166 int num_parameters() const; |
| 167 int num_parameters_including_this() const; | 167 int num_parameters_including_this() const; |
| 168 bool is_this_defined() const; | 168 bool is_this_defined() const; |
| 169 int num_heap_slots() const; | 169 int num_heap_slots() const; |
| 170 | 170 |
| 171 void set_parameter_count(int parameter_count) { | 171 void set_parameter_count(int parameter_count) { |
| 172 DCHECK(IsStub()); | 172 DCHECK(IsStub()); |
| 173 parameter_count_ = parameter_count; | 173 parameter_count_ = parameter_count; |
| 174 } | 174 } |
| 175 | 175 |
| 176 bool has_bytecode_array() const { return !bytecode_array_.is_null(); } |
| 177 Handle<BytecodeArray> bytecode_array() const { return bytecode_array_; } |
| 178 |
| 176 bool is_tracking_positions() const { return track_positions_; } | 179 bool is_tracking_positions() const { return track_positions_; } |
| 177 | 180 |
| 178 bool is_calling() const { | 181 bool is_calling() const { |
| 179 return GetFlag(kDeferredCalling) || GetFlag(kNonDeferredCalling); | 182 return GetFlag(kDeferredCalling) || GetFlag(kNonDeferredCalling); |
| 180 } | 183 } |
| 181 | 184 |
| 182 void MarkAsDeferredCalling() { SetFlag(kDeferredCalling); } | 185 void MarkAsDeferredCalling() { SetFlag(kDeferredCalling); } |
| 183 | 186 |
| 184 bool is_deferred_calling() const { return GetFlag(kDeferredCalling); } | 187 bool is_deferred_calling() const { return GetFlag(kDeferredCalling); } |
| 185 | 188 |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 return FLAG_optimize_for_size && FLAG_age_code && !will_serialize() && | 270 return FLAG_optimize_for_size && FLAG_age_code && !will_serialize() && |
| 268 !is_debug(); | 271 !is_debug(); |
| 269 } | 272 } |
| 270 | 273 |
| 271 void EnsureFeedbackVector(); | 274 void EnsureFeedbackVector(); |
| 272 Handle<TypeFeedbackVector> feedback_vector() const { | 275 Handle<TypeFeedbackVector> feedback_vector() const { |
| 273 return feedback_vector_; | 276 return feedback_vector_; |
| 274 } | 277 } |
| 275 void SetCode(Handle<Code> code) { code_ = code; } | 278 void SetCode(Handle<Code> code) { code_ = code; } |
| 276 | 279 |
| 280 void SetBytecodeArray(Handle<BytecodeArray> bytecode_array) { |
| 281 bytecode_array_ = bytecode_array; |
| 282 } |
| 283 |
| 277 bool ShouldTrapOnDeopt() const { | 284 bool ShouldTrapOnDeopt() const { |
| 278 return (FLAG_trap_on_deopt && IsOptimizing()) || | 285 return (FLAG_trap_on_deopt && IsOptimizing()) || |
| 279 (FLAG_trap_on_stub_deopt && IsStub()); | 286 (FLAG_trap_on_stub_deopt && IsStub()); |
| 280 } | 287 } |
| 281 | 288 |
| 282 bool has_global_object() const { | 289 bool has_global_object() const { |
| 283 return !closure().is_null() && | 290 return !closure().is_null() && |
| 284 (closure()->context()->global_object() != NULL); | 291 (closure()->context()->global_object() != NULL); |
| 285 } | 292 } |
| 286 | 293 |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 452 Handle<TypeFeedbackVector> feedback_vector_; | 459 Handle<TypeFeedbackVector> feedback_vector_; |
| 453 | 460 |
| 454 // Compilation mode flag and whether deoptimization is allowed. | 461 // Compilation mode flag and whether deoptimization is allowed. |
| 455 Mode mode_; | 462 Mode mode_; |
| 456 BailoutId osr_ast_id_; | 463 BailoutId osr_ast_id_; |
| 457 // The unoptimized code we patched for OSR may not be the shared code | 464 // The unoptimized code we patched for OSR may not be the shared code |
| 458 // afterwards, since we may need to compile it again to include deoptimization | 465 // afterwards, since we may need to compile it again to include deoptimization |
| 459 // data. Keep track which code we patched. | 466 // data. Keep track which code we patched. |
| 460 Handle<Code> unoptimized_code_; | 467 Handle<Code> unoptimized_code_; |
| 461 | 468 |
| 469 // Holds the bytecode array generated by the interpreter. |
| 470 // TODO(rmcilroy/mstarzinger): Temporary work-around until compiler.cc is |
| 471 // refactored to avoid us needing to carry the BytcodeArray around. |
| 472 Handle<BytecodeArray> bytecode_array_; |
| 473 |
| 462 // The zone from which the compilation pipeline working on this | 474 // The zone from which the compilation pipeline working on this |
| 463 // CompilationInfo allocates. | 475 // CompilationInfo allocates. |
| 464 Zone* zone_; | 476 Zone* zone_; |
| 465 | 477 |
| 466 DeferredHandles* deferred_handles_; | 478 DeferredHandles* deferred_handles_; |
| 467 | 479 |
| 468 // Dependencies for this compilation, e.g. stable maps. | 480 // Dependencies for this compilation, e.g. stable maps. |
| 469 CompilationDependencies dependencies_; | 481 CompilationDependencies dependencies_; |
| 470 | 482 |
| 471 BailoutReason bailout_reason_; | 483 BailoutReason bailout_reason_; |
| (...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 693 size_t info_zone_start_allocation_size_; | 705 size_t info_zone_start_allocation_size_; |
| 694 base::ElapsedTimer timer_; | 706 base::ElapsedTimer timer_; |
| 695 | 707 |
| 696 DISALLOW_COPY_AND_ASSIGN(CompilationPhase); | 708 DISALLOW_COPY_AND_ASSIGN(CompilationPhase); |
| 697 }; | 709 }; |
| 698 | 710 |
| 699 } // namespace internal | 711 } // namespace internal |
| 700 } // namespace v8 | 712 } // namespace v8 |
| 701 | 713 |
| 702 #endif // V8_COMPILER_H_ | 714 #endif // V8_COMPILER_H_ |
| OLD | NEW |