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

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

Issue 551803004: Endian changes, support 64bit big endian (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 3 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
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 3277 matching lines...) Expand 10 before | Expand all | Expand 10 after
3288 SMI_ACCESSORS(String, length, kLengthOffset) 3288 SMI_ACCESSORS(String, length, kLengthOffset)
3289 SYNCHRONIZED_SMI_ACCESSORS(String, length, kLengthOffset) 3289 SYNCHRONIZED_SMI_ACCESSORS(String, length, kLengthOffset)
3290 3290
3291 3291
3292 uint32_t Name::hash_field() { 3292 uint32_t Name::hash_field() {
3293 return READ_UINT32_FIELD(this, kHashFieldOffset); 3293 return READ_UINT32_FIELD(this, kHashFieldOffset);
3294 } 3294 }
3295 3295
3296 3296
3297 void Name::set_hash_field(uint32_t value) { 3297 void Name::set_hash_field(uint32_t value) {
3298 WRITE_UINT32_FIELD(this, kHashFieldOffset, value); 3298 WRITE_INTPTR_FIELD(this, kHashFieldSlot, value);
Sven Panne 2014/09/16 10:48:40 Hmmm, this is a bit brittle for 2 reasons: Writing
andrew_low 2014/09/22 17:49:17 Changed to still use kHashFieldSlot to reference t
3299 #if V8_HOST_ARCH_64_BIT
3300 WRITE_UINT32_FIELD(this, kHashFieldOffset + kIntSize, 0);
3301 #endif
3302 } 3299 }
3303 3300
3304 3301
3305 bool Name::Equals(Name* other) { 3302 bool Name::Equals(Name* other) {
3306 if (other == this) return true; 3303 if (other == this) return true;
3307 if ((this->IsInternalizedString() && other->IsInternalizedString()) || 3304 if ((this->IsInternalizedString() && other->IsInternalizedString()) ||
3308 this->IsSymbol() || other->IsSymbol()) { 3305 this->IsSymbol() || other->IsSymbol()) {
3309 return false; 3306 return false;
3310 } 3307 }
3311 return String::cast(this)->SlowEquals(String::cast(other)); 3308 return String::cast(this)->SlowEquals(String::cast(other));
(...skipping 2148 matching lines...) Expand 10 before | Expand all | Expand 10 after
5460 SMI_ACCESSORS(SharedFunctionInfo, compiler_hints, 5457 SMI_ACCESSORS(SharedFunctionInfo, compiler_hints,
5461 kCompilerHintsOffset) 5458 kCompilerHintsOffset)
5462 SMI_ACCESSORS(SharedFunctionInfo, opt_count_and_bailout_reason, 5459 SMI_ACCESSORS(SharedFunctionInfo, opt_count_and_bailout_reason,
5463 kOptCountAndBailoutReasonOffset) 5460 kOptCountAndBailoutReasonOffset)
5464 SMI_ACCESSORS(SharedFunctionInfo, counters, kCountersOffset) 5461 SMI_ACCESSORS(SharedFunctionInfo, counters, kCountersOffset)
5465 SMI_ACCESSORS(SharedFunctionInfo, ast_node_count, kAstNodeCountOffset) 5462 SMI_ACCESSORS(SharedFunctionInfo, ast_node_count, kAstNodeCountOffset)
5466 SMI_ACCESSORS(SharedFunctionInfo, profiler_ticks, kProfilerTicksOffset) 5463 SMI_ACCESSORS(SharedFunctionInfo, profiler_ticks, kProfilerTicksOffset)
5467 5464
5468 #else 5465 #else
5469 5466
5470 #define PSEUDO_SMI_ACCESSORS_LO(holder, name, offset) \ 5467 #if V8_TARGET_LITTLE_ENDIAN
5471 STATIC_ASSERT(holder::offset % kPointerSize == 0); \ 5468 #define PSEUDO_SMI_LO_ALIGN 0
5472 int holder::name() const { \ 5469 #define PSEUDO_SMI_HI_ALIGN kIntSize
5473 int value = READ_INT_FIELD(this, offset); \ 5470 #else
5474 DCHECK(kHeapObjectTag == 1); \ 5471 #define PSEUDO_SMI_LO_ALIGN kIntSize
5475 DCHECK((value & kHeapObjectTag) == 0); \ 5472 #define PSEUDO_SMI_HI_ALIGN 0
5476 return value >> 1; \ 5473 #endif
5477 } \ 5474
5478 void holder::set_##name(int value) { \ 5475 #define PSEUDO_SMI_ACCESSORS_LO(holder, name, offset) \
5479 DCHECK(kHeapObjectTag == 1); \ 5476 STATIC_ASSERT(holder::offset % kPointerSize == PSEUDO_SMI_LO_ALIGN); \
5480 DCHECK((value & 0xC0000000) == 0xC0000000 || \ 5477 int holder::name() const { \
5481 (value & 0xC0000000) == 0x0); \ 5478 int value = READ_INT_FIELD(this, offset); \
5482 WRITE_INT_FIELD(this, \ 5479 DCHECK(kHeapObjectTag == 1); \
5483 offset, \ 5480 DCHECK((value & kHeapObjectTag) == 0); \
5484 (value << 1) & ~kHeapObjectTag); \ 5481 return value >> 1; \
5482 } \
5483 void holder::set_##name(int value) { \
5484 DCHECK(kHeapObjectTag == 1); \
5485 DCHECK((value & 0xC0000000) == 0xC0000000 || (value & 0xC0000000) == 0x0); \
5486 WRITE_INT_FIELD(this, offset, (value << 1) & ~kHeapObjectTag); \
5485 } 5487 }
5486 5488
5487 #define PSEUDO_SMI_ACCESSORS_HI(holder, name, offset) \ 5489 #define PSEUDO_SMI_ACCESSORS_HI(holder, name, offset) \
5488 STATIC_ASSERT(holder::offset % kPointerSize == kIntSize); \ 5490 STATIC_ASSERT(holder::offset % kPointerSize == PSEUDO_SMI_HI_ALIGN); \
5489 INT_ACCESSORS(holder, name, offset) 5491 INT_ACCESSORS(holder, name, offset)
5490 5492
5491 5493
5492 PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo, length, kLengthOffset) 5494 PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo, length, kLengthOffset)
5493 PSEUDO_SMI_ACCESSORS_HI(SharedFunctionInfo, 5495 PSEUDO_SMI_ACCESSORS_HI(SharedFunctionInfo,
5494 formal_parameter_count, 5496 formal_parameter_count,
5495 kFormalParameterCountOffset) 5497 kFormalParameterCountOffset)
5496 5498
5497 PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo, 5499 PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo,
5498 expected_nof_properties, 5500 expected_nof_properties,
(...skipping 1764 matching lines...) Expand 10 before | Expand all | Expand 10 after
7263 #undef READ_SHORT_FIELD 7265 #undef READ_SHORT_FIELD
7264 #undef WRITE_SHORT_FIELD 7266 #undef WRITE_SHORT_FIELD
7265 #undef READ_BYTE_FIELD 7267 #undef READ_BYTE_FIELD
7266 #undef WRITE_BYTE_FIELD 7268 #undef WRITE_BYTE_FIELD
7267 #undef NOBARRIER_READ_BYTE_FIELD 7269 #undef NOBARRIER_READ_BYTE_FIELD
7268 #undef NOBARRIER_WRITE_BYTE_FIELD 7270 #undef NOBARRIER_WRITE_BYTE_FIELD
7269 7271
7270 } } // namespace v8::internal 7272 } } // namespace v8::internal
7271 7273
7272 #endif // V8_OBJECTS_INL_H_ 7274 #endif // V8_OBJECTS_INL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698