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

Side by Side Diff: runtime/lib/byte_array.cc

Issue 11414211: Expose transferable constructor to Int8List (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Add tests Created 8 years 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 | « no previous file | runtime/lib/byte_array.dart » ('j') | runtime/vm/os_android.cc » ('J')
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 #include "vm/bootstrap_natives.h" 5 #include "vm/bootstrap_natives.h"
6 6
7 #include "vm/bigint_operations.h" 7 #include "vm/bigint_operations.h"
8 #include "vm/exceptions.h" 8 #include "vm/exceptions.h"
9 #include "vm/native_entry.h" 9 #include "vm/native_entry.h"
10 #include "vm/object.h" 10 #include "vm/object.h"
(...skipping 24 matching lines...) Expand all
35 static void LengthCheck(intptr_t len, intptr_t max) { 35 static void LengthCheck(intptr_t len, intptr_t max) {
36 if (len < 0 || len > max) { 36 if (len < 0 || len > max) {
37 const String& error = String::Handle(String::NewFormatted( 37 const String& error = String::Handle(String::NewFormatted(
38 "length (%"Pd") must be in the range [0..%"Pd"]", len, max)); 38 "length (%"Pd") must be in the range [0..%"Pd"]", len, max));
39 GrowableArray<const Object*> args; 39 GrowableArray<const Object*> args;
40 args.Add(&error); 40 args.Add(&error);
41 Exceptions::ThrowByType(Exceptions::kArgument, args); 41 Exceptions::ThrowByType(Exceptions::kArgument, args);
42 } 42 }
43 } 43 }
44 44
45 #define EXTERNAL_ALIGNMENT 16
cshapiro 2012/11/29 21:28:17 Macros like this are strongly discouraged by the s
Cutch 2012/11/29 23:53:17 Done.
46
47 void FinalizeExternalBytes(void* ptr) {
cshapiro 2012/11/29 21:28:17 Any reason for this routine? Why not just pass OS
Cutch 2012/11/29 23:53:17 Done.
48 OS::AlignedFree(ptr);
49 }
45 50
46 #define GETTER_ARGUMENTS(ArrayT, ValueT) \ 51 #define GETTER_ARGUMENTS(ArrayT, ValueT) \
47 GET_NATIVE_ARGUMENT(ArrayT, array, arguments->NativeArgAt(0)); \ 52 GET_NATIVE_ARGUMENT(ArrayT, array, arguments->NativeArgAt(0)); \
48 GET_NATIVE_ARGUMENT(Smi, index, arguments->NativeArgAt(1)); 53 GET_NATIVE_ARGUMENT(Smi, index, arguments->NativeArgAt(1));
49 54
50 55
51 #define SETTER_ARGUMENTS(ArrayT, ObjectT, ValueT) \ 56 #define SETTER_ARGUMENTS(ArrayT, ObjectT, ValueT) \
52 GET_NATIVE_ARGUMENT(ArrayT, array, arguments->NativeArgAt(0)); \ 57 GET_NATIVE_ARGUMENT(ArrayT, array, arguments->NativeArgAt(0)); \
53 GET_NATIVE_ARGUMENT(Smi, index, arguments->NativeArgAt(1)); \ 58 GET_NATIVE_ARGUMENT(Smi, index, arguments->NativeArgAt(1)); \
54 GET_NATIVE_ARGUMENT(ObjectT, value_object, arguments->NativeArgAt(2)); 59 GET_NATIVE_ARGUMENT(ObjectT, value_object, arguments->NativeArgAt(2));
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 // Int8Array 283 // Int8Array
279 284
280 DEFINE_NATIVE_ENTRY(Int8Array_new, 1) { 285 DEFINE_NATIVE_ENTRY(Int8Array_new, 1) {
281 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0)); 286 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0));
282 intptr_t len = length.Value(); 287 intptr_t len = length.Value();
283 LengthCheck(len, Int8Array::kMaxElements); 288 LengthCheck(len, Int8Array::kMaxElements);
284 return Int8Array::New(len); 289 return Int8Array::New(len);
285 } 290 }
286 291
287 292
293 DEFINE_NATIVE_ENTRY(Int8Array_newTransferrable, 1) {
294 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0));
295 intptr_t len = length.Value();
296 LengthCheck(len, Int8Array::kMaxElements);
297 void* bytes = OS::AlignedAllocate(len*sizeof(int8_t), EXTERNAL_ALIGNMENT);
cshapiro 2012/11/29 21:28:17 I think there are some opportunities for improveme
Cutch 2012/11/29 23:53:17 Done.
298 return ExternalInt8Array::New(reinterpret_cast<int8_t*>(bytes),
299 len,
300 bytes,
301 FinalizeExternalBytes);
302 }
303
304
288 DEFINE_NATIVE_ENTRY(Int8Array_getIndexed, 2) { 305 DEFINE_NATIVE_ENTRY(Int8Array_getIndexed, 2) {
289 GETTER(Int8Array, Smi, int8_t); 306 GETTER(Int8Array, Smi, int8_t);
290 } 307 }
291 308
292 309
293 DEFINE_NATIVE_ENTRY(Int8Array_setIndexed, 3) { 310 DEFINE_NATIVE_ENTRY(Int8Array_setIndexed, 3) {
294 SETTER(Int8Array, Smi, Value, int8_t); 311 SETTER(Int8Array, Smi, Value, int8_t);
295 } 312 }
296 313
297 314
298 // Uint8Array 315 // Uint8Array
299 316
300 DEFINE_NATIVE_ENTRY(Uint8Array_new, 1) { 317 DEFINE_NATIVE_ENTRY(Uint8Array_new, 1) {
301 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0)); 318 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0));
302 intptr_t len = length.Value(); 319 intptr_t len = length.Value();
303 LengthCheck(len, Uint8Array::kMaxElements); 320 LengthCheck(len, Uint8Array::kMaxElements);
304 return Uint8Array::New(len); 321 return Uint8Array::New(len);
305 } 322 }
306 323
307 324
325 DEFINE_NATIVE_ENTRY(Uint8Array_newTransferrable, 1) {
326 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0));
327 intptr_t len = length.Value();
328 LengthCheck(len, Uint8Array::kMaxElements);
329 void* bytes = OS::AlignedAllocate(len * sizeof(uint8_t),
330 EXTERNAL_ALIGNMENT);
331 return ExternalUint8Array::New(reinterpret_cast<uint8_t*>(bytes),
332 len,
333 bytes,
334 FinalizeExternalBytes);
335 }
336
337
308 DEFINE_NATIVE_ENTRY(Uint8Array_getIndexed, 2) { 338 DEFINE_NATIVE_ENTRY(Uint8Array_getIndexed, 2) {
309 GETTER(Uint8Array, Smi, uint8_t); 339 GETTER(Uint8Array, Smi, uint8_t);
310 } 340 }
311 341
312 342
313 DEFINE_NATIVE_ENTRY(Uint8Array_setIndexed, 3) { 343 DEFINE_NATIVE_ENTRY(Uint8Array_setIndexed, 3) {
314 SETTER(Uint8Array, Smi, Value, uint8_t); 344 SETTER(Uint8Array, Smi, Value, uint8_t);
315 } 345 }
316 346
317 347
318 // Int16Array 348 // Int16Array
319 349
320 DEFINE_NATIVE_ENTRY(Int16Array_new, 1) { 350 DEFINE_NATIVE_ENTRY(Int16Array_new, 1) {
321 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0)); 351 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0));
322 intptr_t len = length.Value(); 352 intptr_t len = length.Value();
323 LengthCheck(len, Int16Array::kMaxElements); 353 LengthCheck(len, Int16Array::kMaxElements);
324 return Int16Array::New(len); 354 return Int16Array::New(len);
325 } 355 }
326 356
327 357
358 DEFINE_NATIVE_ENTRY(Int16Array_newTransferrable, 1) {
359 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0));
360 intptr_t len = length.Value();
361 LengthCheck(len, Int16Array::kMaxElements);
362 void* bytes = OS::AlignedAllocate(len * sizeof(int16_t),
363 EXTERNAL_ALIGNMENT);
364 return ExternalInt16Array::New(reinterpret_cast<int16_t*>(bytes),
365 len,
366 bytes,
367 FinalizeExternalBytes);
368 }
369
370
328 DEFINE_NATIVE_ENTRY(Int16Array_getIndexed, 2) { 371 DEFINE_NATIVE_ENTRY(Int16Array_getIndexed, 2) {
329 GETTER(Int16Array, Smi, int16_t); 372 GETTER(Int16Array, Smi, int16_t);
330 } 373 }
331 374
332 375
333 DEFINE_NATIVE_ENTRY(Int16Array_setIndexed, 3) { 376 DEFINE_NATIVE_ENTRY(Int16Array_setIndexed, 3) {
334 SETTER(Int16Array, Smi, Value, int16_t); 377 SETTER(Int16Array, Smi, Value, int16_t);
335 } 378 }
336 379
337 380
338 // Uint16Array 381 // Uint16Array
339 382
340 DEFINE_NATIVE_ENTRY(Uint16Array_new, 1) { 383 DEFINE_NATIVE_ENTRY(Uint16Array_new, 1) {
341 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0)); 384 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0));
342 intptr_t len = length.Value(); 385 intptr_t len = length.Value();
343 LengthCheck(len, Uint16Array::kMaxElements); 386 LengthCheck(len, Uint16Array::kMaxElements);
344 return Uint16Array::New(len); 387 return Uint16Array::New(len);
345 } 388 }
346 389
347 390
391 DEFINE_NATIVE_ENTRY(Uint16Array_newTransferrable, 1) {
392 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0));
393 intptr_t len = length.Value();
394 LengthCheck(len, Uint16Array::kMaxElements);
395 void* bytes = OS::AlignedAllocate(len * sizeof(uint16_t),
396 EXTERNAL_ALIGNMENT);
397 return ExternalUint16Array::New(reinterpret_cast<uint16_t*>(bytes),
398 len,
399 bytes,
400 FinalizeExternalBytes);
401 }
402
403
348 DEFINE_NATIVE_ENTRY(Uint16Array_getIndexed, 2) { 404 DEFINE_NATIVE_ENTRY(Uint16Array_getIndexed, 2) {
349 GETTER(Uint16Array, Smi, uint16_t); 405 GETTER(Uint16Array, Smi, uint16_t);
350 } 406 }
351 407
352 408
353 DEFINE_NATIVE_ENTRY(Uint16Array_setIndexed, 3) { 409 DEFINE_NATIVE_ENTRY(Uint16Array_setIndexed, 3) {
354 SETTER(Uint16Array, Smi, Value, uint16_t); 410 SETTER(Uint16Array, Smi, Value, uint16_t);
355 } 411 }
356 412
357 413
358 // Int32Array 414 // Int32Array
359 415
360 DEFINE_NATIVE_ENTRY(Int32Array_new, 1) { 416 DEFINE_NATIVE_ENTRY(Int32Array_new, 1) {
361 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0)); 417 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0));
362 intptr_t len = length.Value(); 418 intptr_t len = length.Value();
363 LengthCheck(len, Int32Array::kMaxElements); 419 LengthCheck(len, Int32Array::kMaxElements);
364 return Int32Array::New(len); 420 return Int32Array::New(len);
365 } 421 }
366 422
367 423
424 DEFINE_NATIVE_ENTRY(Int32Array_newTransferrable, 1) {
425 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0));
426 intptr_t len = length.Value();
427 LengthCheck(len, Int32Array::kMaxElements);
428 void* bytes = OS::AlignedAllocate(len * sizeof(int32_t),
429 EXTERNAL_ALIGNMENT);
430 return ExternalInt32Array::New(reinterpret_cast<int32_t*>(bytes),
431 len,
432 bytes,
433 FinalizeExternalBytes);
434 }
435
436
368 DEFINE_NATIVE_ENTRY(Int32Array_getIndexed, 2) { 437 DEFINE_NATIVE_ENTRY(Int32Array_getIndexed, 2) {
369 GETTER(Int32Array, Integer, int32_t); 438 GETTER(Int32Array, Integer, int32_t);
370 } 439 }
371 440
372 441
373 DEFINE_NATIVE_ENTRY(Int32Array_setIndexed, 3) { 442 DEFINE_NATIVE_ENTRY(Int32Array_setIndexed, 3) {
374 SETTER(Int32Array, Integer, AsInt64Value, int32_t); 443 SETTER(Int32Array, Integer, AsInt64Value, int32_t);
375 } 444 }
376 445
377 446
378 // Uint32Array 447 // Uint32Array
379 448
380 DEFINE_NATIVE_ENTRY(Uint32Array_new, 1) { 449 DEFINE_NATIVE_ENTRY(Uint32Array_new, 1) {
381 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0)); 450 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0));
382 intptr_t len = length.Value(); 451 intptr_t len = length.Value();
383 LengthCheck(len, Uint32Array::kMaxElements); 452 LengthCheck(len, Uint32Array::kMaxElements);
384 return Uint32Array::New(len); 453 return Uint32Array::New(len);
385 } 454 }
386 455
387 456
457 DEFINE_NATIVE_ENTRY(Uint32Array_newTransferrable, 1) {
458 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0));
459 intptr_t len = length.Value();
460 LengthCheck(len, Uint32Array::kMaxElements);
461 void* bytes = OS::AlignedAllocate(len * sizeof(uint32_t),
462 EXTERNAL_ALIGNMENT);
463 return ExternalUint32Array::New(reinterpret_cast<uint32_t*>(bytes),
464 len,
465 bytes,
466 FinalizeExternalBytes);
467 }
468
469
388 DEFINE_NATIVE_ENTRY(Uint32Array_getIndexed, 2) { 470 DEFINE_NATIVE_ENTRY(Uint32Array_getIndexed, 2) {
389 GETTER(Uint32Array, Integer, uint32_t); 471 GETTER(Uint32Array, Integer, uint32_t);
390 } 472 }
391 473
392 474
393 DEFINE_NATIVE_ENTRY(Uint32Array_setIndexed, 3) { 475 DEFINE_NATIVE_ENTRY(Uint32Array_setIndexed, 3) {
394 SETTER(Uint32Array, Integer, AsInt64Value, uint32_t); 476 SETTER(Uint32Array, Integer, AsInt64Value, uint32_t);
395 } 477 }
396 478
397 479
398 // Int64Array 480 // Int64Array
399 481
400 DEFINE_NATIVE_ENTRY(Int64Array_new, 1) { 482 DEFINE_NATIVE_ENTRY(Int64Array_new, 1) {
401 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0)); 483 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0));
402 intptr_t len = length.Value(); 484 intptr_t len = length.Value();
403 LengthCheck(len, Int64Array::kMaxElements); 485 LengthCheck(len, Int64Array::kMaxElements);
404 return Int64Array::New(len); 486 return Int64Array::New(len);
405 } 487 }
406 488
407 489
490 DEFINE_NATIVE_ENTRY(Int64Array_newTransferrable, 1) {
491 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0));
492 intptr_t len = length.Value();
493 LengthCheck(len, Int64Array::kMaxElements);
494 void* bytes = OS::AlignedAllocate(len * sizeof(int64_t),
495 EXTERNAL_ALIGNMENT);
496 return ExternalInt64Array::New(reinterpret_cast<int64_t*>(bytes),
497 len,
498 bytes,
499 FinalizeExternalBytes);
500 }
501
502
408 DEFINE_NATIVE_ENTRY(Int64Array_getIndexed, 2) { 503 DEFINE_NATIVE_ENTRY(Int64Array_getIndexed, 2) {
409 GETTER(Int64Array, Integer, int64_t); 504 GETTER(Int64Array, Integer, int64_t);
410 } 505 }
411 506
412 507
413 DEFINE_NATIVE_ENTRY(Int64Array_setIndexed, 3) { 508 DEFINE_NATIVE_ENTRY(Int64Array_setIndexed, 3) {
414 SETTER(Int64Array, Integer, AsInt64Value, int64_t); 509 SETTER(Int64Array, Integer, AsInt64Value, int64_t);
415 } 510 }
416 511
417 512
418 // Uint64Array 513 // Uint64Array
419 514
420 DEFINE_NATIVE_ENTRY(Uint64Array_new, 1) { 515 DEFINE_NATIVE_ENTRY(Uint64Array_new, 1) {
421 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0)); 516 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0));
422 intptr_t len = length.Value(); 517 intptr_t len = length.Value();
423 LengthCheck(len, Uint64Array::kMaxElements); 518 LengthCheck(len, Uint64Array::kMaxElements);
424 return Uint64Array::New(len); 519 return Uint64Array::New(len);
425 } 520 }
426 521
427 522
523 DEFINE_NATIVE_ENTRY(Uint64Array_newTransferrable, 1) {
524 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0));
525 intptr_t len = length.Value();
526 LengthCheck(len, Uint64Array::kMaxElements);
527 void* bytes = OS::AlignedAllocate(len * sizeof(uint64_t),
528 EXTERNAL_ALIGNMENT);
529 return ExternalUint64Array::New(reinterpret_cast<uint64_t*>(bytes),
530 len,
531 bytes,
532 FinalizeExternalBytes);
533 }
534
535
428 DEFINE_NATIVE_ENTRY(Uint64Array_getIndexed, 2) { 536 DEFINE_NATIVE_ENTRY(Uint64Array_getIndexed, 2) {
429 GETTER_UINT64(Uint64Array); 537 GETTER_UINT64(Uint64Array);
430 } 538 }
431 539
432 540
433 DEFINE_NATIVE_ENTRY(Uint64Array_setIndexed, 3) { 541 DEFINE_NATIVE_ENTRY(Uint64Array_setIndexed, 3) {
434 SETTER_UINT64(Uint64Array); 542 SETTER_UINT64(Uint64Array);
435 } 543 }
436 544
437 545
438 // Float32Array 546 // Float32Array
439 547
440 DEFINE_NATIVE_ENTRY(Float32Array_new, 1) { 548 DEFINE_NATIVE_ENTRY(Float32Array_new, 1) {
441 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0)); 549 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0));
442 intptr_t len = length.Value(); 550 intptr_t len = length.Value();
443 LengthCheck(len, Float32Array::kMaxElements); 551 LengthCheck(len, Float32Array::kMaxElements);
444 return Float32Array::New(len); 552 return Float32Array::New(len);
445 } 553 }
446 554
447 555
556 DEFINE_NATIVE_ENTRY(Float32Array_newTransferrable, 1) {
557 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0));
558 intptr_t len = length.Value();
559 LengthCheck(len, Float32Array::kMaxElements);
560 float foo; // quiet cpplint.
cshapiro 2012/11/29 21:28:17 cpplint does not want you using sizeof(<typename>)
Cutch 2012/11/29 23:53:17 Done.
561 void* bytes = OS::AlignedAllocate(len * sizeof(foo),
562 EXTERNAL_ALIGNMENT);
563 return ExternalFloat32Array::New(reinterpret_cast<float*>(bytes),
564 len,
565 bytes,
566 FinalizeExternalBytes);
567 }
568
569
448 DEFINE_NATIVE_ENTRY(Float32Array_getIndexed, 2) { 570 DEFINE_NATIVE_ENTRY(Float32Array_getIndexed, 2) {
449 GETTER(Float32Array, Double, float); 571 GETTER(Float32Array, Double, float);
450 } 572 }
451 573
452 574
453 DEFINE_NATIVE_ENTRY(Float32Array_setIndexed, 3) { 575 DEFINE_NATIVE_ENTRY(Float32Array_setIndexed, 3) {
454 SETTER(Float32Array, Double, value, float); 576 SETTER(Float32Array, Double, value, float);
455 } 577 }
456 578
457 579
458 // Float64Array 580 // Float64Array
459 581
460 DEFINE_NATIVE_ENTRY(Float64Array_new, 1) { 582 DEFINE_NATIVE_ENTRY(Float64Array_new, 1) {
461 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0)); 583 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0));
462 intptr_t len = length.Value(); 584 intptr_t len = length.Value();
463 LengthCheck(len, Float64Array::kMaxElements); 585 LengthCheck(len, Float64Array::kMaxElements);
464 return Float64Array::New(len); 586 return Float64Array::New(len);
465 } 587 }
466 588
467 589
590 DEFINE_NATIVE_ENTRY(Float64Array_newTransferrable, 1) {
591 GET_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(0));
592 intptr_t len = length.Value();
593 LengthCheck(len, Float64Array::kMaxElements);
594 double foo; // quiet cpplint.
595 void* bytes = OS::AlignedAllocate(len * sizeof(foo),
596 EXTERNAL_ALIGNMENT);
597 return ExternalFloat64Array::New(reinterpret_cast<double*>(bytes),
598 len,
599 bytes,
600 FinalizeExternalBytes);
601 }
602
603
468 DEFINE_NATIVE_ENTRY(Float64Array_getIndexed, 2) { 604 DEFINE_NATIVE_ENTRY(Float64Array_getIndexed, 2) {
469 GETTER(Float64Array, Double, double); 605 GETTER(Float64Array, Double, double);
470 } 606 }
471 607
472 608
473 DEFINE_NATIVE_ENTRY(Float64Array_setIndexed, 3) { 609 DEFINE_NATIVE_ENTRY(Float64Array_setIndexed, 3) {
474 SETTER(Float64Array, Double, value, double); 610 SETTER(Float64Array, Double, value, double);
475 } 611 }
476 612
477 613
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 DEFINE_NATIVE_ENTRY(ExternalFloat64Array_getIndexed, 2) { 724 DEFINE_NATIVE_ENTRY(ExternalFloat64Array_getIndexed, 2) {
589 GETTER(ExternalFloat64Array, Double, double); 725 GETTER(ExternalFloat64Array, Double, double);
590 } 726 }
591 727
592 728
593 DEFINE_NATIVE_ENTRY(ExternalFloat64Array_setIndexed, 3) { 729 DEFINE_NATIVE_ENTRY(ExternalFloat64Array_setIndexed, 3) {
594 SETTER(ExternalFloat64Array, Double, value, double); 730 SETTER(ExternalFloat64Array, Double, value, double);
595 } 731 }
596 732
597 } // namespace dart 733 } // namespace dart
OLDNEW
« no previous file with comments | « no previous file | runtime/lib/byte_array.dart » ('j') | runtime/vm/os_android.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698