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

Side by Side Diff: src/objects-inl.h

Issue 2172583002: [interpreter] Add OSR nesting level to bytecode header. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Add TODO. Created 4 years, 4 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
« no previous file with comments | « src/objects.h ('k') | src/runtime-profiler.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 // Review notes: 5 // Review notes:
6 // 6 //
7 // - The use of macros in these inline functions may seem superfluous 7 // - The use of macros in these inline functions may seem superfluous
8 // but it is absolutely needed to make sure gcc generates optimal 8 // but it is absolutely needed to make sure gcc generates optimal
9 // code. gcc is not happy when attempting to inline too deep. 9 // code. gcc is not happy when attempting to inline too deep.
10 // 10 //
(...skipping 4077 matching lines...) Expand 10 before | Expand all | Expand 10 after
4088 4088
4089 int BytecodeArray::interrupt_budget() const { 4089 int BytecodeArray::interrupt_budget() const {
4090 return READ_INT_FIELD(this, kInterruptBudgetOffset); 4090 return READ_INT_FIELD(this, kInterruptBudgetOffset);
4091 } 4091 }
4092 4092
4093 void BytecodeArray::set_interrupt_budget(int interrupt_budget) { 4093 void BytecodeArray::set_interrupt_budget(int interrupt_budget) {
4094 DCHECK_GE(interrupt_budget, 0); 4094 DCHECK_GE(interrupt_budget, 0);
4095 WRITE_INT_FIELD(this, kInterruptBudgetOffset, interrupt_budget); 4095 WRITE_INT_FIELD(this, kInterruptBudgetOffset, interrupt_budget);
4096 } 4096 }
4097 4097
4098 int BytecodeArray::osr_loop_nesting_level() const {
4099 return READ_INT_FIELD(this, kOSRNestingLevelOffset);
4100 }
4101
4102 void BytecodeArray::set_osr_loop_nesting_level(int depth) {
4103 DCHECK(0 <= depth && depth <= AbstractCode::kMaxLoopNestingMarker);
4104 WRITE_INT_FIELD(this, kOSRNestingLevelOffset, depth);
4105 }
4106
4098 int BytecodeArray::parameter_count() const { 4107 int BytecodeArray::parameter_count() const {
4099 // Parameter count is stored as the size on stack of the parameters to allow 4108 // Parameter count is stored as the size on stack of the parameters to allow
4100 // it to be used directly by generated code. 4109 // it to be used directly by generated code.
4101 return READ_INT_FIELD(this, kParameterSizeOffset) >> kPointerSizeLog2; 4110 return READ_INT_FIELD(this, kParameterSizeOffset) >> kPointerSizeLog2;
4102 } 4111 }
4103 4112
4104 4113
4105 ACCESSORS(BytecodeArray, constant_pool, FixedArray, kConstantPoolOffset) 4114 ACCESSORS(BytecodeArray, constant_pool, FixedArray, kConstantPoolOffset)
4106 ACCESSORS(BytecodeArray, handler_table, FixedArray, kHandlerTableOffset) 4115 ACCESSORS(BytecodeArray, handler_table, FixedArray, kHandlerTableOffset)
4107 ACCESSORS(BytecodeArray, source_position_table, ByteArray, 4116 ACCESSORS(BytecodeArray, source_position_table, ByteArray,
(...skipping 938 matching lines...) Expand 10 before | Expand all | Expand 10 after
5046 5055
5047 int Code::allow_osr_at_loop_nesting_level() { 5056 int Code::allow_osr_at_loop_nesting_level() {
5048 DCHECK_EQ(FUNCTION, kind()); 5057 DCHECK_EQ(FUNCTION, kind());
5049 int fields = READ_UINT32_FIELD(this, kKindSpecificFlags2Offset); 5058 int fields = READ_UINT32_FIELD(this, kKindSpecificFlags2Offset);
5050 return AllowOSRAtLoopNestingLevelField::decode(fields); 5059 return AllowOSRAtLoopNestingLevelField::decode(fields);
5051 } 5060 }
5052 5061
5053 5062
5054 void Code::set_allow_osr_at_loop_nesting_level(int level) { 5063 void Code::set_allow_osr_at_loop_nesting_level(int level) {
5055 DCHECK_EQ(FUNCTION, kind()); 5064 DCHECK_EQ(FUNCTION, kind());
5056 DCHECK(level >= 0 && level <= kMaxLoopNestingMarker); 5065 DCHECK(level >= 0 && level <= AbstractCode::kMaxLoopNestingMarker);
5057 int previous = READ_UINT32_FIELD(this, kKindSpecificFlags2Offset); 5066 int previous = READ_UINT32_FIELD(this, kKindSpecificFlags2Offset);
5058 int updated = AllowOSRAtLoopNestingLevelField::update(previous, level); 5067 int updated = AllowOSRAtLoopNestingLevelField::update(previous, level);
5059 WRITE_UINT32_FIELD(this, kKindSpecificFlags2Offset, updated); 5068 WRITE_UINT32_FIELD(this, kKindSpecificFlags2Offset, updated);
5060 } 5069 }
5061 5070
5062 5071
5063 int Code::profiler_ticks() { 5072 int Code::profiler_ticks() {
5064 DCHECK_EQ(FUNCTION, kind()); 5073 DCHECK_EQ(FUNCTION, kind());
5065 return ProfilerTicksField::decode( 5074 return ProfilerTicksField::decode(
5066 READ_UINT32_FIELD(this, kKindSpecificFlags1Offset)); 5075 READ_UINT32_FIELD(this, kKindSpecificFlags1Offset));
(...skipping 3047 matching lines...) Expand 10 before | Expand all | Expand 10 after
8114 #undef WRITE_INT64_FIELD 8123 #undef WRITE_INT64_FIELD
8115 #undef READ_BYTE_FIELD 8124 #undef READ_BYTE_FIELD
8116 #undef WRITE_BYTE_FIELD 8125 #undef WRITE_BYTE_FIELD
8117 #undef NOBARRIER_READ_BYTE_FIELD 8126 #undef NOBARRIER_READ_BYTE_FIELD
8118 #undef NOBARRIER_WRITE_BYTE_FIELD 8127 #undef NOBARRIER_WRITE_BYTE_FIELD
8119 8128
8120 } // namespace internal 8129 } // namespace internal
8121 } // namespace v8 8130 } // namespace v8
8122 8131
8123 #endif // V8_OBJECTS_INL_H_ 8132 #endif // V8_OBJECTS_INL_H_
OLDNEW
« no previous file with comments | « src/objects.h ('k') | src/runtime-profiler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698