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

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

Issue 1069883002: WIP SharedArrayBuffer implementation (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 825 matching lines...) Expand 10 before | Expand all | Expand 10 after
836 TYPE_CHECKER(Foreign, FOREIGN_TYPE) 836 TYPE_CHECKER(Foreign, FOREIGN_TYPE)
837 837
838 838
839 bool Object::IsBoolean() const { 839 bool Object::IsBoolean() const {
840 return IsOddball() && 840 return IsOddball() &&
841 ((Oddball::cast(this)->kind() & Oddball::kNotBooleanMask) == 0); 841 ((Oddball::cast(this)->kind() & Oddball::kNotBooleanMask) == 0);
842 } 842 }
843 843
844 844
845 TYPE_CHECKER(JSArray, JS_ARRAY_TYPE) 845 TYPE_CHECKER(JSArray, JS_ARRAY_TYPE)
846 TYPE_CHECKER(JSArrayBuffer, JS_ARRAY_BUFFER_TYPE) 846
847 TYPE_CHECKER(JSTypedArray, JS_TYPED_ARRAY_TYPE) 847
848 bool Object::IsJSArrayBuffer() const {
849 if (!IsHeapObject()) return false;
850
851 InstanceType type = HeapObject::cast(this)->map()->instance_type();
852 return type == JS_ARRAY_BUFFER_TYPE || type == JS_SHARED_ARRAY_BUFFER_TYPE;
853 }
854
855
856 bool Object::IsJSTypedArray() const {
857 if (!IsHeapObject()) return false;
858
859 InstanceType type = HeapObject::cast(this)->map()->instance_type();
860 return type == JS_TYPED_ARRAY_TYPE || type == JS_SHARED_TYPED_ARRAY_TYPE;
861 }
862
863
848 TYPE_CHECKER(JSDataView, JS_DATA_VIEW_TYPE) 864 TYPE_CHECKER(JSDataView, JS_DATA_VIEW_TYPE)
849 865
850 866
851 bool Object::IsJSArrayBufferView() const { 867 bool Object::IsJSArrayBufferView() const {
852 return IsJSDataView() || IsJSTypedArray(); 868 return IsJSDataView() || IsJSTypedArray();
853 } 869 }
854 870
855 871
856 TYPE_CHECKER(JSRegExp, JS_REGEXP_TYPE) 872 TYPE_CHECKER(JSRegExp, JS_REGEXP_TYPE)
857 873
(...skipping 1100 matching lines...) Expand 10 before | Expand all | Expand 10 after
1958 return JSBuiltinsObject::kSize; 1974 return JSBuiltinsObject::kSize;
1959 case JS_FUNCTION_TYPE: 1975 case JS_FUNCTION_TYPE:
1960 return JSFunction::kSize; 1976 return JSFunction::kSize;
1961 case JS_VALUE_TYPE: 1977 case JS_VALUE_TYPE:
1962 return JSValue::kSize; 1978 return JSValue::kSize;
1963 case JS_DATE_TYPE: 1979 case JS_DATE_TYPE:
1964 return JSDate::kSize; 1980 return JSDate::kSize;
1965 case JS_ARRAY_TYPE: 1981 case JS_ARRAY_TYPE:
1966 return JSArray::kSize; 1982 return JSArray::kSize;
1967 case JS_ARRAY_BUFFER_TYPE: 1983 case JS_ARRAY_BUFFER_TYPE:
1984 case JS_SHARED_ARRAY_BUFFER_TYPE:
1968 return JSArrayBuffer::kSize; 1985 return JSArrayBuffer::kSize;
1969 case JS_TYPED_ARRAY_TYPE: 1986 case JS_TYPED_ARRAY_TYPE:
1987 case JS_SHARED_TYPED_ARRAY_TYPE:
1970 return JSTypedArray::kSize; 1988 return JSTypedArray::kSize;
1971 case JS_DATA_VIEW_TYPE: 1989 case JS_DATA_VIEW_TYPE:
1972 return JSDataView::kSize; 1990 return JSDataView::kSize;
1973 case JS_SET_TYPE: 1991 case JS_SET_TYPE:
1974 return JSSet::kSize; 1992 return JSSet::kSize;
1975 case JS_MAP_TYPE: 1993 case JS_MAP_TYPE:
1976 return JSMap::kSize; 1994 return JSMap::kSize;
1977 case JS_SET_ITERATOR_TYPE: 1995 case JS_SET_ITERATOR_TYPE:
1978 return JSSetIterator::kSize; 1996 return JSSetIterator::kSize;
1979 case JS_MAP_ITERATOR_TYPE: 1997 case JS_MAP_ITERATOR_TYPE:
(...skipping 4476 matching lines...) Expand 10 before | Expand all | Expand 10 after
6456 bool JSArrayBuffer::is_neuterable() { 6474 bool JSArrayBuffer::is_neuterable() {
6457 return BooleanBit::get(flag(), kIsNeuterableBit); 6475 return BooleanBit::get(flag(), kIsNeuterableBit);
6458 } 6476 }
6459 6477
6460 6478
6461 void JSArrayBuffer::set_is_neuterable(bool value) { 6479 void JSArrayBuffer::set_is_neuterable(bool value) {
6462 set_flag(BooleanBit::set(flag(), kIsNeuterableBit, value)); 6480 set_flag(BooleanBit::set(flag(), kIsNeuterableBit, value));
6463 } 6481 }
6464 6482
6465 6483
6484 bool JSArrayBuffer::is_shared() {
6485 return BooleanBit::get(flag(), kIsSharedBit);
6486 }
6487
6488
6489 void JSArrayBuffer::set_is_shared(bool value) {
6490 set_flag(BooleanBit::set(flag(), kIsSharedBit, value));
6491 }
6492
6493
6466 ACCESSORS(JSArrayBuffer, weak_next, Object, kWeakNextOffset) 6494 ACCESSORS(JSArrayBuffer, weak_next, Object, kWeakNextOffset)
6467 ACCESSORS(JSArrayBuffer, weak_first_view, Object, kWeakFirstViewOffset) 6495 ACCESSORS(JSArrayBuffer, weak_first_view, Object, kWeakFirstViewOffset)
6468 6496
6469 6497
6470 ACCESSORS(JSArrayBufferView, buffer, Object, kBufferOffset) 6498 ACCESSORS(JSArrayBufferView, buffer, Object, kBufferOffset)
6471 ACCESSORS(JSArrayBufferView, byte_offset, Object, kByteOffsetOffset) 6499 ACCESSORS(JSArrayBufferView, byte_offset, Object, kByteOffsetOffset)
6472 ACCESSORS(JSArrayBufferView, byte_length, Object, kByteLengthOffset) 6500 ACCESSORS(JSArrayBufferView, byte_length, Object, kByteLengthOffset)
6473 ACCESSORS(JSArrayBufferView, weak_next, Object, kWeakNextOffset) 6501 ACCESSORS(JSArrayBufferView, weak_next, Object, kWeakNextOffset)
6474 ACCESSORS(JSTypedArray, length, Object, kLengthOffset) 6502 ACCESSORS(JSTypedArray, length, Object, kLengthOffset)
6475 6503
6504
6505 bool JSTypedArray::is_shared() const {
6506 return Smi::cast(READ_FIELD(this, kIsSharedOffset))->value() != 0;
6507 }
6508
6509
6510 void JSTypedArray::set_is_shared(bool value) {
6511 WRITE_FIELD(this, kIsSharedOffset, Smi::FromInt(value));
6512 }
6513
6514
6476 ACCESSORS(JSRegExp, data, Object, kDataOffset) 6515 ACCESSORS(JSRegExp, data, Object, kDataOffset)
6477 6516
6478 6517
6479 JSRegExp::Type JSRegExp::TypeTag() { 6518 JSRegExp::Type JSRegExp::TypeTag() {
6480 Object* data = this->data(); 6519 Object* data = this->data();
6481 if (data->IsUndefined()) return JSRegExp::NOT_COMPILED; 6520 if (data->IsUndefined()) return JSRegExp::NOT_COMPILED;
6482 Smi* smi = Smi::cast(FixedArray::cast(data)->get(kTagIndex)); 6521 Smi* smi = Smi::cast(FixedArray::cast(data)->get(kTagIndex));
6483 return static_cast<JSRegExp::Type>(smi->value()); 6522 return static_cast<JSRegExp::Type>(smi->value());
6484 } 6523 }
6485 6524
(...skipping 1055 matching lines...) Expand 10 before | Expand all | Expand 10 after
7541 #undef READ_SHORT_FIELD 7580 #undef READ_SHORT_FIELD
7542 #undef WRITE_SHORT_FIELD 7581 #undef WRITE_SHORT_FIELD
7543 #undef READ_BYTE_FIELD 7582 #undef READ_BYTE_FIELD
7544 #undef WRITE_BYTE_FIELD 7583 #undef WRITE_BYTE_FIELD
7545 #undef NOBARRIER_READ_BYTE_FIELD 7584 #undef NOBARRIER_READ_BYTE_FIELD
7546 #undef NOBARRIER_WRITE_BYTE_FIELD 7585 #undef NOBARRIER_WRITE_BYTE_FIELD
7547 7586
7548 } } // namespace v8::internal 7587 } } // namespace v8::internal
7549 7588
7550 #endif // V8_OBJECTS_INL_H_ 7589 #endif // V8_OBJECTS_INL_H_
OLDNEW
« src/objects.h ('K') | « src/objects-debug.cc ('k') | src/objects-printer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698