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

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

Issue 142813003: A64: Synchronize with r15358. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/a64
Patch Set: Created 6 years, 11 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-debug.cc ('k') | src/objects-printer.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 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 bool Object::IsSpecFunction() { 214 bool Object::IsSpecFunction() {
215 if (!Object::IsHeapObject()) return false; 215 if (!Object::IsHeapObject()) return false;
216 InstanceType type = HeapObject::cast(this)->map()->instance_type(); 216 InstanceType type = HeapObject::cast(this)->map()->instance_type();
217 return type == JS_FUNCTION_TYPE || type == JS_FUNCTION_PROXY_TYPE; 217 return type == JS_FUNCTION_TYPE || type == JS_FUNCTION_PROXY_TYPE;
218 } 218 }
219 219
220 220
221 bool Object::IsInternalizedString() { 221 bool Object::IsInternalizedString() {
222 if (!this->IsHeapObject()) return false; 222 if (!this->IsHeapObject()) return false;
223 uint32_t type = HeapObject::cast(this)->map()->instance_type(); 223 uint32_t type = HeapObject::cast(this)->map()->instance_type();
224 // Because the internalized tag is non-zero and no non-string types have the
225 // internalized bit set we can test for internalized strings with a very
226 // simple test operation.
227 STATIC_ASSERT(kInternalizedTag != 0); 224 STATIC_ASSERT(kInternalizedTag != 0);
228 ASSERT(kNotStringTag + kIsInternalizedMask > LAST_TYPE); 225 return (type & (kIsNotStringMask | kIsInternalizedMask)) ==
229 return (type & kIsInternalizedMask) != 0; 226 (kInternalizedTag | kStringTag);
230 } 227 }
231 228
232 229
233 bool Object::IsConsString() { 230 bool Object::IsConsString() {
234 if (!IsString()) return false; 231 if (!IsString()) return false;
235 return StringShape(String::cast(this)).IsCons(); 232 return StringShape(String::cast(this)).IsCons();
236 } 233 }
237 234
238 235
239 bool Object::IsSlicedString() { 236 bool Object::IsSlicedString() {
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 StringShape::StringShape(InstanceType t) 313 StringShape::StringShape(InstanceType t)
317 : type_(static_cast<uint32_t>(t)) { 314 : type_(static_cast<uint32_t>(t)) {
318 set_valid(); 315 set_valid();
319 ASSERT((type_ & kIsNotStringMask) == kStringTag); 316 ASSERT((type_ & kIsNotStringMask) == kStringTag);
320 } 317 }
321 318
322 319
323 bool StringShape::IsInternalized() { 320 bool StringShape::IsInternalized() {
324 ASSERT(valid()); 321 ASSERT(valid());
325 STATIC_ASSERT(kInternalizedTag != 0); 322 STATIC_ASSERT(kInternalizedTag != 0);
326 return (type_ & kIsInternalizedMask) != 0; 323 return (type_ & (kIsNotStringMask | kIsInternalizedMask)) ==
324 (kInternalizedTag | kStringTag);
327 } 325 }
328 326
329 327
330 bool String::IsOneByteRepresentation() { 328 bool String::IsOneByteRepresentation() {
331 uint32_t type = map()->instance_type(); 329 uint32_t type = map()->instance_type();
332 return (type & kStringEncodingMask) == kOneByteStringTag; 330 return (type & kStringEncodingMask) == kOneByteStringTag;
333 } 331 }
334 332
335 333
336 bool String::IsTwoByteRepresentation() { 334 bool String::IsTwoByteRepresentation() {
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after
688 686
689 bool Object::IsBoolean() { 687 bool Object::IsBoolean() {
690 return IsOddball() && 688 return IsOddball() &&
691 ((Oddball::cast(this)->kind() & Oddball::kNotBooleanMask) == 0); 689 ((Oddball::cast(this)->kind() & Oddball::kNotBooleanMask) == 0);
692 } 690 }
693 691
694 692
695 TYPE_CHECKER(JSArray, JS_ARRAY_TYPE) 693 TYPE_CHECKER(JSArray, JS_ARRAY_TYPE)
696 TYPE_CHECKER(JSArrayBuffer, JS_ARRAY_BUFFER_TYPE) 694 TYPE_CHECKER(JSArrayBuffer, JS_ARRAY_BUFFER_TYPE)
697 TYPE_CHECKER(JSTypedArray, JS_TYPED_ARRAY_TYPE) 695 TYPE_CHECKER(JSTypedArray, JS_TYPED_ARRAY_TYPE)
696 TYPE_CHECKER(JSDataView, JS_DATA_VIEW_TYPE)
697
698
699 bool Object::IsJSArrayBufferView() {
700 return IsJSDataView() || IsJSTypedArray();
701 }
702
703
698 TYPE_CHECKER(JSRegExp, JS_REGEXP_TYPE) 704 TYPE_CHECKER(JSRegExp, JS_REGEXP_TYPE)
699 705
700 706
701 template <> inline bool Is<JSArray>(Object* obj) { 707 template <> inline bool Is<JSArray>(Object* obj) {
702 return obj->IsJSArray(); 708 return obj->IsJSArray();
703 } 709 }
704 710
705 711
706 bool Object::IsHashTable() { 712 bool Object::IsHashTable() {
707 return Object::IsHeapObject() && 713 return Object::IsHeapObject() &&
(...skipping 918 matching lines...) Expand 10 before | Expand all | Expand 10 after
1626 return READ_FIELD(this, kValueOffset); 1632 return READ_FIELD(this, kValueOffset);
1627 } 1633 }
1628 1634
1629 1635
1630 void Cell::set_value(Object* val, WriteBarrierMode ignored) { 1636 void Cell::set_value(Object* val, WriteBarrierMode ignored) {
1631 // The write barrier is not used for global property cells. 1637 // The write barrier is not used for global property cells.
1632 ASSERT(!val->IsPropertyCell() && !val->IsCell()); 1638 ASSERT(!val->IsPropertyCell() && !val->IsCell());
1633 WRITE_FIELD(this, kValueOffset, val); 1639 WRITE_FIELD(this, kValueOffset, val);
1634 } 1640 }
1635 1641
1642 ACCESSORS(PropertyCell, dependent_code, DependentCode, kDependentCodeOffset)
1636 1643
1637 Object* PropertyCell::type_raw() { 1644 Object* PropertyCell::type_raw() {
1638 return READ_FIELD(this, kTypeOffset); 1645 return READ_FIELD(this, kTypeOffset);
1639 } 1646 }
1640 1647
1641 1648
1642 void PropertyCell::set_type_raw(Object* val, WriteBarrierMode ignored) { 1649 void PropertyCell::set_type_raw(Object* val, WriteBarrierMode ignored) {
1643 WRITE_FIELD(this, kTypeOffset, val); 1650 WRITE_FIELD(this, kTypeOffset, val);
1644 } 1651 }
1645 1652
(...skipping 20 matching lines...) Expand all
1666 case JS_VALUE_TYPE: 1673 case JS_VALUE_TYPE:
1667 return JSValue::kSize; 1674 return JSValue::kSize;
1668 case JS_DATE_TYPE: 1675 case JS_DATE_TYPE:
1669 return JSDate::kSize; 1676 return JSDate::kSize;
1670 case JS_ARRAY_TYPE: 1677 case JS_ARRAY_TYPE:
1671 return JSArray::kSize; 1678 return JSArray::kSize;
1672 case JS_ARRAY_BUFFER_TYPE: 1679 case JS_ARRAY_BUFFER_TYPE:
1673 return JSArrayBuffer::kSize; 1680 return JSArrayBuffer::kSize;
1674 case JS_TYPED_ARRAY_TYPE: 1681 case JS_TYPED_ARRAY_TYPE:
1675 return JSTypedArray::kSize; 1682 return JSTypedArray::kSize;
1683 case JS_DATA_VIEW_TYPE:
1684 return JSDataView::kSize;
1676 case JS_SET_TYPE: 1685 case JS_SET_TYPE:
1677 return JSSet::kSize; 1686 return JSSet::kSize;
1678 case JS_MAP_TYPE: 1687 case JS_MAP_TYPE:
1679 return JSMap::kSize; 1688 return JSMap::kSize;
1680 case JS_WEAK_MAP_TYPE: 1689 case JS_WEAK_MAP_TYPE:
1681 return JSWeakMap::kSize; 1690 return JSWeakMap::kSize;
1682 case JS_REGEXP_TYPE: 1691 case JS_REGEXP_TYPE:
1683 return JSRegExp::kSize; 1692 return JSRegExp::kSize;
1684 case JS_CONTEXT_EXTENSION_OBJECT_TYPE: 1693 case JS_CONTEXT_EXTENSION_OBJECT_TYPE:
1685 return JSObject::kHeaderSize; 1694 return JSObject::kHeaderSize;
(...skipping 858 matching lines...) Expand 10 before | Expand all | Expand 10 after
2544 CAST_ACCESSOR(SharedFunctionInfo) 2553 CAST_ACCESSOR(SharedFunctionInfo)
2545 CAST_ACCESSOR(Map) 2554 CAST_ACCESSOR(Map)
2546 CAST_ACCESSOR(JSFunction) 2555 CAST_ACCESSOR(JSFunction)
2547 CAST_ACCESSOR(GlobalObject) 2556 CAST_ACCESSOR(GlobalObject)
2548 CAST_ACCESSOR(JSGlobalProxy) 2557 CAST_ACCESSOR(JSGlobalProxy)
2549 CAST_ACCESSOR(JSGlobalObject) 2558 CAST_ACCESSOR(JSGlobalObject)
2550 CAST_ACCESSOR(JSBuiltinsObject) 2559 CAST_ACCESSOR(JSBuiltinsObject)
2551 CAST_ACCESSOR(Code) 2560 CAST_ACCESSOR(Code)
2552 CAST_ACCESSOR(JSArray) 2561 CAST_ACCESSOR(JSArray)
2553 CAST_ACCESSOR(JSArrayBuffer) 2562 CAST_ACCESSOR(JSArrayBuffer)
2563 CAST_ACCESSOR(JSArrayBufferView)
2554 CAST_ACCESSOR(JSTypedArray) 2564 CAST_ACCESSOR(JSTypedArray)
2565 CAST_ACCESSOR(JSDataView)
2555 CAST_ACCESSOR(JSRegExp) 2566 CAST_ACCESSOR(JSRegExp)
2556 CAST_ACCESSOR(JSProxy) 2567 CAST_ACCESSOR(JSProxy)
2557 CAST_ACCESSOR(JSFunctionProxy) 2568 CAST_ACCESSOR(JSFunctionProxy)
2558 CAST_ACCESSOR(JSSet) 2569 CAST_ACCESSOR(JSSet)
2559 CAST_ACCESSOR(JSMap) 2570 CAST_ACCESSOR(JSMap)
2560 CAST_ACCESSOR(JSWeakMap) 2571 CAST_ACCESSOR(JSWeakMap)
2561 CAST_ACCESSOR(Foreign) 2572 CAST_ACCESSOR(Foreign)
2562 CAST_ACCESSOR(ByteArray) 2573 CAST_ACCESSOR(ByteArray)
2563 CAST_ACCESSOR(FreeSpace) 2574 CAST_ACCESSOR(FreeSpace)
2564 CAST_ACCESSOR(ExternalArray) 2575 CAST_ACCESSOR(ExternalArray)
(...skipping 804 matching lines...) Expand 10 before | Expand all | Expand 10 after
3369 3380
3370 3381
3371 int Map::pre_allocated_property_fields() { 3382 int Map::pre_allocated_property_fields() {
3372 return READ_BYTE_FIELD(this, kPreAllocatedPropertyFieldsOffset); 3383 return READ_BYTE_FIELD(this, kPreAllocatedPropertyFieldsOffset);
3373 } 3384 }
3374 3385
3375 3386
3376 int HeapObject::SizeFromMap(Map* map) { 3387 int HeapObject::SizeFromMap(Map* map) {
3377 int instance_size = map->instance_size(); 3388 int instance_size = map->instance_size();
3378 if (instance_size != kVariableSizeSentinel) return instance_size; 3389 if (instance_size != kVariableSizeSentinel) return instance_size;
3379 // We can ignore the "internalized" bit because it is only set for strings
3380 // and thus implies a string type.
3381 int instance_type =
3382 static_cast<int>(map->instance_type()) & ~kIsInternalizedMask;
3383 // Only inline the most frequent cases. 3390 // Only inline the most frequent cases.
3391 int instance_type = static_cast<int>(map->instance_type());
3384 if (instance_type == FIXED_ARRAY_TYPE) { 3392 if (instance_type == FIXED_ARRAY_TYPE) {
3385 return FixedArray::BodyDescriptor::SizeOf(map, this); 3393 return FixedArray::BodyDescriptor::SizeOf(map, this);
3386 } 3394 }
3387 if (instance_type == ASCII_STRING_TYPE) { 3395 if (instance_type == ASCII_STRING_TYPE ||
3396 instance_type == ASCII_INTERNALIZED_STRING_TYPE) {
3388 return SeqOneByteString::SizeFor( 3397 return SeqOneByteString::SizeFor(
3389 reinterpret_cast<SeqOneByteString*>(this)->length()); 3398 reinterpret_cast<SeqOneByteString*>(this)->length());
3390 } 3399 }
3391 if (instance_type == BYTE_ARRAY_TYPE) { 3400 if (instance_type == BYTE_ARRAY_TYPE) {
3392 return reinterpret_cast<ByteArray*>(this)->ByteArraySize(); 3401 return reinterpret_cast<ByteArray*>(this)->ByteArraySize();
3393 } 3402 }
3394 if (instance_type == FREE_SPACE_TYPE) { 3403 if (instance_type == FREE_SPACE_TYPE) {
3395 return reinterpret_cast<FreeSpace*>(this)->size(); 3404 return reinterpret_cast<FreeSpace*>(this)->size();
3396 } 3405 }
3397 if (instance_type == STRING_TYPE) { 3406 if (instance_type == STRING_TYPE ||
3407 instance_type == INTERNALIZED_STRING_TYPE) {
3398 return SeqTwoByteString::SizeFor( 3408 return SeqTwoByteString::SizeFor(
3399 reinterpret_cast<SeqTwoByteString*>(this)->length()); 3409 reinterpret_cast<SeqTwoByteString*>(this)->length());
3400 } 3410 }
3401 if (instance_type == FIXED_DOUBLE_ARRAY_TYPE) { 3411 if (instance_type == FIXED_DOUBLE_ARRAY_TYPE) {
3402 return FixedDoubleArray::SizeFor( 3412 return FixedDoubleArray::SizeFor(
3403 reinterpret_cast<FixedDoubleArray*>(this)->length()); 3413 reinterpret_cast<FixedDoubleArray*>(this)->length());
3404 } 3414 }
3405 ASSERT(instance_type == CODE_TYPE); 3415 ASSERT(instance_type == CODE_TYPE);
3406 return reinterpret_cast<Code*>(this)->CodeSize(); 3416 return reinterpret_cast<Code*>(this)->CodeSize();
3407 } 3417 }
(...skipping 614 matching lines...) Expand 10 before | Expand all | Expand 10 after
4022 void Code::set_marked_for_deoptimization(bool flag) { 4032 void Code::set_marked_for_deoptimization(bool flag) {
4023 ASSERT(kind() == OPTIMIZED_FUNCTION); 4033 ASSERT(kind() == OPTIMIZED_FUNCTION);
4024 int previous = READ_UINT32_FIELD(this, kKindSpecificFlags1Offset); 4034 int previous = READ_UINT32_FIELD(this, kKindSpecificFlags1Offset);
4025 int updated = MarkedForDeoptimizationField::update(previous, flag); 4035 int updated = MarkedForDeoptimizationField::update(previous, flag);
4026 WRITE_UINT32_FIELD(this, kKindSpecificFlags1Offset, updated); 4036 WRITE_UINT32_FIELD(this, kKindSpecificFlags1Offset, updated);
4027 } 4037 }
4028 4038
4029 4039
4030 bool Code::is_inline_cache_stub() { 4040 bool Code::is_inline_cache_stub() {
4031 Kind kind = this->kind(); 4041 Kind kind = this->kind();
4032 return kind >= FIRST_IC_KIND && kind <= LAST_IC_KIND; 4042 switch (kind) {
4043 #define CASE(name) case name: return true;
4044 IC_KIND_LIST(CASE)
4045 #undef CASE
4046 default: return false;
4047 }
4033 } 4048 }
4034 4049
4035 4050
4036 bool Code::is_debug_break() { 4051 bool Code::is_debug_break() {
4037 return ic_state() == DEBUG_STUB && extra_ic_state() == DEBUG_BREAK; 4052 return ic_state() == DEBUG_STUB && extra_ic_state() == DEBUG_BREAK;
4038 } 4053 }
4039 4054
4040 4055
4041 Code::Flags Code::ComputeFlags(Kind kind, 4056 Code::Flags Code::ComputeFlags(Kind kind,
4042 InlineCacheState ic_state, 4057 InlineCacheState ic_state,
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
4427 4442
4428 ACCESSORS(SignatureInfo, receiver, Object, kReceiverOffset) 4443 ACCESSORS(SignatureInfo, receiver, Object, kReceiverOffset)
4429 ACCESSORS(SignatureInfo, args, Object, kArgsOffset) 4444 ACCESSORS(SignatureInfo, args, Object, kArgsOffset)
4430 4445
4431 ACCESSORS(TypeSwitchInfo, types, Object, kTypesOffset) 4446 ACCESSORS(TypeSwitchInfo, types, Object, kTypesOffset)
4432 4447
4433 ACCESSORS(AllocationSiteInfo, payload, Object, kPayloadOffset) 4448 ACCESSORS(AllocationSiteInfo, payload, Object, kPayloadOffset)
4434 4449
4435 ACCESSORS(Script, source, Object, kSourceOffset) 4450 ACCESSORS(Script, source, Object, kSourceOffset)
4436 ACCESSORS(Script, name, Object, kNameOffset) 4451 ACCESSORS(Script, name, Object, kNameOffset)
4437 ACCESSORS(Script, id, Object, kIdOffset) 4452 ACCESSORS(Script, id, Smi, kIdOffset)
4438 ACCESSORS_TO_SMI(Script, line_offset, kLineOffsetOffset) 4453 ACCESSORS_TO_SMI(Script, line_offset, kLineOffsetOffset)
4439 ACCESSORS_TO_SMI(Script, column_offset, kColumnOffsetOffset) 4454 ACCESSORS_TO_SMI(Script, column_offset, kColumnOffsetOffset)
4440 ACCESSORS(Script, data, Object, kDataOffset) 4455 ACCESSORS(Script, data, Object, kDataOffset)
4441 ACCESSORS(Script, context_data, Object, kContextOffset) 4456 ACCESSORS(Script, context_data, Object, kContextOffset)
4442 ACCESSORS(Script, wrapper, Foreign, kWrapperOffset) 4457 ACCESSORS(Script, wrapper, Foreign, kWrapperOffset)
4443 ACCESSORS_TO_SMI(Script, type, kTypeOffset) 4458 ACCESSORS_TO_SMI(Script, type, kTypeOffset)
4444 ACCESSORS_TO_SMI(Script, compilation_type, kCompilationTypeOffset) 4459 ACCESSORS_TO_SMI(Script, compilation_type, kCompilationTypeOffset)
4445 ACCESSORS_TO_SMI(Script, compilation_state, kCompilationStateOffset) 4460 ACCESSORS_TO_SMI(Script, compilation_state, kCompilationStateOffset)
4446 ACCESSORS(Script, line_ends, Object, kLineEndsOffset) 4461 ACCESSORS(Script, line_ends, Object, kLineEndsOffset)
4447 ACCESSORS(Script, eval_from_shared, Object, kEvalFromSharedOffset) 4462 ACCESSORS(Script, eval_from_shared, Object, kEvalFromSharedOffset)
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
4774 return function_data()->IsSmi(); 4789 return function_data()->IsSmi();
4775 } 4790 }
4776 4791
4777 4792
4778 BuiltinFunctionId SharedFunctionInfo::builtin_function_id() { 4793 BuiltinFunctionId SharedFunctionInfo::builtin_function_id() {
4779 ASSERT(HasBuiltinFunctionId()); 4794 ASSERT(HasBuiltinFunctionId());
4780 return static_cast<BuiltinFunctionId>(Smi::cast(function_data())->value()); 4795 return static_cast<BuiltinFunctionId>(Smi::cast(function_data())->value());
4781 } 4796 }
4782 4797
4783 4798
4784 int SharedFunctionInfo::code_age() {
4785 return (compiler_hints() >> kCodeAgeShift) & kCodeAgeMask;
4786 }
4787
4788
4789 void SharedFunctionInfo::set_code_age(int code_age) {
4790 int hints = compiler_hints() & ~(kCodeAgeMask << kCodeAgeShift);
4791 set_compiler_hints(hints | ((code_age & kCodeAgeMask) << kCodeAgeShift));
4792 }
4793
4794
4795 int SharedFunctionInfo::ic_age() { 4799 int SharedFunctionInfo::ic_age() {
4796 return ICAgeBits::decode(counters()); 4800 return ICAgeBits::decode(counters());
4797 } 4801 }
4798 4802
4799 4803
4800 void SharedFunctionInfo::set_ic_age(int ic_age) { 4804 void SharedFunctionInfo::set_ic_age(int ic_age) {
4801 set_counters(ICAgeBits::update(counters(), ic_age)); 4805 set_counters(ICAgeBits::update(counters(), ic_age));
4802 } 4806 }
4803 4807
4804 4808
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
4888 } 4892 }
4889 4893
4890 4894
4891 bool JSFunction::IsInRecompileQueue() { 4895 bool JSFunction::IsInRecompileQueue() {
4892 return code() == GetIsolate()->builtins()->builtin( 4896 return code() == GetIsolate()->builtins()->builtin(
4893 Builtins::kInRecompileQueue); 4897 Builtins::kInRecompileQueue);
4894 } 4898 }
4895 4899
4896 4900
4897 Code* JSFunction::code() { 4901 Code* JSFunction::code() {
4898 return Code::cast(unchecked_code()); 4902 return Code::cast(
4899 }
4900
4901
4902 Code* JSFunction::unchecked_code() {
4903 return reinterpret_cast<Code*>(
4904 Code::GetObjectFromEntryAddress(FIELD_ADDR(this, kCodeEntryOffset))); 4903 Code::GetObjectFromEntryAddress(FIELD_ADDR(this, kCodeEntryOffset)));
4905 } 4904 }
4906 4905
4907 4906
4908 void JSFunction::set_code(Code* value) { 4907 void JSFunction::set_code(Code* value) {
4909 ASSERT(!HEAP->InNewSpace(value)); 4908 ASSERT(!HEAP->InNewSpace(value));
4910 Address entry = value->entry(); 4909 Address entry = value->entry();
4911 WRITE_INTPTR_FIELD(this, kCodeEntryOffset, reinterpret_cast<intptr_t>(entry)); 4910 WRITE_INTPTR_FIELD(this, kCodeEntryOffset, reinterpret_cast<intptr_t>(entry));
4912 GetHeap()->incremental_marking()->RecordWriteOfCodeEntry( 4911 GetHeap()->incremental_marking()->RecordWriteOfCodeEntry(
4913 this, 4912 this,
(...skipping 24 matching lines...) Expand all
4938 context()->native_context()->RemoveOptimizedFunction(this); 4937 context()->native_context()->RemoveOptimizedFunction(this);
4939 } 4938 }
4940 } 4939 }
4941 4940
4942 4941
4943 Context* JSFunction::context() { 4942 Context* JSFunction::context() {
4944 return Context::cast(READ_FIELD(this, kContextOffset)); 4943 return Context::cast(READ_FIELD(this, kContextOffset));
4945 } 4944 }
4946 4945
4947 4946
4948 Object* JSFunction::unchecked_context() {
4949 return READ_FIELD(this, kContextOffset);
4950 }
4951
4952
4953 void JSFunction::set_context(Object* value) { 4947 void JSFunction::set_context(Object* value) {
4954 ASSERT(value->IsUndefined() || value->IsContext()); 4948 ASSERT(value->IsUndefined() || value->IsContext());
4955 WRITE_FIELD(this, kContextOffset, value); 4949 WRITE_FIELD(this, kContextOffset, value);
4956 WRITE_BARRIER(GetHeap(), this, kContextOffset, value); 4950 WRITE_BARRIER(GetHeap(), this, kContextOffset, value);
4957 } 4951 }
4958 4952
4959 ACCESSORS(JSFunction, prototype_or_initial_map, Object, 4953 ACCESSORS(JSFunction, prototype_or_initial_map, Object,
4960 kPrototypeOrInitialMapOffset) 4954 kPrototypeOrInitialMapOffset)
4961 4955
4962 4956
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
5302 return BooleanBit::get(flag(), kIsExternalBit); 5296 return BooleanBit::get(flag(), kIsExternalBit);
5303 } 5297 }
5304 5298
5305 5299
5306 void JSArrayBuffer::set_is_external(bool value) { 5300 void JSArrayBuffer::set_is_external(bool value) {
5307 set_flag(BooleanBit::set(flag(), kIsExternalBit, value)); 5301 set_flag(BooleanBit::set(flag(), kIsExternalBit, value));
5308 } 5302 }
5309 5303
5310 5304
5311 ACCESSORS(JSArrayBuffer, weak_next, Object, kWeakNextOffset) 5305 ACCESSORS(JSArrayBuffer, weak_next, Object, kWeakNextOffset)
5312 ACCESSORS(JSArrayBuffer, weak_first_array, Object, kWeakFirstArrayOffset) 5306 ACCESSORS(JSArrayBuffer, weak_first_view, Object, kWeakFirstViewOffset)
5313 5307
5314 5308
5315 ACCESSORS(JSTypedArray, buffer, Object, kBufferOffset) 5309 ACCESSORS(JSArrayBufferView, buffer, Object, kBufferOffset)
5316 ACCESSORS(JSTypedArray, byte_offset, Object, kByteOffsetOffset) 5310 ACCESSORS(JSArrayBufferView, byte_offset, Object, kByteOffsetOffset)
5317 ACCESSORS(JSTypedArray, byte_length, Object, kByteLengthOffset) 5311 ACCESSORS(JSArrayBufferView, byte_length, Object, kByteLengthOffset)
5312 ACCESSORS(JSArrayBufferView, weak_next, Object, kWeakNextOffset)
5318 ACCESSORS(JSTypedArray, length, Object, kLengthOffset) 5313 ACCESSORS(JSTypedArray, length, Object, kLengthOffset)
5319 ACCESSORS(JSTypedArray, weak_next, Object, kWeakNextOffset)
5320 5314
5321 ACCESSORS(JSRegExp, data, Object, kDataOffset) 5315 ACCESSORS(JSRegExp, data, Object, kDataOffset)
5322 5316
5323 5317
5324 JSRegExp::Type JSRegExp::TypeTag() { 5318 JSRegExp::Type JSRegExp::TypeTag() {
5325 Object* data = this->data(); 5319 Object* data = this->data();
5326 if (data->IsUndefined()) return JSRegExp::NOT_COMPILED; 5320 if (data->IsUndefined()) return JSRegExp::NOT_COMPILED;
5327 Smi* smi = Smi::cast(FixedArray::cast(data)->get(kTagIndex)); 5321 Smi* smi = Smi::cast(FixedArray::cast(data)->get(kTagIndex));
5328 return static_cast<JSRegExp::Type>(smi->value()); 5322 return static_cast<JSRegExp::Type>(smi->value());
5329 } 5323 }
(...skipping 854 matching lines...) Expand 10 before | Expand all | Expand 10 after
6184 #undef WRITE_UINT32_FIELD 6178 #undef WRITE_UINT32_FIELD
6185 #undef READ_SHORT_FIELD 6179 #undef READ_SHORT_FIELD
6186 #undef WRITE_SHORT_FIELD 6180 #undef WRITE_SHORT_FIELD
6187 #undef READ_BYTE_FIELD 6181 #undef READ_BYTE_FIELD
6188 #undef WRITE_BYTE_FIELD 6182 #undef WRITE_BYTE_FIELD
6189 6183
6190 6184
6191 } } // namespace v8::internal 6185 } } // namespace v8::internal
6192 6186
6193 #endif // V8_OBJECTS_INL_H_ 6187 #endif // V8_OBJECTS_INL_H_
OLDNEW
« no previous file with comments | « src/objects-debug.cc ('k') | src/objects-printer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698