| 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_DEOPTIMIZER_H_ | 5 #ifndef V8_DEOPTIMIZER_H_ |
| 6 #define V8_DEOPTIMIZER_H_ | 6 #define V8_DEOPTIMIZER_H_ |
| 7 | 7 |
| 8 #include "src/v8.h" | 8 #include "src/v8.h" |
| 9 | 9 |
| 10 #include "src/allocation.h" | 10 #include "src/allocation.h" |
| (...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 402 // Translate value, store the result into the given frame slot. | 402 // Translate value, store the result into the given frame slot. |
| 403 void DoTranslateCommand(TranslationIterator* iterator, | 403 void DoTranslateCommand(TranslationIterator* iterator, |
| 404 int frame_index, | 404 int frame_index, |
| 405 unsigned output_offset); | 405 unsigned output_offset); |
| 406 | 406 |
| 407 // Translate object, do not store the result anywhere (but do update | 407 // Translate object, do not store the result anywhere (but do update |
| 408 // the deferred materialization array). | 408 // the deferred materialization array). |
| 409 void DoTranslateObjectAndSkip(TranslationIterator* iterator); | 409 void DoTranslateObjectAndSkip(TranslationIterator* iterator); |
| 410 | 410 |
| 411 unsigned ComputeInputFrameSize() const; | 411 unsigned ComputeInputFrameSize() const; |
| 412 unsigned ComputeFixedSize(JSFunction* function) const; | 412 |
| 413 // Unoptimized javascript frames have an additional word for the type |
| 414 // feedback vector. |
| 415 unsigned ComputeFixedSize(JSFunction* function, |
| 416 bool unoptimized_frame = false) const; |
| 413 | 417 |
| 414 unsigned ComputeIncomingArgumentSize(JSFunction* function) const; | 418 unsigned ComputeIncomingArgumentSize(JSFunction* function) const; |
| 415 unsigned ComputeOutgoingArgumentSize() const; | 419 unsigned ComputeOutgoingArgumentSize() const; |
| 416 | 420 |
| 417 Object* ComputeLiteral(int index) const; | 421 Object* ComputeLiteral(int index) const; |
| 418 | 422 |
| 419 void AddObjectStart(intptr_t slot_address, int argc, bool is_arguments); | 423 void AddObjectStart(intptr_t slot_address, int argc, bool is_arguments); |
| 420 void AddObjectDuplication(intptr_t slot, int object_index); | 424 void AddObjectDuplication(intptr_t slot, int object_index); |
| 421 void AddObjectTaggedValue(intptr_t value); | 425 void AddObjectTaggedValue(intptr_t value); |
| 422 void AddObjectDoubleValue(double value); | 426 void AddObjectDoubleValue(double value); |
| (...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 944 static SlotRef ComputeSlotForNextArgument( | 948 static SlotRef ComputeSlotForNextArgument( |
| 945 Translation::Opcode opcode, | 949 Translation::Opcode opcode, |
| 946 TranslationIterator* iterator, | 950 TranslationIterator* iterator, |
| 947 DeoptimizationInputData* data, | 951 DeoptimizationInputData* data, |
| 948 JavaScriptFrame* frame); | 952 JavaScriptFrame* frame); |
| 949 | 953 |
| 950 Handle<Object> GetPreviouslyMaterialized(Isolate* isolate, int length); | 954 Handle<Object> GetPreviouslyMaterialized(Isolate* isolate, int length); |
| 951 | 955 |
| 952 static Address SlotAddress(JavaScriptFrame* frame, int slot_index) { | 956 static Address SlotAddress(JavaScriptFrame* frame, int slot_index) { |
| 953 if (slot_index >= 0) { | 957 if (slot_index >= 0) { |
| 954 const int offset = JavaScriptFrameConstants::kLocal0Offset; | 958 const int offset = JavaScriptFrameConstants::kLocal0OffsetOptimized; |
| 955 return frame->fp() + offset - (slot_index * kPointerSize); | 959 return frame->fp() + offset - (slot_index * kPointerSize); |
| 956 } else { | 960 } else { |
| 957 const int offset = JavaScriptFrameConstants::kLastParameterOffset; | 961 const int offset = JavaScriptFrameConstants::kLastParameterOffset; |
| 958 return frame->fp() + offset - ((slot_index + 1) * kPointerSize); | 962 return frame->fp() + offset - ((slot_index + 1) * kPointerSize); |
| 959 } | 963 } |
| 960 } | 964 } |
| 961 | 965 |
| 962 Handle<Object> GetDeferredObject(Isolate* isolate); | 966 Handle<Object> GetDeferredObject(Isolate* isolate); |
| 963 }; | 967 }; |
| 964 | 968 |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1057 Object** parameters_; | 1061 Object** parameters_; |
| 1058 Object** expression_stack_; | 1062 Object** expression_stack_; |
| 1059 int source_position_; | 1063 int source_position_; |
| 1060 | 1064 |
| 1061 friend class Deoptimizer; | 1065 friend class Deoptimizer; |
| 1062 }; | 1066 }; |
| 1063 | 1067 |
| 1064 } } // namespace v8::internal | 1068 } } // namespace v8::internal |
| 1065 | 1069 |
| 1066 #endif // V8_DEOPTIMIZER_H_ | 1070 #endif // V8_DEOPTIMIZER_H_ |
| OLD | NEW |