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

Side by Side Diff: runtime/vm/object.cc

Issue 12937010: Handle TypedDataView objects in Dart_TypedDataAcquireData and (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/object.h" 5 #include "vm/object.h"
6 6
7 #include "include/dart_api.h" 7 #include "include/dart_api.h"
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "vm/assembler.h" 9 #include "vm/assembler.h"
10 #include "vm/bigint_operations.h" 10 #include "vm/bigint_operations.h"
(...skipping 897 matching lines...) Expand 10 before | Expand all | Expand 10 after
908 Array::Handle(Array::New(RawObject::NumberOfTypedDataClasses())); 908 Array::Handle(Array::New(RawObject::NumberOfTypedDataClasses()));
909 int index = 0; 909 int index = 0;
910 #define REGISTER_TYPED_DATA_CLASS(clazz) \ 910 #define REGISTER_TYPED_DATA_CLASS(clazz) \
911 cls = Class::NewTypedDataClass(kTypedData##clazz##Cid); \ 911 cls = Class::NewTypedDataClass(kTypedData##clazz##Cid); \
912 index = kTypedData##clazz##Cid - kTypedDataInt8ArrayCid; \ 912 index = kTypedData##clazz##Cid - kTypedDataInt8ArrayCid; \
913 typeddata_classes.SetAt(index, cls); \ 913 typeddata_classes.SetAt(index, cls); \
914 RegisterPrivateClass(cls, Symbols::_##clazz(), lib); \ 914 RegisterPrivateClass(cls, Symbols::_##clazz(), lib); \
915 915
916 CLASS_LIST_TYPED_DATA(REGISTER_TYPED_DATA_CLASS); 916 CLASS_LIST_TYPED_DATA(REGISTER_TYPED_DATA_CLASS);
917 #undef REGISTER_TYPED_DATA_CLASS 917 #undef REGISTER_TYPED_DATA_CLASS
918 #define REGISTER_TYPED_DATA_VIEW_CLASS(clazz) \
919 cls = Class::NewTypedDataViewClass(kTypedData##clazz##ViewCid); \
920 index = kTypedData##clazz##ViewCid - kTypedDataInt8ArrayCid; \
921 typeddata_classes.SetAt(index, cls); \
922 RegisterPrivateClass(cls, Symbols::_##clazz##View(), lib); \
923 pending_classes.Add(cls, Heap::kOld); \
924
925 CLASS_LIST_TYPED_DATA(REGISTER_TYPED_DATA_VIEW_CLASS);
926 #undef REGISTER_TYPED_DATA_VIEW_CLASS
918 #define REGISTER_EXT_TYPED_DATA_CLASS(clazz) \ 927 #define REGISTER_EXT_TYPED_DATA_CLASS(clazz) \
919 cls = Class::NewExternalTypedDataClass(kExternalTypedData##clazz##Cid); \ 928 cls = Class::NewExternalTypedDataClass(kExternalTypedData##clazz##Cid); \
920 index = kExternalTypedData##clazz##Cid - kTypedDataInt8ArrayCid; \ 929 index = kExternalTypedData##clazz##Cid - kTypedDataInt8ArrayCid; \
921 typeddata_classes.SetAt(index, cls); \ 930 typeddata_classes.SetAt(index, cls); \
922 RegisterPrivateClass(cls, Symbols::_External##clazz(), lib); \ 931 RegisterPrivateClass(cls, Symbols::_External##clazz(), lib); \
923 932
924 CLASS_LIST_TYPED_DATA(REGISTER_EXT_TYPED_DATA_CLASS); 933 CLASS_LIST_TYPED_DATA(REGISTER_EXT_TYPED_DATA_CLASS);
925 #undef REGISTER_EXT_TYPED_DATA_CLASS 934 #undef REGISTER_EXT_TYPED_DATA_CLASS
926 object_store->set_typeddata_classes(typeddata_classes); 935 object_store->set_typeddata_classes(typeddata_classes);
927 936
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
1068 cls = Class::New<ImmutableArray>(); 1077 cls = Class::New<ImmutableArray>();
1069 object_store->set_immutable_array_class(cls); 1078 object_store->set_immutable_array_class(cls);
1070 1079
1071 cls = Class::New<GrowableObjectArray>(); 1080 cls = Class::New<GrowableObjectArray>();
1072 object_store->set_growable_object_array_class(cls); 1081 object_store->set_growable_object_array_class(cls);
1073 1082
1074 #define REGISTER_SCALARLIST_CLASS(name, object_store_name) \ 1083 #define REGISTER_SCALARLIST_CLASS(name, object_store_name) \
1075 cls = Class::New<name>(); \ 1084 cls = Class::New<name>(); \
1076 object_store->set_##object_store_name##_class(cls); \ 1085 object_store->set_##object_store_name##_class(cls); \
1077 1086
1078 REGISTER_SCALARLIST_CLASS(Float32x4, float32x4); 1087 REGISTER_SCALARLIST_CLASS(Float32x4, float32x4);
Ivan Posva 2013/03/22 04:50:01 Can we make it a goal to remove dart:scalarlist on
siva 2013/03/25 17:20:35 Yes, once the simd stuff has landed we could get r
1079 REGISTER_SCALARLIST_CLASS(Uint32x4, uint32x4); 1088 REGISTER_SCALARLIST_CLASS(Uint32x4, uint32x4);
1080 REGISTER_SCALARLIST_CLASS(Int8Array, int8_array); 1089 REGISTER_SCALARLIST_CLASS(Int8Array, int8_array);
1081 REGISTER_SCALARLIST_CLASS(Uint8Array, uint8_array); 1090 REGISTER_SCALARLIST_CLASS(Uint8Array, uint8_array);
1082 REGISTER_SCALARLIST_CLASS(Uint8ClampedArray, uint8_clamped_array); 1091 REGISTER_SCALARLIST_CLASS(Uint8ClampedArray, uint8_clamped_array);
1083 REGISTER_SCALARLIST_CLASS(Int16Array, int16_array); 1092 REGISTER_SCALARLIST_CLASS(Int16Array, int16_array);
1084 REGISTER_SCALARLIST_CLASS(Uint16Array, uint16_array); 1093 REGISTER_SCALARLIST_CLASS(Uint16Array, uint16_array);
1085 REGISTER_SCALARLIST_CLASS(Int32Array, int32_array); 1094 REGISTER_SCALARLIST_CLASS(Int32Array, int32_array);
1086 REGISTER_SCALARLIST_CLASS(Uint32Array, uint32_array); 1095 REGISTER_SCALARLIST_CLASS(Uint32Array, uint32_array);
1087 REGISTER_SCALARLIST_CLASS(Int64Array, int64_array); 1096 REGISTER_SCALARLIST_CLASS(Int64Array, int64_array);
1088 REGISTER_SCALARLIST_CLASS(Uint64Array, uint64_array); 1097 REGISTER_SCALARLIST_CLASS(Uint64Array, uint64_array);
(...skipping 12 matching lines...) Expand all
1101 REGISTER_SCALARLIST_CLASS(ExternalUint64Array, external_uint64_array); 1110 REGISTER_SCALARLIST_CLASS(ExternalUint64Array, external_uint64_array);
1102 REGISTER_SCALARLIST_CLASS(ExternalFloat32x4Array, external_float32x4_array); 1111 REGISTER_SCALARLIST_CLASS(ExternalFloat32x4Array, external_float32x4_array);
1103 REGISTER_SCALARLIST_CLASS(ExternalFloat32Array, external_float32_array); 1112 REGISTER_SCALARLIST_CLASS(ExternalFloat32Array, external_float32_array);
1104 REGISTER_SCALARLIST_CLASS(ExternalFloat64Array, external_float64_array); 1113 REGISTER_SCALARLIST_CLASS(ExternalFloat64Array, external_float64_array);
1105 #undef REGISTER_SCALARLIST_CLASS 1114 #undef REGISTER_SCALARLIST_CLASS
1106 1115
1107 #define REGISTER_TYPED_DATA_CLASS(clazz) \ 1116 #define REGISTER_TYPED_DATA_CLASS(clazz) \
1108 cls = Class::NewTypedDataClass(kTypedData##clazz##Cid); 1117 cls = Class::NewTypedDataClass(kTypedData##clazz##Cid);
1109 CLASS_LIST_TYPED_DATA(REGISTER_TYPED_DATA_CLASS); 1118 CLASS_LIST_TYPED_DATA(REGISTER_TYPED_DATA_CLASS);
1110 #undef REGISTER_TYPED_DATA_CLASS 1119 #undef REGISTER_TYPED_DATA_CLASS
1120 #define REGISTER_TYPED_DATA_VIEW_CLASS(clazz) \
1121 cls = Class::NewTypedDataViewClass(kTypedData##clazz##ViewCid);
1122 CLASS_LIST_TYPED_DATA(REGISTER_TYPED_DATA_VIEW_CLASS);
1123 #undef REGISTER_TYPED_DATA_VIEW_CLASS
1111 #define REGISTER_EXT_TYPED_DATA_CLASS(clazz) \ 1124 #define REGISTER_EXT_TYPED_DATA_CLASS(clazz) \
1112 cls = Class::NewExternalTypedDataClass(kExternalTypedData##clazz##Cid); 1125 cls = Class::NewExternalTypedDataClass(kExternalTypedData##clazz##Cid);
1113 CLASS_LIST_TYPED_DATA(REGISTER_EXT_TYPED_DATA_CLASS); 1126 CLASS_LIST_TYPED_DATA(REGISTER_EXT_TYPED_DATA_CLASS);
1114 #undef REGISTER_EXT_TYPED_DATA_CLASS 1127 #undef REGISTER_EXT_TYPED_DATA_CLASS
1115 1128
1116 cls = Class::New<Integer>(); 1129 cls = Class::New<Integer>();
1117 object_store->set_integer_implementation_class(cls); 1130 object_store->set_integer_implementation_class(cls);
1118 1131
1119 cls = Class::New<Smi>(); 1132 cls = Class::New<Smi>();
1120 object_store->set_smi_class(cls); 1133 object_store->set_smi_class(cls);
(...skipping 824 matching lines...) Expand 10 before | Expand all | Expand 10 after
1945 ASSERT(RawObject::IsTypedDataClassId(class_id)); 1958 ASSERT(RawObject::IsTypedDataClassId(class_id));
1946 intptr_t instance_size = TypedData::InstanceSize(); 1959 intptr_t instance_size = TypedData::InstanceSize();
1947 Class& result = Class::Handle(New<TypedData>(class_id)); 1960 Class& result = Class::Handle(New<TypedData>(class_id));
1948 result.set_instance_size(instance_size); 1961 result.set_instance_size(instance_size);
1949 result.set_next_field_offset(instance_size); 1962 result.set_next_field_offset(instance_size);
1950 result.set_is_prefinalized(); 1963 result.set_is_prefinalized();
1951 return result.raw(); 1964 return result.raw();
1952 } 1965 }
1953 1966
1954 1967
1968 RawClass* Class::NewTypedDataViewClass(intptr_t class_id) {
1969 ASSERT(RawObject::IsTypedDataViewClassId(class_id));
1970 Class& result = Class::Handle(New<Instance>(class_id));
1971 result.set_instance_size(0);
1972 result.set_next_field_offset(0);
1973 return result.raw();
1974 }
1975
1976
1955 RawClass* Class::NewExternalTypedDataClass(intptr_t class_id) { 1977 RawClass* Class::NewExternalTypedDataClass(intptr_t class_id) {
1956 ASSERT(RawObject::IsExternalTypedDataClassId(class_id)); 1978 ASSERT(RawObject::IsExternalTypedDataClassId(class_id));
1957 intptr_t instance_size = ExternalTypedData::InstanceSize(); 1979 intptr_t instance_size = ExternalTypedData::InstanceSize();
1958 Class& result = Class::Handle(New<ExternalTypedData>(class_id)); 1980 Class& result = Class::Handle(New<ExternalTypedData>(class_id));
1959 result.set_instance_size(instance_size); 1981 result.set_instance_size(instance_size);
1960 result.set_next_field_offset(instance_size); 1982 result.set_next_field_offset(instance_size);
1961 result.set_is_prefinalized(); 1983 result.set_is_prefinalized();
1962 return result.raw(); 1984 return result.raw();
1963 } 1985 }
1964 1986
(...skipping 11653 matching lines...) Expand 10 before | Expand all | Expand 10 after
13618 } 13640 }
13619 return result.raw(); 13641 return result.raw();
13620 } 13642 }
13621 13643
13622 13644
13623 const char* WeakProperty::ToCString() const { 13645 const char* WeakProperty::ToCString() const {
13624 return "_WeakProperty"; 13646 return "_WeakProperty";
13625 } 13647 }
13626 13648
13627 } // namespace dart 13649 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698