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

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

Issue 346223007: Do not eagerly update allow_osr_at_loop_nesting_level. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: addressed comments Created 6 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « src/objects.h ('k') | src/runtime.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 4633 matching lines...) Expand 10 before | Expand all | Expand 10 after
4644 void Code::set_compiled_optimizable(bool value) { 4644 void Code::set_compiled_optimizable(bool value) {
4645 ASSERT_EQ(FUNCTION, kind()); 4645 ASSERT_EQ(FUNCTION, kind());
4646 byte flags = READ_BYTE_FIELD(this, kFullCodeFlags); 4646 byte flags = READ_BYTE_FIELD(this, kFullCodeFlags);
4647 flags = FullCodeFlagsIsCompiledOptimizable::update(flags, value); 4647 flags = FullCodeFlagsIsCompiledOptimizable::update(flags, value);
4648 WRITE_BYTE_FIELD(this, kFullCodeFlags, flags); 4648 WRITE_BYTE_FIELD(this, kFullCodeFlags, flags);
4649 } 4649 }
4650 4650
4651 4651
4652 int Code::allow_osr_at_loop_nesting_level() { 4652 int Code::allow_osr_at_loop_nesting_level() {
4653 ASSERT_EQ(FUNCTION, kind()); 4653 ASSERT_EQ(FUNCTION, kind());
4654 return READ_BYTE_FIELD(this, kAllowOSRAtLoopNestingLevelOffset); 4654 int fields = READ_UINT32_FIELD(this, kKindSpecificFlags2Offset);
4655 return AllowOSRAtLoopNestingLevelField::decode(fields);
4655 } 4656 }
4656 4657
4657 4658
4658 void Code::set_allow_osr_at_loop_nesting_level(int level) { 4659 void Code::set_allow_osr_at_loop_nesting_level(int level) {
4659 ASSERT_EQ(FUNCTION, kind()); 4660 ASSERT_EQ(FUNCTION, kind());
4660 ASSERT(level >= 0 && level <= kMaxLoopNestingMarker); 4661 ASSERT(level >= 0 && level <= kMaxLoopNestingMarker);
4661 WRITE_BYTE_FIELD(this, kAllowOSRAtLoopNestingLevelOffset, level); 4662 int previous = READ_UINT32_FIELD(this, kKindSpecificFlags2Offset);
4663 int updated = AllowOSRAtLoopNestingLevelField::update(previous, level);
4664 WRITE_UINT32_FIELD(this, kKindSpecificFlags2Offset, updated);
4662 } 4665 }
4663 4666
4664 4667
4665 int Code::profiler_ticks() { 4668 int Code::profiler_ticks() {
4666 ASSERT_EQ(FUNCTION, kind()); 4669 ASSERT_EQ(FUNCTION, kind());
4667 return READ_BYTE_FIELD(this, kProfilerTicksOffset); 4670 return READ_BYTE_FIELD(this, kProfilerTicksOffset);
4668 } 4671 }
4669 4672
4670 4673
4671 void Code::set_profiler_ticks(int ticks) { 4674 void Code::set_profiler_ticks(int ticks) {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
4704 ASSERT(IsAligned(offset, static_cast<unsigned>(kIntSize))); 4707 ASSERT(IsAligned(offset, static_cast<unsigned>(kIntSize)));
4705 int previous = READ_UINT32_FIELD(this, kKindSpecificFlags2Offset); 4708 int previous = READ_UINT32_FIELD(this, kKindSpecificFlags2Offset);
4706 int updated = SafepointTableOffsetField::update(previous, offset); 4709 int updated = SafepointTableOffsetField::update(previous, offset);
4707 WRITE_UINT32_FIELD(this, kKindSpecificFlags2Offset, updated); 4710 WRITE_UINT32_FIELD(this, kKindSpecificFlags2Offset, updated);
4708 } 4711 }
4709 4712
4710 4713
4711 unsigned Code::back_edge_table_offset() { 4714 unsigned Code::back_edge_table_offset() {
4712 ASSERT_EQ(FUNCTION, kind()); 4715 ASSERT_EQ(FUNCTION, kind());
4713 return BackEdgeTableOffsetField::decode( 4716 return BackEdgeTableOffsetField::decode(
4714 READ_UINT32_FIELD(this, kKindSpecificFlags2Offset)); 4717 READ_UINT32_FIELD(this, kKindSpecificFlags2Offset)) << kPointerSizeLog2;
4715 } 4718 }
4716 4719
4717 4720
4718 void Code::set_back_edge_table_offset(unsigned offset) { 4721 void Code::set_back_edge_table_offset(unsigned offset) {
4719 ASSERT_EQ(FUNCTION, kind()); 4722 ASSERT_EQ(FUNCTION, kind());
4720 ASSERT(IsAligned(offset, static_cast<unsigned>(kIntSize))); 4723 ASSERT(IsAligned(offset, static_cast<unsigned>(kPointerSize)));
4724 offset = offset >> kPointerSizeLog2;
4721 int previous = READ_UINT32_FIELD(this, kKindSpecificFlags2Offset); 4725 int previous = READ_UINT32_FIELD(this, kKindSpecificFlags2Offset);
4722 int updated = BackEdgeTableOffsetField::update(previous, offset); 4726 int updated = BackEdgeTableOffsetField::update(previous, offset);
4723 WRITE_UINT32_FIELD(this, kKindSpecificFlags2Offset, updated); 4727 WRITE_UINT32_FIELD(this, kKindSpecificFlags2Offset, updated);
4724 } 4728 }
4725 4729
4726 4730
4727 bool Code::back_edges_patched_for_osr() { 4731 bool Code::back_edges_patched_for_osr() {
4728 ASSERT_EQ(FUNCTION, kind()); 4732 ASSERT_EQ(FUNCTION, kind());
4729 return BackEdgesPatchedForOSRField::decode( 4733 return allow_osr_at_loop_nesting_level() > 0;
4730 READ_UINT32_FIELD(this, kKindSpecificFlags2Offset));
4731 } 4734 }
4732 4735
4733 4736
4734 void Code::set_back_edges_patched_for_osr(bool value) {
4735 ASSERT_EQ(FUNCTION, kind());
4736 int previous = READ_UINT32_FIELD(this, kKindSpecificFlags2Offset);
4737 int updated = BackEdgesPatchedForOSRField::update(previous, value);
4738 WRITE_UINT32_FIELD(this, kKindSpecificFlags2Offset, updated);
4739 }
4740
4741
4742
4743 byte Code::to_boolean_state() { 4737 byte Code::to_boolean_state() {
4744 return extra_ic_state(); 4738 return extra_ic_state();
4745 } 4739 }
4746 4740
4747 4741
4748 bool Code::has_function_cache() { 4742 bool Code::has_function_cache() {
4749 ASSERT(kind() == STUB); 4743 ASSERT(kind() == STUB);
4750 return HasFunctionCacheField::decode( 4744 return HasFunctionCacheField::decode(
4751 READ_UINT32_FIELD(this, kKindSpecificFlags1Offset)); 4745 READ_UINT32_FIELD(this, kKindSpecificFlags1Offset));
4752 } 4746 }
(...skipping 2248 matching lines...) Expand 10 before | Expand all | Expand 10 after
7001 #undef READ_SHORT_FIELD 6995 #undef READ_SHORT_FIELD
7002 #undef WRITE_SHORT_FIELD 6996 #undef WRITE_SHORT_FIELD
7003 #undef READ_BYTE_FIELD 6997 #undef READ_BYTE_FIELD
7004 #undef WRITE_BYTE_FIELD 6998 #undef WRITE_BYTE_FIELD
7005 #undef NOBARRIER_READ_BYTE_FIELD 6999 #undef NOBARRIER_READ_BYTE_FIELD
7006 #undef NOBARRIER_WRITE_BYTE_FIELD 7000 #undef NOBARRIER_WRITE_BYTE_FIELD
7007 7001
7008 } } // namespace v8::internal 7002 } } // namespace v8::internal
7009 7003
7010 #endif // V8_OBJECTS_INL_H_ 7004 #endif // V8_OBJECTS_INL_H_
OLDNEW
« no previous file with comments | « src/objects.h ('k') | src/runtime.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698