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

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

Issue 1764603003: Handle stack frames differently inside and on the boundary of wasm. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: fix Created 4 years, 9 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
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 4716 matching lines...) Expand 10 before | Expand all | Expand 10 after
4727 ExtraICState Code::extra_ic_state() { 4727 ExtraICState Code::extra_ic_state() {
4728 DCHECK(is_inline_cache_stub() || ic_state() == DEBUG_STUB); 4728 DCHECK(is_inline_cache_stub() || ic_state() == DEBUG_STUB);
4729 return ExtractExtraICStateFromFlags(flags()); 4729 return ExtractExtraICStateFromFlags(flags());
4730 } 4730 }
4731 4731
4732 4732
4733 Code::StubType Code::type() { 4733 Code::StubType Code::type() {
4734 return ExtractTypeFromFlags(flags()); 4734 return ExtractTypeFromFlags(flags());
4735 } 4735 }
4736 4736
4737 Code::WasmFunctionType Code::wasm_function_type() {
4738 return ExtractWasmFunctionTypeFromFlags(flags());
4739 }
4737 4740
4738 // For initialization. 4741 // For initialization.
4739 void Code::set_raw_kind_specific_flags1(int value) { 4742 void Code::set_raw_kind_specific_flags1(int value) {
4740 WRITE_INT_FIELD(this, kKindSpecificFlags1Offset, value); 4743 WRITE_INT_FIELD(this, kKindSpecificFlags1Offset, value);
4741 } 4744 }
4742 4745
4743 4746
4744 void Code::set_raw_kind_specific_flags2(int value) { 4747 void Code::set_raw_kind_specific_flags2(int value) {
4745 WRITE_INT_FIELD(this, kKindSpecificFlags2Offset, value); 4748 WRITE_INT_FIELD(this, kKindSpecificFlags2Offset, value);
4746 } 4749 }
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
5008 Address constant_pool = NULL; 5011 Address constant_pool = NULL;
5009 if (FLAG_enable_embedded_constant_pool) { 5012 if (FLAG_enable_embedded_constant_pool) {
5010 int offset = constant_pool_offset(); 5013 int offset = constant_pool_offset();
5011 if (offset < instruction_size()) { 5014 if (offset < instruction_size()) {
5012 constant_pool = FIELD_ADDR(this, kHeaderSize + offset); 5015 constant_pool = FIELD_ADDR(this, kHeaderSize + offset);
5013 } 5016 }
5014 } 5017 }
5015 return constant_pool; 5018 return constant_pool;
5016 } 5019 }
5017 5020
5018
5019 Code::Flags Code::ComputeFlags(Kind kind, InlineCacheState ic_state, 5021 Code::Flags Code::ComputeFlags(Kind kind, InlineCacheState ic_state,
5020 ExtraICState extra_ic_state, StubType type, 5022 ExtraICState extra_ic_state, StubType type,
5021 CacheHolderFlag holder) { 5023 CacheHolderFlag holder,
5024 WasmFunctionType wasm_type) {
5022 // Compute the bit mask. 5025 // Compute the bit mask.
5023 unsigned int bits = KindField::encode(kind) 5026 unsigned int bits = KindField::encode(kind) | ICStateField::encode(ic_state) |
5024 | ICStateField::encode(ic_state) 5027 TypeField::encode(type) |
5025 | TypeField::encode(type) 5028 ExtraICStateField::encode(extra_ic_state) |
5026 | ExtraICStateField::encode(extra_ic_state) 5029 WasmFunctionTypeField::encode(wasm_type) |
5027 | CacheHolderField::encode(holder); 5030 CacheHolderField::encode(holder);
5028 return static_cast<Flags>(bits); 5031 return static_cast<Flags>(bits);
5029 } 5032 }
5030 5033
5034 Code::Flags Code::ComputeWasmFlags(Kind kind, WasmFunctionType wasm_type) {
5035 return ComputeFlags(kind, UNINITIALIZED, kNoExtraICState, NORMAL,
5036 kCacheOnReceiver, wasm_type);
5037 }
5031 5038
5032 Code::Flags Code::ComputeMonomorphicFlags(Kind kind, 5039 Code::Flags Code::ComputeMonomorphicFlags(Kind kind,
5033 ExtraICState extra_ic_state, 5040 ExtraICState extra_ic_state,
5034 CacheHolderFlag holder, 5041 CacheHolderFlag holder,
5035 StubType type) { 5042 StubType type) {
5036 return ComputeFlags(kind, MONOMORPHIC, extra_ic_state, type, holder); 5043 return ComputeFlags(kind, MONOMORPHIC, extra_ic_state, type, holder);
5037 } 5044 }
5038 5045
5039 5046
5040 Code::Flags Code::ComputeHandlerFlags(Kind handler_kind, StubType type, 5047 Code::Flags Code::ComputeHandlerFlags(Kind handler_kind, StubType type,
(...skipping 14 matching lines...) Expand all
5055 5062
5056 ExtraICState Code::ExtractExtraICStateFromFlags(Flags flags) { 5063 ExtraICState Code::ExtractExtraICStateFromFlags(Flags flags) {
5057 return ExtraICStateField::decode(flags); 5064 return ExtraICStateField::decode(flags);
5058 } 5065 }
5059 5066
5060 5067
5061 Code::StubType Code::ExtractTypeFromFlags(Flags flags) { 5068 Code::StubType Code::ExtractTypeFromFlags(Flags flags) {
5062 return TypeField::decode(flags); 5069 return TypeField::decode(flags);
5063 } 5070 }
5064 5071
5072 Code::WasmFunctionType Code::ExtractWasmFunctionTypeFromFlags(Flags flags) {
5073 return WasmFunctionTypeField::decode(flags);
5074 }
5065 5075
5066 CacheHolderFlag Code::ExtractCacheHolderFromFlags(Flags flags) { 5076 CacheHolderFlag Code::ExtractCacheHolderFromFlags(Flags flags) {
5067 return CacheHolderField::decode(flags); 5077 return CacheHolderField::decode(flags);
5068 } 5078 }
5069 5079
5070 5080
5071 Code::Flags Code::RemoveTypeFromFlags(Flags flags) { 5081 Code::Flags Code::RemoveTypeFromFlags(Flags flags) {
5072 int bits = flags & ~TypeField::kMask; 5082 int bits = flags & ~TypeField::kMask;
5073 return static_cast<Flags>(bits); 5083 return static_cast<Flags>(bits);
5074 } 5084 }
(...skipping 2675 matching lines...) Expand 10 before | Expand all | Expand 10 after
7750 #undef WRITE_INT64_FIELD 7760 #undef WRITE_INT64_FIELD
7751 #undef READ_BYTE_FIELD 7761 #undef READ_BYTE_FIELD
7752 #undef WRITE_BYTE_FIELD 7762 #undef WRITE_BYTE_FIELD
7753 #undef NOBARRIER_READ_BYTE_FIELD 7763 #undef NOBARRIER_READ_BYTE_FIELD
7754 #undef NOBARRIER_WRITE_BYTE_FIELD 7764 #undef NOBARRIER_WRITE_BYTE_FIELD
7755 7765
7756 } // namespace internal 7766 } // namespace internal
7757 } // namespace v8 7767 } // namespace v8
7758 7768
7759 #endif // V8_OBJECTS_INL_H_ 7769 #endif // V8_OBJECTS_INL_H_
OLDNEW
« src/frames.cc ('K') | « src/objects.h ('k') | test/mjsunit/mjsunit.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698