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

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

Issue 9415043: Port async file operations to be using native ports instead or an isolate (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Implemented all file operations using native ports Created 8 years, 10 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/dart_api_message.h" 5 #include "vm/dart_api_message.h"
6 #include "vm/object.h" 6 #include "vm/object.h"
7 #include "vm/object_store.h" 7 #include "vm/object_store.h"
8 8
9 namespace dart { 9 namespace dart {
10 10
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 175
176 ASSERT((class_header & kSmiTagMask) != 0); 176 ASSERT((class_header & kSmiTagMask) != 0);
177 class_id = LookupInternalClass(class_header); 177 class_id = LookupInternalClass(class_header);
178 switch (class_id) { 178 switch (class_id) {
179 case Object::kClassClass: { 179 case Object::kClassClass: {
180 return NULL; 180 return NULL;
181 } 181 }
182 case Object::kTypeArgumentsClass: { 182 case Object::kTypeArgumentsClass: {
183 // TODO(sjesse): Remove this when message serialization format is 183 // TODO(sjesse): Remove this when message serialization format is
184 // updated (currently length is leaked). 184 // updated (currently length is leaked).
185 AddBackwardReference(object_id, NULL); 185 Dart_CObject* value = &type_arguments_marker;
186 AddBackwardReference(object_id, value);
186 Dart_CObject* length = ReadObject(); 187 Dart_CObject* length = ReadObject();
187 ASSERT(length->type == Dart_CObject::kInt32); 188 ASSERT(length->type == Dart_CObject::kInt32);
188 for (int i = 0; i < length->value.as_int32; i++) { 189 for (int i = 0; i < length->value.as_int32; i++) {
189 Dart_CObject* type = ReadObject(); 190 Dart_CObject* type = ReadObject();
190 if (type != &dynamic_type_marker) return NULL; 191 if (type != &dynamic_type_marker) {
192 return NULL;
193 }
191 } 194 }
192 return &type_arguments_marker; 195 return value;
193 } 196 }
194 case ObjectStore::kArrayClass: { 197 case ObjectStore::kArrayClass: {
195 intptr_t len = ReadSmiValue(); 198 intptr_t len = ReadSmiValue();
196 Dart_CObject* value = AllocateDartCObjectArray(len); 199 Dart_CObject* value = AllocateDartCObjectArray(len);
197 AddBackwardReference(object_id, value); 200 AddBackwardReference(object_id, value);
198 // Skip type arguments. 201 // Skip type arguments.
199 // TODO(sjesse): Remove this when message serialization format is 202 // TODO(sjesse): Remove this when message serialization format is
200 // updated (currently type_arguments is leaked). 203 // updated (currently type_arguments is leaked).
201 Dart_CObject* type_arguments = ReadObject(); 204 Dart_CObject* type_arguments = ReadObject();
202 if (type_arguments != &type_arguments_marker && 205 if (type_arguments != &type_arguments_marker &&
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 return ReadObjectImpl(value); 325 return ReadObjectImpl(value);
323 } 326 }
324 327
325 328
326 void ApiMessageReader::AddBackwardReference(intptr_t id, Dart_CObject* obj) { 329 void ApiMessageReader::AddBackwardReference(intptr_t id, Dart_CObject* obj) {
327 ASSERT((id - kMaxPredefinedObjectIds) == backward_references_.length()); 330 ASSERT((id - kMaxPredefinedObjectIds) == backward_references_.length());
328 backward_references_.Add(obj); 331 backward_references_.Add(obj);
329 } 332 }
330 333
331 } // namespace dart 334 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698