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

Side by Side Diff: runtime/bin/dartutils.h

Issue 2480793002: clang-format runtime/bin (Closed)
Patch Set: Created 4 years, 1 month 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
« no previous file with comments | « runtime/bin/crypto_macos.cc ('k') | runtime/bin/dartutils.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 (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 #ifndef RUNTIME_BIN_DARTUTILS_H_ 5 #ifndef RUNTIME_BIN_DARTUTILS_H_
6 #define RUNTIME_BIN_DARTUTILS_H_ 6 #define RUNTIME_BIN_DARTUTILS_H_
7 7
8 #include "bin/isolate_data.h" 8 #include "bin/isolate_data.h"
9 #include "include/dart_api.h" 9 #include "include/dart_api.h"
10 #include "include/dart_native_api.h" 10 #include "include/dart_native_api.h"
(...skipping 29 matching lines...) Expand all
40 // The caller is responsible for free()ing [kernel_file] if `true` was returned. 40 // The caller is responsible for free()ing [kernel_file] if `true` was returned.
41 bool TryReadKernel(const char* script_uri, 41 bool TryReadKernel(const char* script_uri,
42 const uint8_t** kernel_file, 42 const uint8_t** kernel_file,
43 intptr_t* kernel_length); 43 intptr_t* kernel_length);
44 44
45 class CommandLineOptions { 45 class CommandLineOptions {
46 public: 46 public:
47 explicit CommandLineOptions(int max_count) 47 explicit CommandLineOptions(int max_count)
48 : count_(0), max_count_(max_count), arguments_(NULL) { 48 : count_(0), max_count_(max_count), arguments_(NULL) {
49 static const int kWordSize = sizeof(intptr_t); 49 static const int kWordSize = sizeof(intptr_t);
50 arguments_ = reinterpret_cast<const char **>(malloc(max_count * kWordSize)); 50 arguments_ = reinterpret_cast<const char**>(malloc(max_count * kWordSize));
51 if (arguments_ == NULL) { 51 if (arguments_ == NULL) {
52 max_count_ = 0; 52 max_count_ = 0;
53 } 53 }
54 } 54 }
55 ~CommandLineOptions() { 55 ~CommandLineOptions() {
56 free(arguments_); 56 free(arguments_);
57 count_ = 0; 57 count_ = 0;
58 max_count_ = 0; 58 max_count_ = 0;
59 arguments_ = NULL; 59 arguments_ = NULL;
60 } 60 }
(...skipping 27 matching lines...) Expand all
88 88
89 89
90 class DartUtils { 90 class DartUtils {
91 public: 91 public:
92 // Returns the integer value of a Dart object. If the object is not 92 // Returns the integer value of a Dart object. If the object is not
93 // an integer value an API error is propagated. 93 // an integer value an API error is propagated.
94 static int64_t GetIntegerValue(Dart_Handle value_obj); 94 static int64_t GetIntegerValue(Dart_Handle value_obj);
95 // Returns the integer value of a Dart object. If the object is not 95 // Returns the integer value of a Dart object. If the object is not
96 // an integer value or outside the requested range an API error is 96 // an integer value or outside the requested range an API error is
97 // propagated. 97 // propagated.
98 static int64_t GetInt64ValueCheckRange( 98 static int64_t GetInt64ValueCheckRange(Dart_Handle value_obj,
99 Dart_Handle value_obj, int64_t lower, int64_t upper); 99 int64_t lower,
100 int64_t upper);
100 // Returns the intptr_t value of a Dart object. If the object is not 101 // Returns the intptr_t value of a Dart object. If the object is not
101 // an integer value or the value is outside the intptr_t range an 102 // an integer value or the value is outside the intptr_t range an
102 // API error is propagated. 103 // API error is propagated.
103 static intptr_t GetIntptrValue(Dart_Handle value_obj); 104 static intptr_t GetIntptrValue(Dart_Handle value_obj);
104 // Checks that the value object is an integer object that fits in a 105 // Checks that the value object is an integer object that fits in a
105 // signed 64-bit integer. If it is, the value is returned in the 106 // signed 64-bit integer. If it is, the value is returned in the
106 // value out parameter and true is returned. Otherwise, false is 107 // value out parameter and true is returned. Otherwise, false is
107 // returned. 108 // returned.
108 static bool GetInt64Value(Dart_Handle value_obj, int64_t* value); 109 static bool GetInt64Value(Dart_Handle value_obj, int64_t* value);
109 // Returns the string value of a Dart object. If the object is not 110 // Returns the string value of a Dart object. If the object is not
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 // Create a new Dart String object from a C String. 171 // Create a new Dart String object from a C String.
171 static Dart_Handle NewString(const char* str) { 172 static Dart_Handle NewString(const char* str) {
172 ASSERT(str != NULL); 173 ASSERT(str != NULL);
173 return Dart_NewStringFromUTF8(reinterpret_cast<const uint8_t*>(str), 174 return Dart_NewStringFromUTF8(reinterpret_cast<const uint8_t*>(str),
174 strlen(str)); 175 strlen(str));
175 } 176 }
176 177
177 // Allocate length bytes for a C string with Dart_ScopeAllocate. 178 // Allocate length bytes for a C string with Dart_ScopeAllocate.
178 static char* ScopedCString(intptr_t length) { 179 static char* ScopedCString(intptr_t length) {
179 char* result = NULL; 180 char* result = NULL;
180 result = reinterpret_cast<char*>( 181 result =
181 Dart_ScopeAllocate(length * sizeof(*result))); 182 reinterpret_cast<char*>(Dart_ScopeAllocate(length * sizeof(*result)));
182 return result; 183 return result;
183 } 184 }
184 185
185 // Copy str into a buffer allocated with Dart_ScopeAllocate. 186 // Copy str into a buffer allocated with Dart_ScopeAllocate.
186 static char* ScopedCopyCString(const char* str) { 187 static char* ScopedCopyCString(const char* str) {
187 size_t str_len = strlen(str); 188 size_t str_len = strlen(str);
188 char* result = ScopedCString(str_len + 1); 189 char* result = ScopedCString(str_len + 1);
189 memmove(result, str, str_len); 190 memmove(result, str, str_len);
190 result[str_len] = '\0'; 191 result[str_len] = '\0';
191 return result; 192 return result;
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 250
250 static Dart_Handle LibraryFilePath(Dart_Handle library_uri); 251 static Dart_Handle LibraryFilePath(Dart_Handle library_uri);
251 252
252 private: 253 private:
253 static Dart_Handle SetWorkingDirectory(); 254 static Dart_Handle SetWorkingDirectory();
254 static Dart_Handle PrepareBuiltinLibrary(Dart_Handle builtin_lib, 255 static Dart_Handle PrepareBuiltinLibrary(Dart_Handle builtin_lib,
255 Dart_Handle internal_lib, 256 Dart_Handle internal_lib,
256 bool is_service_isolate, 257 bool is_service_isolate,
257 bool trace_loading); 258 bool trace_loading);
258 static Dart_Handle PrepareCoreLibrary(Dart_Handle core_lib, 259 static Dart_Handle PrepareCoreLibrary(Dart_Handle core_lib,
259 Dart_Handle builtin_lib, 260 Dart_Handle builtin_lib,
260 bool is_service_isolate); 261 bool is_service_isolate);
261 static Dart_Handle PrepareAsyncLibrary(Dart_Handle async_lib, 262 static Dart_Handle PrepareAsyncLibrary(Dart_Handle async_lib,
262 Dart_Handle isolate_lib); 263 Dart_Handle isolate_lib);
263 static Dart_Handle PrepareIOLibrary(Dart_Handle io_lib); 264 static Dart_Handle PrepareIOLibrary(Dart_Handle io_lib);
264 static Dart_Handle PrepareIsolateLibrary(Dart_Handle isolate_lib); 265 static Dart_Handle PrepareIsolateLibrary(Dart_Handle isolate_lib);
265 266
266 DISALLOW_ALLOCATION(); 267 DISALLOW_ALLOCATION();
267 DISALLOW_IMPLICIT_CONSTRUCTORS(DartUtils); 268 DISALLOW_IMPLICIT_CONSTRUCTORS(DartUtils);
268 }; 269 };
269 270
270 271
271 class CObject { 272 class CObject {
272 public: 273 public:
273 // These match the constants in sdk/lib/io/common.dart. 274 // These match the constants in sdk/lib/io/common.dart.
274 static const int kSuccess = 0; 275 static const int kSuccess = 0;
275 static const int kArgumentError = 1; 276 static const int kArgumentError = 1;
276 static const int kOSError = 2; 277 static const int kOSError = 2;
277 static const int kFileClosedError = 3; 278 static const int kFileClosedError = 3;
278 279
279 explicit CObject(Dart_CObject *cobject) : cobject_(cobject) {} 280 explicit CObject(Dart_CObject* cobject) : cobject_(cobject) {}
280 Dart_CObject_Type type() { return cobject_->type; } 281 Dart_CObject_Type type() { return cobject_->type; }
281 Dart_TypedData_Type byte_array_type() { 282 Dart_TypedData_Type byte_array_type() {
282 ASSERT(type() == Dart_CObject_kTypedData || 283 ASSERT(type() == Dart_CObject_kTypedData ||
283 type() == Dart_CObject_kExternalTypedData); 284 type() == Dart_CObject_kExternalTypedData);
284 return cobject_->value.as_typed_data.type; 285 return cobject_->value.as_typed_data.type;
285 } 286 }
286 287
287 bool IsNull() { return type() == Dart_CObject_kNull; } 288 bool IsNull() { return type() == Dart_CObject_kNull; }
288 bool IsBool() { return type() == Dart_CObject_kBool; } 289 bool IsBool() { return type() == Dart_CObject_kBool; }
289 bool IsInt32() { return type() == Dart_CObject_kInt32; } 290 bool IsInt32() { return type() == Dart_CObject_kInt32; }
(...skipping 12 matching lines...) Expand all
302 bool IsSendPort() { return type() == Dart_CObject_kSendPort; } 303 bool IsSendPort() { return type() == Dart_CObject_kSendPort; }
303 304
304 bool IsTrue() { 305 bool IsTrue() {
305 return type() == Dart_CObject_kBool && cobject_->value.as_bool; 306 return type() == Dart_CObject_kBool && cobject_->value.as_bool;
306 } 307 }
307 308
308 bool IsFalse() { 309 bool IsFalse() {
309 return type() == Dart_CObject_kBool && !cobject_->value.as_bool; 310 return type() == Dart_CObject_kBool && !cobject_->value.as_bool;
310 } 311 }
311 312
312 void* operator new(size_t size) { 313 void* operator new(size_t size) { return Dart_ScopeAllocate(size); }
313 return Dart_ScopeAllocate(size);
314 }
315 314
316 static CObject* Null(); 315 static CObject* Null();
317 static CObject* True(); 316 static CObject* True();
318 static CObject* False(); 317 static CObject* False();
319 static CObject* Bool(bool value); 318 static CObject* Bool(bool value);
320 static Dart_CObject* NewInt32(int32_t value); 319 static Dart_CObject* NewInt32(int32_t value);
321 static Dart_CObject* NewInt64(int64_t value); 320 static Dart_CObject* NewInt64(int64_t value);
322 static Dart_CObject* NewIntptr(intptr_t value); 321 static Dart_CObject* NewIntptr(intptr_t value);
323 static Dart_CObject* NewBigint(const char* hex_value); 322 static Dart_CObject* NewBigint(const char* hex_value);
324 static char* BigintToHexValue(Dart_CObject* bigint); 323 static char* BigintToHexValue(Dart_CObject* bigint);
325 static Dart_CObject* NewDouble(double value); 324 static Dart_CObject* NewDouble(double value);
326 static Dart_CObject* NewString(intptr_t length); 325 static Dart_CObject* NewString(intptr_t length);
327 static Dart_CObject* NewString(const char* str); 326 static Dart_CObject* NewString(const char* str);
328 static Dart_CObject* NewArray(intptr_t length); 327 static Dart_CObject* NewArray(intptr_t length);
329 static Dart_CObject* NewUint8Array(intptr_t length); 328 static Dart_CObject* NewUint8Array(intptr_t length);
330 static Dart_CObject* NewUint32Array(intptr_t length); 329 static Dart_CObject* NewUint32Array(intptr_t length);
331 static Dart_CObject* NewExternalUint8Array( 330 static Dart_CObject* NewExternalUint8Array(
332 intptr_t length, uint8_t* data, void* peer, 331 intptr_t length,
332 uint8_t* data,
333 void* peer,
333 Dart_WeakPersistentHandleFinalizer callback); 334 Dart_WeakPersistentHandleFinalizer callback);
334 335
335 static Dart_CObject* NewIOBuffer(int64_t length); 336 static Dart_CObject* NewIOBuffer(int64_t length);
336 static void FreeIOBufferData(Dart_CObject* object); 337 static void FreeIOBufferData(Dart_CObject* object);
337 338
338 Dart_CObject* AsApiCObject() { return cobject_; } 339 Dart_CObject* AsApiCObject() { return cobject_; }
339 340
340 // Create a new CObject array with an illegal arguments error. 341 // Create a new CObject array with an illegal arguments error.
341 static CObject* IllegalArgumentError(); 342 static CObject* IllegalArgumentError();
342 // Create a new CObject array with a file closed error. 343 // Create a new CObject array with a file closed error.
(...skipping 16 matching lines...) Expand all
359 static CObject null_; 360 static CObject null_;
360 static CObject true_; 361 static CObject true_;
361 static CObject false_; 362 static CObject false_;
362 363
363 private: 364 private:
364 DISALLOW_COPY_AND_ASSIGN(CObject); 365 DISALLOW_COPY_AND_ASSIGN(CObject);
365 }; 366 };
366 367
367 368
368 #define DECLARE_COBJECT_CONSTRUCTORS(t) \ 369 #define DECLARE_COBJECT_CONSTRUCTORS(t) \
369 explicit CObject##t(Dart_CObject *cobject) : CObject(cobject) { \ 370 explicit CObject##t(Dart_CObject* cobject) : CObject(cobject) { \
370 ASSERT(type() == Dart_CObject_k##t); \ 371 ASSERT(type() == Dart_CObject_k##t); \
371 cobject_ = cobject; \ 372 cobject_ = cobject; \
372 } \ 373 } \
373 explicit CObject##t(CObject* cobject) : CObject() { \ 374 explicit CObject##t(CObject* cobject) : CObject() { \
374 ASSERT(cobject != NULL); \ 375 ASSERT(cobject != NULL); \
375 ASSERT(cobject->type() == Dart_CObject_k##t); \ 376 ASSERT(cobject->type() == Dart_CObject_k##t); \
376 cobject_ = cobject->AsApiCObject(); \ 377 cobject_ = cobject->AsApiCObject(); \
377 } \ 378 }
378 379
379 380
380 #define DECLARE_COBJECT_TYPED_DATA_CONSTRUCTORS(t) \ 381 #define DECLARE_COBJECT_TYPED_DATA_CONSTRUCTORS(t) \
381 explicit CObject##t##Array(Dart_CObject *cobject) : CObject(cobject) { \ 382 explicit CObject##t##Array(Dart_CObject* cobject) : CObject(cobject) { \
382 ASSERT(type() == Dart_CObject_kTypedData); \ 383 ASSERT(type() == Dart_CObject_kTypedData); \
383 ASSERT(byte_array_type() == Dart_TypedData_k##t); \ 384 ASSERT(byte_array_type() == Dart_TypedData_k##t); \
384 cobject_ = cobject; \ 385 cobject_ = cobject; \
385 } \ 386 } \
386 explicit CObject##t##Array(CObject* cobject) : CObject() { \ 387 explicit CObject##t##Array(CObject* cobject) : CObject() { \
387 ASSERT(cobject != NULL); \ 388 ASSERT(cobject != NULL); \
388 ASSERT(cobject->type() == Dart_CObject_kTypedData); \ 389 ASSERT(cobject->type() == Dart_CObject_kTypedData); \
389 ASSERT(cobject->byte_array_type() == Dart_TypedData_k##t); \ 390 ASSERT(cobject->byte_array_type() == Dart_TypedData_k##t); \
390 cobject_ = cobject->AsApiCObject(); \ 391 cobject_ = cobject->AsApiCObject(); \
391 } \ 392 }
392 393
393 394
394 #define DECLARE_COBJECT_EXTERNAL_TYPED_DATA_CONSTRUCTORS(t) \ 395 #define DECLARE_COBJECT_EXTERNAL_TYPED_DATA_CONSTRUCTORS(t) \
395 explicit CObjectExternal##t##Array(Dart_CObject *cobject) \ 396 explicit CObjectExternal##t##Array(Dart_CObject* cobject) \
396 : CObject(cobject) { \ 397 : CObject(cobject) { \
397 ASSERT(type() == Dart_CObject_kExternalTypedData); \ 398 ASSERT(type() == Dart_CObject_kExternalTypedData); \
398 ASSERT(byte_array_type() == Dart_TypedData_k##t); \ 399 ASSERT(byte_array_type() == Dart_TypedData_k##t); \
399 cobject_ = cobject; \ 400 cobject_ = cobject; \
400 } \ 401 } \
401 explicit CObjectExternal##t##Array(CObject* cobject) : CObject() { \ 402 explicit CObjectExternal##t##Array(CObject* cobject) : CObject() { \
402 ASSERT(cobject != NULL); \ 403 ASSERT(cobject != NULL); \
403 ASSERT(cobject->type() == Dart_CObject_kExternalTypedData); \ 404 ASSERT(cobject->type() == Dart_CObject_kExternalTypedData); \
404 ASSERT(cobject->byte_array_type() == Dart_TypedData_k##t); \ 405 ASSERT(cobject->byte_array_type() == Dart_TypedData_k##t); \
405 cobject_ = cobject->AsApiCObject(); \ 406 cobject_ = cobject->AsApiCObject(); \
406 } \ 407 }
407 408
408 409
409 class CObjectBool : public CObject { 410 class CObjectBool : public CObject {
410 public: 411 public:
411 DECLARE_COBJECT_CONSTRUCTORS(Bool) 412 DECLARE_COBJECT_CONSTRUCTORS(Bool)
412 413
413 bool Value() const { return cobject_->value.as_bool; } 414 bool Value() const { return cobject_->value.as_bool; }
414 415
415 private: 416 private:
416 DISALLOW_COPY_AND_ASSIGN(CObjectBool); 417 DISALLOW_COPY_AND_ASSIGN(CObjectBool);
(...skipping 17 matching lines...) Expand all
434 435
435 int64_t Value() const { return cobject_->value.as_int64; } 436 int64_t Value() const { return cobject_->value.as_int64; }
436 437
437 private: 438 private:
438 DISALLOW_COPY_AND_ASSIGN(CObjectInt64); 439 DISALLOW_COPY_AND_ASSIGN(CObjectInt64);
439 }; 440 };
440 441
441 442
442 class CObjectIntptr : public CObject { 443 class CObjectIntptr : public CObject {
443 public: 444 public:
444 explicit CObjectIntptr(Dart_CObject *cobject) : CObject(cobject) { 445 explicit CObjectIntptr(Dart_CObject* cobject) : CObject(cobject) {
445 ASSERT(type() == Dart_CObject_kInt32 || type() == Dart_CObject_kInt64); 446 ASSERT(type() == Dart_CObject_kInt32 || type() == Dart_CObject_kInt64);
446 cobject_ = cobject; 447 cobject_ = cobject;
447 } 448 }
448 explicit CObjectIntptr(CObject* cobject) : CObject() { 449 explicit CObjectIntptr(CObject* cobject) : CObject() {
449 ASSERT(cobject != NULL); 450 ASSERT(cobject != NULL);
450 ASSERT(cobject->type() == Dart_CObject_kInt64 || 451 ASSERT(cobject->type() == Dart_CObject_kInt64 ||
451 cobject->type() == Dart_CObject_kInt32); 452 cobject->type() == Dart_CObject_kInt32);
452 cobject_ = cobject->AsApiCObject(); 453 cobject_ = cobject->AsApiCObject();
453 } 454 }
454 455
455 intptr_t Value() { 456 intptr_t Value() {
456 intptr_t result; 457 intptr_t result;
457 if (type() == Dart_CObject_kInt32) { 458 if (type() == Dart_CObject_kInt32) {
458 result = cobject_->value.as_int32; 459 result = cobject_->value.as_int32;
459 } else { 460 } else {
460 ASSERT(sizeof(result) == 8); 461 ASSERT(sizeof(result) == 8);
461 result = static_cast<intptr_t>(cobject_->value.as_int64); 462 result = static_cast<intptr_t>(cobject_->value.as_int64);
462 } 463 }
463 return result; 464 return result;
464 } 465 }
465 466
466 private: 467 private:
467 DISALLOW_COPY_AND_ASSIGN(CObjectIntptr); 468 DISALLOW_COPY_AND_ASSIGN(CObjectIntptr);
468 }; 469 };
469 470
470 471
471 class CObjectBigint : public CObject { 472 class CObjectBigint : public CObject {
472 public: 473 public:
473 // DECLARE_COBJECT_CONSTRUCTORS(Bigint) would miss hex_value_ initialization. 474 // DECLARE_COBJECT_CONSTRUCTORS(Bigint) would miss hex_value_ initialization.
474 explicit CObjectBigint(Dart_CObject *cobject) : CObject(cobject) { 475 explicit CObjectBigint(Dart_CObject* cobject) : CObject(cobject) {
475 ASSERT(type() == Dart_CObject_kBigint); 476 ASSERT(type() == Dart_CObject_kBigint);
476 cobject_ = cobject; 477 cobject_ = cobject;
477 hex_value_ = NULL; 478 hex_value_ = NULL;
478 } 479 }
479 explicit CObjectBigint(CObject* cobject) : CObject() { 480 explicit CObjectBigint(CObject* cobject) : CObject() {
480 ASSERT(cobject != NULL); 481 ASSERT(cobject != NULL);
481 ASSERT(cobject->type() == Dart_CObject_kBigint); 482 ASSERT(cobject->type() == Dart_CObject_kBigint);
482 cobject_ = cobject->AsApiCObject(); 483 cobject_ = cobject->AsApiCObject();
483 hex_value_ = NULL; 484 hex_value_ = NULL;
484 } 485 }
485 486
486 char* Value() { 487 char* Value() {
487 if (hex_value_ == NULL) { 488 if (hex_value_ == NULL) {
488 hex_value_ = BigintToHexValue(cobject_); 489 hex_value_ = BigintToHexValue(cobject_);
489 } 490 }
490 ASSERT(hex_value_ != NULL); 491 ASSERT(hex_value_ != NULL);
491 return hex_value_; 492 return hex_value_;
492 } 493 }
493 494
494 ~CObjectBigint() { 495 ~CObjectBigint() { free(hex_value_); }
495 free(hex_value_);
496 }
497 496
498 private: 497 private:
499 char* hex_value_; 498 char* hex_value_;
500 DISALLOW_COPY_AND_ASSIGN(CObjectBigint); 499 DISALLOW_COPY_AND_ASSIGN(CObjectBigint);
501 }; 500 };
502 501
503 502
504 class CObjectDouble : public CObject { 503 class CObjectDouble : public CObject {
505 public: 504 public:
506 DECLARE_COBJECT_CONSTRUCTORS(Double) 505 DECLARE_COBJECT_CONSTRUCTORS(Double)
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 Dart_Port Value() const { return cobject_->value.as_send_port.id; } 547 Dart_Port Value() const { return cobject_->value.as_send_port.id; }
549 Dart_Port OriginId() const { return cobject_->value.as_send_port.origin_id; } 548 Dart_Port OriginId() const { return cobject_->value.as_send_port.origin_id; }
550 549
551 private: 550 private:
552 DISALLOW_COPY_AND_ASSIGN(CObjectSendPort); 551 DISALLOW_COPY_AND_ASSIGN(CObjectSendPort);
553 }; 552 };
554 553
555 554
556 class CObjectTypedData : public CObject { 555 class CObjectTypedData : public CObject {
557 public: 556 public:
558 explicit CObjectTypedData(Dart_CObject *cobject) : CObject(cobject) { 557 explicit CObjectTypedData(Dart_CObject* cobject) : CObject(cobject) {
559 ASSERT(type() == Dart_CObject_kTypedData); 558 ASSERT(type() == Dart_CObject_kTypedData);
560 cobject_ = cobject; 559 cobject_ = cobject;
561 } 560 }
562 explicit CObjectTypedData(CObject* cobject) : CObject() { 561 explicit CObjectTypedData(CObject* cobject) : CObject() {
563 ASSERT(cobject != NULL); 562 ASSERT(cobject != NULL);
564 ASSERT(cobject->type() == Dart_CObject_kTypedData); 563 ASSERT(cobject->type() == Dart_CObject_kTypedData);
565 cobject_ = cobject->AsApiCObject(); 564 cobject_ = cobject->AsApiCObject();
566 } 565 }
567 566
568 Dart_TypedData_Type Type() const { 567 Dart_TypedData_Type Type() const {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
604 return cobject_->value.as_external_typed_data.callback; 603 return cobject_->value.as_external_typed_data.callback;
605 } 604 }
606 605
607 private: 606 private:
608 DISALLOW_COPY_AND_ASSIGN(CObjectExternalUint8Array); 607 DISALLOW_COPY_AND_ASSIGN(CObjectExternalUint8Array);
609 }; 608 };
610 609
611 610
612 class ScopedBlockingCall { 611 class ScopedBlockingCall {
613 public: 612 public:
614 ScopedBlockingCall() { 613 ScopedBlockingCall() { Dart_ThreadDisableProfiling(); }
615 Dart_ThreadDisableProfiling();
616 }
617 614
618 ~ScopedBlockingCall() { 615 ~ScopedBlockingCall() { Dart_ThreadEnableProfiling(); }
619 Dart_ThreadEnableProfiling();
620 }
621 616
622 private: 617 private:
623 DISALLOW_ALLOCATION(); 618 DISALLOW_ALLOCATION();
624 DISALLOW_COPY_AND_ASSIGN(ScopedBlockingCall); 619 DISALLOW_COPY_AND_ASSIGN(ScopedBlockingCall);
625 }; 620 };
626 621
627 622
628 // Where the argument to the constructor is the handle for an object 623 // Where the argument to the constructor is the handle for an object
629 // implementing List<int>, this class creates a scope in which the memory 624 // implementing List<int>, this class creates a scope in which the memory
630 // backing the list can be accessed. 625 // backing the list can be accessed.
631 // 626 //
632 // Do not make Dart_ API calls while in a ScopedMemBuffer. 627 // Do not make Dart_ API calls while in a ScopedMemBuffer.
633 // Do not call Dart_PropagateError while in a ScopedMemBuffer. 628 // Do not call Dart_PropagateError while in a ScopedMemBuffer.
634 class ScopedMemBuffer { 629 class ScopedMemBuffer {
635 public: 630 public:
636 explicit ScopedMemBuffer(Dart_Handle object) { 631 explicit ScopedMemBuffer(Dart_Handle object) {
637 if (!Dart_IsTypedData(object) && !Dart_IsList(object)) { 632 if (!Dart_IsTypedData(object) && !Dart_IsList(object)) {
638 Dart_ThrowException(DartUtils::NewDartArgumentError( 633 Dart_ThrowException(
639 "Argument is not a List<int>")); 634 DartUtils::NewDartArgumentError("Argument is not a List<int>"));
640 } 635 }
641 636
642 uint8_t* bytes = NULL; 637 uint8_t* bytes = NULL;
643 intptr_t bytes_len = 0; 638 intptr_t bytes_len = 0;
644 bool is_typed_data = false; 639 bool is_typed_data = false;
645 if (Dart_IsTypedData(object)) { 640 if (Dart_IsTypedData(object)) {
646 is_typed_data = true; 641 is_typed_data = true;
647 Dart_TypedData_Type typ; 642 Dart_TypedData_Type typ;
648 ThrowIfError(Dart_TypedDataAcquireData( 643 ThrowIfError(Dart_TypedDataAcquireData(
649 object, 644 object, &typ, reinterpret_cast<void**>(&bytes), &bytes_len));
650 &typ,
651 reinterpret_cast<void**>(&bytes),
652 &bytes_len));
653 } else { 645 } else {
654 ASSERT(Dart_IsList(object)); 646 ASSERT(Dart_IsList(object));
655 ThrowIfError(Dart_ListLength(object, &bytes_len)); 647 ThrowIfError(Dart_ListLength(object, &bytes_len));
656 bytes = Dart_ScopeAllocate(bytes_len); 648 bytes = Dart_ScopeAllocate(bytes_len);
657 ASSERT(bytes != NULL); 649 ASSERT(bytes != NULL);
658 ThrowIfError(Dart_ListGetAsBytes(object, 0, bytes, bytes_len)); 650 ThrowIfError(Dart_ListGetAsBytes(object, 0, bytes, bytes_len));
659 } 651 }
660 652
661 object_ = object; 653 object_ = object;
662 bytes_ = bytes; 654 bytes_ = bytes;
(...skipping 17 matching lines...) Expand all
680 bool is_typed_data_; 672 bool is_typed_data_;
681 673
682 DISALLOW_ALLOCATION(); 674 DISALLOW_ALLOCATION();
683 DISALLOW_COPY_AND_ASSIGN(ScopedMemBuffer); 675 DISALLOW_COPY_AND_ASSIGN(ScopedMemBuffer);
684 }; 676 };
685 677
686 } // namespace bin 678 } // namespace bin
687 } // namespace dart 679 } // namespace dart
688 680
689 #endif // RUNTIME_BIN_DARTUTILS_H_ 681 #endif // RUNTIME_BIN_DARTUTILS_H_
OLDNEW
« no previous file with comments | « runtime/bin/crypto_macos.cc ('k') | runtime/bin/dartutils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698