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

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

Issue 1030353003: Enable constant pool support. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 8 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 5111 matching lines...) Expand 10 before | Expand all | Expand 10 after
5122 bool Code::is_keyed_stub() { 5122 bool Code::is_keyed_stub() {
5123 return is_keyed_load_stub() || is_keyed_store_stub(); 5123 return is_keyed_load_stub() || is_keyed_store_stub();
5124 } 5124 }
5125 5125
5126 5126
5127 bool Code::is_debug_stub() { 5127 bool Code::is_debug_stub() {
5128 return ic_state() == DEBUG_STUB; 5128 return ic_state() == DEBUG_STUB;
5129 } 5129 }
5130 5130
5131 5131
5132 ConstantPoolArray* Code::constant_pool() { 5132 Address Code::constant_pool() {
5133 return ConstantPoolArray::cast(READ_FIELD(this, kConstantPoolOffset)); 5133 Address constant_pool = NULL;
5134 if (FLAG_enable_ool_constant_pool) {
5135 constant_pool =
5136 reinterpret_cast<Address>(READ_FIELD(this, kConstantPoolOffset));
5137 } else if (FLAG_enable_embedded_constant_pool) {
5138 int offset = constant_pool_offset();
5139 if (offset < instruction_size()) {
5140 constant_pool = FIELD_ADDR(this, kHeaderSize + offset);
5141 }
5142 }
5143 return constant_pool;
5134 } 5144 }
5135 5145
5136 5146
5137 void Code::set_constant_pool(Object* value) { 5147 void Code::set_constant_pool(Object* value) {
5148 DCHECK(FLAG_enable_ool_constant_pool);
5138 DCHECK(value->IsConstantPoolArray()); 5149 DCHECK(value->IsConstantPoolArray());
5139 WRITE_FIELD(this, kConstantPoolOffset, value); 5150 WRITE_FIELD(this, kConstantPoolOffset, value);
5140 WRITE_BARRIER(GetHeap(), this, kConstantPoolOffset, value); 5151 WRITE_BARRIER(GetHeap(), this, kConstantPoolOffset, value);
5141 } 5152 }
5142 5153
5143 5154
5144 Code::Flags Code::ComputeFlags(Kind kind, InlineCacheState ic_state, 5155 Code::Flags Code::ComputeFlags(Kind kind, InlineCacheState ic_state,
5145 ExtraICState extra_ic_state, StubType type, 5156 ExtraICState extra_ic_state, StubType type,
5146 CacheHolderFlag holder) { 5157 CacheHolderFlag holder) {
5147 // Compute the bit mask. 5158 // Compute the bit mask.
(...skipping 1138 matching lines...) Expand 10 before | Expand all | Expand 10 after
6286 ACCESSORS(JSMessageObject, type, String, kTypeOffset) 6297 ACCESSORS(JSMessageObject, type, String, kTypeOffset)
6287 ACCESSORS(JSMessageObject, arguments, JSArray, kArgumentsOffset) 6298 ACCESSORS(JSMessageObject, arguments, JSArray, kArgumentsOffset)
6288 ACCESSORS(JSMessageObject, script, Object, kScriptOffset) 6299 ACCESSORS(JSMessageObject, script, Object, kScriptOffset)
6289 ACCESSORS(JSMessageObject, stack_frames, Object, kStackFramesOffset) 6300 ACCESSORS(JSMessageObject, stack_frames, Object, kStackFramesOffset)
6290 SMI_ACCESSORS(JSMessageObject, start_position, kStartPositionOffset) 6301 SMI_ACCESSORS(JSMessageObject, start_position, kStartPositionOffset)
6291 SMI_ACCESSORS(JSMessageObject, end_position, kEndPositionOffset) 6302 SMI_ACCESSORS(JSMessageObject, end_position, kEndPositionOffset)
6292 6303
6293 6304
6294 INT_ACCESSORS(Code, instruction_size, kInstructionSizeOffset) 6305 INT_ACCESSORS(Code, instruction_size, kInstructionSizeOffset)
6295 INT_ACCESSORS(Code, prologue_offset, kPrologueOffset) 6306 INT_ACCESSORS(Code, prologue_offset, kPrologueOffset)
6307 INT_ACCESSORS(Code, constant_pool_offset, kConstantPoolOffset)
6296 ACCESSORS(Code, relocation_info, ByteArray, kRelocationInfoOffset) 6308 ACCESSORS(Code, relocation_info, ByteArray, kRelocationInfoOffset)
6297 ACCESSORS(Code, handler_table, FixedArray, kHandlerTableOffset) 6309 ACCESSORS(Code, handler_table, FixedArray, kHandlerTableOffset)
6298 ACCESSORS(Code, deoptimization_data, FixedArray, kDeoptimizationDataOffset) 6310 ACCESSORS(Code, deoptimization_data, FixedArray, kDeoptimizationDataOffset)
6299 ACCESSORS(Code, raw_type_feedback_info, Object, kTypeFeedbackInfoOffset) 6311 ACCESSORS(Code, raw_type_feedback_info, Object, kTypeFeedbackInfoOffset)
6300 ACCESSORS(Code, next_code_link, Object, kNextCodeLinkOffset) 6312 ACCESSORS(Code, next_code_link, Object, kNextCodeLinkOffset)
6301 6313
6302 6314
6303 void Code::WipeOutHeader() { 6315 void Code::WipeOutHeader() {
6304 WRITE_FIELD(this, kRelocationInfoOffset, NULL); 6316 WRITE_FIELD(this, kRelocationInfoOffset, NULL);
6305 WRITE_FIELD(this, kHandlerTableOffset, NULL); 6317 WRITE_FIELD(this, kHandlerTableOffset, NULL);
6306 WRITE_FIELD(this, kDeoptimizationDataOffset, NULL); 6318 WRITE_FIELD(this, kDeoptimizationDataOffset, NULL);
6307 WRITE_FIELD(this, kConstantPoolOffset, NULL); 6319 if (FLAG_enable_ool_constant_pool) {
6320 WRITE_FIELD(this, kConstantPoolOffset, NULL);
6321 }
6308 // Do not wipe out major/minor keys on a code stub or IC 6322 // Do not wipe out major/minor keys on a code stub or IC
6309 if (!READ_FIELD(this, kTypeFeedbackInfoOffset)->IsSmi()) { 6323 if (!READ_FIELD(this, kTypeFeedbackInfoOffset)->IsSmi()) {
6310 WRITE_FIELD(this, kTypeFeedbackInfoOffset, NULL); 6324 WRITE_FIELD(this, kTypeFeedbackInfoOffset, NULL);
6311 } 6325 }
6312 } 6326 }
6313 6327
6314 6328
6315 Object* Code::type_feedback_info() { 6329 Object* Code::type_feedback_info() {
6316 DCHECK(kind() == FUNCTION); 6330 DCHECK(kind() == FUNCTION);
6317 return raw_type_feedback_info(); 6331 return raw_type_feedback_info();
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after
6811 6825
6812 6826
6813 void String::SetForwardedInternalizedString(String* canonical) { 6827 void String::SetForwardedInternalizedString(String* canonical) {
6814 DCHECK(IsInternalizedString()); 6828 DCHECK(IsInternalizedString());
6815 DCHECK(HasHashCode()); 6829 DCHECK(HasHashCode());
6816 if (canonical == this) return; // No need to forward. 6830 if (canonical == this) return; // No need to forward.
6817 DCHECK(SlowEquals(canonical)); 6831 DCHECK(SlowEquals(canonical));
6818 DCHECK(canonical->IsInternalizedString()); 6832 DCHECK(canonical->IsInternalizedString());
6819 DCHECK(canonical->HasHashCode()); 6833 DCHECK(canonical->HasHashCode());
6820 WRITE_FIELD(this, kHashFieldSlot, canonical); 6834 WRITE_FIELD(this, kHashFieldSlot, canonical);
6835
6821 // Setting the hash field to a tagged value sets the LSB, causing the hash 6836 // Setting the hash field to a tagged value sets the LSB, causing the hash
6822 // code to be interpreted as uninitialized. We use this fact to recognize 6837 // code to be interpreted as uninitialized. We use this fact to recognize
6823 // that we have a forwarded string. 6838 // that we have a forwarded string.
6824 DCHECK(!HasHashCode()); 6839 DCHECK(!HasHashCode());
6825 } 6840 }
6826 6841
6827 6842
6828 String* String::GetForwardedInternalizedString() { 6843 String* String::GetForwardedInternalizedString() {
6829 DCHECK(IsInternalizedString()); 6844 DCHECK(IsInternalizedString());
6830 if (HasHashCode()) return this; 6845 if (HasHashCode()) return this;
(...skipping 679 matching lines...) Expand 10 before | Expand all | Expand 10 after
7510 #undef READ_SHORT_FIELD 7525 #undef READ_SHORT_FIELD
7511 #undef WRITE_SHORT_FIELD 7526 #undef WRITE_SHORT_FIELD
7512 #undef READ_BYTE_FIELD 7527 #undef READ_BYTE_FIELD
7513 #undef WRITE_BYTE_FIELD 7528 #undef WRITE_BYTE_FIELD
7514 #undef NOBARRIER_READ_BYTE_FIELD 7529 #undef NOBARRIER_READ_BYTE_FIELD
7515 #undef NOBARRIER_WRITE_BYTE_FIELD 7530 #undef NOBARRIER_WRITE_BYTE_FIELD
7516 7531
7517 } } // namespace v8::internal 7532 } } // namespace v8::internal
7518 7533
7519 #endif // V8_OBJECTS_INL_H_ 7534 #endif // V8_OBJECTS_INL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698