OLD | NEW |
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 5115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5126 V(FUNCTION) \ | 5126 V(FUNCTION) \ |
5127 V(OPTIMIZED_FUNCTION) \ | 5127 V(OPTIMIZED_FUNCTION) \ |
5128 V(STUB) \ | 5128 V(STUB) \ |
5129 V(HANDLER) \ | 5129 V(HANDLER) \ |
5130 V(BUILTIN) \ | 5130 V(BUILTIN) \ |
5131 V(REGEXP) | 5131 V(REGEXP) |
5132 | 5132 |
5133 #define IC_KIND_LIST(V) \ | 5133 #define IC_KIND_LIST(V) \ |
5134 V(LOAD_IC) \ | 5134 V(LOAD_IC) \ |
5135 V(KEYED_LOAD_IC) \ | 5135 V(KEYED_LOAD_IC) \ |
5136 V(CALL_IC) \ | |
5137 V(KEYED_CALL_IC) \ | |
5138 V(STORE_IC) \ | 5136 V(STORE_IC) \ |
5139 V(KEYED_STORE_IC) \ | 5137 V(KEYED_STORE_IC) \ |
5140 V(BINARY_OP_IC) \ | 5138 V(BINARY_OP_IC) \ |
5141 V(COMPARE_IC) \ | 5139 V(COMPARE_IC) \ |
5142 V(COMPARE_NIL_IC) \ | 5140 V(COMPARE_NIL_IC) \ |
5143 V(TO_BOOLEAN_IC) | 5141 V(TO_BOOLEAN_IC) |
5144 | 5142 |
5145 #define CODE_KIND_LIST(V) \ | 5143 #define CODE_KIND_LIST(V) \ |
5146 NON_IC_KIND_LIST(V) \ | 5144 NON_IC_KIND_LIST(V) \ |
5147 IC_KIND_LIST(V) | 5145 IC_KIND_LIST(V) |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5252 inline int arguments_count(); // Only valid for call IC stubs. | 5250 inline int arguments_count(); // Only valid for call IC stubs. |
5253 | 5251 |
5254 // Testers for IC stub kinds. | 5252 // Testers for IC stub kinds. |
5255 inline bool is_inline_cache_stub(); | 5253 inline bool is_inline_cache_stub(); |
5256 inline bool is_debug_stub(); | 5254 inline bool is_debug_stub(); |
5257 inline bool is_handler() { return kind() == HANDLER; } | 5255 inline bool is_handler() { return kind() == HANDLER; } |
5258 inline bool is_load_stub() { return kind() == LOAD_IC; } | 5256 inline bool is_load_stub() { return kind() == LOAD_IC; } |
5259 inline bool is_keyed_load_stub() { return kind() == KEYED_LOAD_IC; } | 5257 inline bool is_keyed_load_stub() { return kind() == KEYED_LOAD_IC; } |
5260 inline bool is_store_stub() { return kind() == STORE_IC; } | 5258 inline bool is_store_stub() { return kind() == STORE_IC; } |
5261 inline bool is_keyed_store_stub() { return kind() == KEYED_STORE_IC; } | 5259 inline bool is_keyed_store_stub() { return kind() == KEYED_STORE_IC; } |
5262 inline bool is_call_stub() { return kind() == CALL_IC; } | |
5263 inline bool is_keyed_call_stub() { return kind() == KEYED_CALL_IC; } | |
5264 inline bool is_binary_op_stub() { return kind() == BINARY_OP_IC; } | 5260 inline bool is_binary_op_stub() { return kind() == BINARY_OP_IC; } |
5265 inline bool is_compare_ic_stub() { return kind() == COMPARE_IC; } | 5261 inline bool is_compare_ic_stub() { return kind() == COMPARE_IC; } |
5266 inline bool is_compare_nil_ic_stub() { return kind() == COMPARE_NIL_IC; } | 5262 inline bool is_compare_nil_ic_stub() { return kind() == COMPARE_NIL_IC; } |
5267 inline bool is_to_boolean_ic_stub() { return kind() == TO_BOOLEAN_IC; } | 5263 inline bool is_to_boolean_ic_stub() { return kind() == TO_BOOLEAN_IC; } |
5268 inline bool is_keyed_stub(); | 5264 inline bool is_keyed_stub(); |
5269 | 5265 |
5270 inline void set_raw_kind_specific_flags1(int value); | 5266 inline void set_raw_kind_specific_flags1(int value); |
5271 inline void set_raw_kind_specific_flags2(int value); | 5267 inline void set_raw_kind_specific_flags2(int value); |
5272 | 5268 |
5273 // [major_key]: For kind STUB or BINARY_OP_IC, the major key. | 5269 // [major_key]: For kind STUB or BINARY_OP_IC, the major key. |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5322 inline void set_safepoint_table_offset(unsigned offset); | 5318 inline void set_safepoint_table_offset(unsigned offset); |
5323 | 5319 |
5324 // [back_edge_table_start]: For kind FUNCTION, the offset in the | 5320 // [back_edge_table_start]: For kind FUNCTION, the offset in the |
5325 // instruction stream where the back edge table starts. | 5321 // instruction stream where the back edge table starts. |
5326 inline unsigned back_edge_table_offset(); | 5322 inline unsigned back_edge_table_offset(); |
5327 inline void set_back_edge_table_offset(unsigned offset); | 5323 inline void set_back_edge_table_offset(unsigned offset); |
5328 | 5324 |
5329 inline bool back_edges_patched_for_osr(); | 5325 inline bool back_edges_patched_for_osr(); |
5330 inline void set_back_edges_patched_for_osr(bool value); | 5326 inline void set_back_edges_patched_for_osr(bool value); |
5331 | 5327 |
5332 // [check type]: For kind CALL_IC, tells how to check if the | |
5333 // receiver is valid for the given call. | |
5334 inline CheckType check_type(); | |
5335 inline void set_check_type(CheckType value); | |
5336 | |
5337 // [to_boolean_foo]: For kind TO_BOOLEAN_IC tells what state the stub is in. | 5328 // [to_boolean_foo]: For kind TO_BOOLEAN_IC tells what state the stub is in. |
5338 inline byte to_boolean_state(); | 5329 inline byte to_boolean_state(); |
5339 | 5330 |
5340 // [has_function_cache]: For kind STUB tells whether there is a function | 5331 // [has_function_cache]: For kind STUB tells whether there is a function |
5341 // cache is passed to the stub. | 5332 // cache is passed to the stub. |
5342 inline bool has_function_cache(); | 5333 inline bool has_function_cache(); |
5343 inline void set_has_function_cache(bool flag); | 5334 inline void set_has_function_cache(bool flag); |
5344 | 5335 |
5345 | 5336 |
5346 // [marked_for_deoptimization]: For kind OPTIMIZED_FUNCTION tells whether | 5337 // [marked_for_deoptimization]: For kind OPTIMIZED_FUNCTION tells whether |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5553 | 5544 |
5554 static const int kHeaderPaddingStart = kConstantPoolOffset + kIntSize; | 5545 static const int kHeaderPaddingStart = kConstantPoolOffset + kIntSize; |
5555 | 5546 |
5556 // Add padding to align the instruction start following right after | 5547 // Add padding to align the instruction start following right after |
5557 // the Code object header. | 5548 // the Code object header. |
5558 static const int kHeaderSize = | 5549 static const int kHeaderSize = |
5559 (kHeaderPaddingStart + kCodeAlignmentMask) & ~kCodeAlignmentMask; | 5550 (kHeaderPaddingStart + kCodeAlignmentMask) & ~kCodeAlignmentMask; |
5560 | 5551 |
5561 // Byte offsets within kKindSpecificFlags1Offset. | 5552 // Byte offsets within kKindSpecificFlags1Offset. |
5562 static const int kOptimizableOffset = kKindSpecificFlags1Offset; | 5553 static const int kOptimizableOffset = kKindSpecificFlags1Offset; |
5563 static const int kCheckTypeOffset = kKindSpecificFlags1Offset; | |
5564 | 5554 |
5565 static const int kFullCodeFlags = kOptimizableOffset + 1; | 5555 static const int kFullCodeFlags = kOptimizableOffset + 1; |
5566 class FullCodeFlagsHasDeoptimizationSupportField: | 5556 class FullCodeFlagsHasDeoptimizationSupportField: |
5567 public BitField<bool, 0, 1> {}; // NOLINT | 5557 public BitField<bool, 0, 1> {}; // NOLINT |
5568 class FullCodeFlagsHasDebugBreakSlotsField: public BitField<bool, 1, 1> {}; | 5558 class FullCodeFlagsHasDebugBreakSlotsField: public BitField<bool, 1, 1> {}; |
5569 class FullCodeFlagsIsCompiledOptimizable: public BitField<bool, 2, 1> {}; | 5559 class FullCodeFlagsIsCompiledOptimizable: public BitField<bool, 2, 1> {}; |
5570 | 5560 |
5571 static const int kAllowOSRAtLoopNestingLevelOffset = kFullCodeFlags + 1; | 5561 static const int kAllowOSRAtLoopNestingLevelOffset = kFullCodeFlags + 1; |
5572 static const int kProfilerTicksOffset = kAllowOSRAtLoopNestingLevelOffset + 1; | 5562 static const int kProfilerTicksOffset = kAllowOSRAtLoopNestingLevelOffset + 1; |
5573 | 5563 |
(...skipping 5195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10769 } else { | 10759 } else { |
10770 value &= ~(1 << bit_position); | 10760 value &= ~(1 << bit_position); |
10771 } | 10761 } |
10772 return value; | 10762 return value; |
10773 } | 10763 } |
10774 }; | 10764 }; |
10775 | 10765 |
10776 } } // namespace v8::internal | 10766 } } // namespace v8::internal |
10777 | 10767 |
10778 #endif // V8_OBJECTS_H_ | 10768 #endif // V8_OBJECTS_H_ |
OLD | NEW |