| OLD | NEW | 
|    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 "platform/assert.h" |    5 #include "platform/assert.h" | 
|    6  |    6  | 
|    7 #include "vm/assembler.h" |    7 #include "vm/assembler.h" | 
|    8 #include "vm/bootstrap_natives.h" |    8 #include "vm/bootstrap_natives.h" | 
|    9 #include "vm/exceptions.h" |    9 #include "vm/exceptions.h" | 
|   10 #include "vm/native_entry.h" |   10 #include "vm/native_entry.h" | 
| (...skipping 10 matching lines...) Expand all  Loading... | 
|   21                                 Integer::Handle(Integer::New(data.Length())), |   21                                 Integer::Handle(Integer::New(data.Length())), | 
|   22                                 0,  // This is the limit the user sees. |   22                                 0,  // This is the limit the user sees. | 
|   23                                 Array::kMaxElements); |   23                                 Array::kMaxElements); | 
|   24   } |   24   } | 
|   25   const GrowableObjectArray& new_array = |   25   const GrowableObjectArray& new_array = | 
|   26       GrowableObjectArray::Handle(GrowableObjectArray::New(data)); |   26       GrowableObjectArray::Handle(GrowableObjectArray::New(data)); | 
|   27   new_array.SetTypeArguments(type_arguments); |   27   new_array.SetTypeArguments(type_arguments); | 
|   28   return new_array.raw(); |   28   return new_array.raw(); | 
|   29 } |   29 } | 
|   30  |   30  | 
|   31  |  | 
|   32 DEFINE_NATIVE_ENTRY(GrowableList_getIndexed, 2) { |   31 DEFINE_NATIVE_ENTRY(GrowableList_getIndexed, 2) { | 
|   33   const GrowableObjectArray& array = |   32   const GrowableObjectArray& array = | 
|   34       GrowableObjectArray::CheckedHandle(arguments->NativeArgAt(0)); |   33       GrowableObjectArray::CheckedHandle(arguments->NativeArgAt(0)); | 
|   35   GET_NON_NULL_NATIVE_ARGUMENT(Smi, index, arguments->NativeArgAt(1)); |   34   GET_NON_NULL_NATIVE_ARGUMENT(Smi, index, arguments->NativeArgAt(1)); | 
|   36   if ((index.Value() < 0) || (index.Value() >= array.Length())) { |   35   if ((index.Value() < 0) || (index.Value() >= array.Length())) { | 
|   37     Exceptions::ThrowRangeError("index", index, 0, array.Length() - 1); |   36     Exceptions::ThrowRangeError("index", index, 0, array.Length() - 1); | 
|   38   } |   37   } | 
|   39   const Instance& obj = Instance::CheckedHandle(array.At(index.Value())); |   38   const Instance& obj = Instance::CheckedHandle(array.At(index.Value())); | 
|   40   return obj.raw(); |   39   return obj.raw(); | 
|   41 } |   40 } | 
|   42  |   41  | 
|   43  |  | 
|   44 DEFINE_NATIVE_ENTRY(GrowableList_setIndexed, 3) { |   42 DEFINE_NATIVE_ENTRY(GrowableList_setIndexed, 3) { | 
|   45   const GrowableObjectArray& array = |   43   const GrowableObjectArray& array = | 
|   46       GrowableObjectArray::CheckedHandle(arguments->NativeArgAt(0)); |   44       GrowableObjectArray::CheckedHandle(arguments->NativeArgAt(0)); | 
|   47   GET_NON_NULL_NATIVE_ARGUMENT(Smi, index, arguments->NativeArgAt(1)); |   45   GET_NON_NULL_NATIVE_ARGUMENT(Smi, index, arguments->NativeArgAt(1)); | 
|   48   if ((index.Value() < 0) || (index.Value() >= array.Length())) { |   46   if ((index.Value() < 0) || (index.Value() >= array.Length())) { | 
|   49     Exceptions::ThrowRangeError("index", index, 0, array.Length() - 1); |   47     Exceptions::ThrowRangeError("index", index, 0, array.Length() - 1); | 
|   50   } |   48   } | 
|   51   GET_NON_NULL_NATIVE_ARGUMENT(Instance, value, arguments->NativeArgAt(2)); |   49   GET_NON_NULL_NATIVE_ARGUMENT(Instance, value, arguments->NativeArgAt(2)); | 
|   52   array.SetAt(index.Value(), value); |   50   array.SetAt(index.Value(), value); | 
|   53   return Object::null(); |   51   return Object::null(); | 
|   54 } |   52 } | 
|   55  |   53  | 
|   56  |  | 
|   57 DEFINE_NATIVE_ENTRY(GrowableList_getLength, 1) { |   54 DEFINE_NATIVE_ENTRY(GrowableList_getLength, 1) { | 
|   58   const GrowableObjectArray& array = |   55   const GrowableObjectArray& array = | 
|   59       GrowableObjectArray::CheckedHandle(arguments->NativeArgAt(0)); |   56       GrowableObjectArray::CheckedHandle(arguments->NativeArgAt(0)); | 
|   60   return Smi::New(array.Length()); |   57   return Smi::New(array.Length()); | 
|   61 } |   58 } | 
|   62  |   59  | 
|   63  |  | 
|   64 DEFINE_NATIVE_ENTRY(GrowableList_getCapacity, 1) { |   60 DEFINE_NATIVE_ENTRY(GrowableList_getCapacity, 1) { | 
|   65   const GrowableObjectArray& array = |   61   const GrowableObjectArray& array = | 
|   66       GrowableObjectArray::CheckedHandle(arguments->NativeArgAt(0)); |   62       GrowableObjectArray::CheckedHandle(arguments->NativeArgAt(0)); | 
|   67   return Smi::New(array.Capacity()); |   63   return Smi::New(array.Capacity()); | 
|   68 } |   64 } | 
|   69  |   65  | 
|   70  |  | 
|   71 DEFINE_NATIVE_ENTRY(GrowableList_setLength, 2) { |   66 DEFINE_NATIVE_ENTRY(GrowableList_setLength, 2) { | 
|   72   const GrowableObjectArray& array = |   67   const GrowableObjectArray& array = | 
|   73       GrowableObjectArray::CheckedHandle(arguments->NativeArgAt(0)); |   68       GrowableObjectArray::CheckedHandle(arguments->NativeArgAt(0)); | 
|   74   GET_NON_NULL_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(1)); |   69   GET_NON_NULL_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(1)); | 
|   75   ASSERT((length.Value() >= 0) && (length.Value() <= array.Capacity())); |   70   ASSERT((length.Value() >= 0) && (length.Value() <= array.Capacity())); | 
|   76   array.SetLength(length.Value()); |   71   array.SetLength(length.Value()); | 
|   77   return Object::null(); |   72   return Object::null(); | 
|   78 } |   73 } | 
|   79  |   74  | 
|   80  |  | 
|   81 DEFINE_NATIVE_ENTRY(GrowableList_setData, 2) { |   75 DEFINE_NATIVE_ENTRY(GrowableList_setData, 2) { | 
|   82   const GrowableObjectArray& array = |   76   const GrowableObjectArray& array = | 
|   83       GrowableObjectArray::CheckedHandle(arguments->NativeArgAt(0)); |   77       GrowableObjectArray::CheckedHandle(arguments->NativeArgAt(0)); | 
|   84   GET_NON_NULL_NATIVE_ARGUMENT(Array, data, arguments->NativeArgAt(1)); |   78   GET_NON_NULL_NATIVE_ARGUMENT(Array, data, arguments->NativeArgAt(1)); | 
|   85   ASSERT(data.Length() >= 0); |   79   ASSERT(data.Length() >= 0); | 
|   86   array.SetData(data); |   80   array.SetData(data); | 
|   87   return Object::null(); |   81   return Object::null(); | 
|   88 } |   82 } | 
|   89  |   83  | 
|   90  |  | 
|   91 DEFINE_NATIVE_ENTRY(Internal_makeListFixedLength, 1) { |   84 DEFINE_NATIVE_ENTRY(Internal_makeListFixedLength, 1) { | 
|   92   GET_NON_NULL_NATIVE_ARGUMENT(GrowableObjectArray, array, |   85   GET_NON_NULL_NATIVE_ARGUMENT(GrowableObjectArray, array, | 
|   93                                arguments->NativeArgAt(0)); |   86                                arguments->NativeArgAt(0)); | 
|   94   return Array::MakeFixedLength(array, /* unique = */ true); |   87   return Array::MakeFixedLength(array, /* unique = */ true); | 
|   95 } |   88 } | 
|   96  |   89  | 
|   97  |  | 
|   98 DEFINE_NATIVE_ENTRY(Internal_makeFixedListUnmodifiable, 1) { |   90 DEFINE_NATIVE_ENTRY(Internal_makeFixedListUnmodifiable, 1) { | 
|   99   GET_NON_NULL_NATIVE_ARGUMENT(Array, array, arguments->NativeArgAt(0)); |   91   GET_NON_NULL_NATIVE_ARGUMENT(Array, array, arguments->NativeArgAt(0)); | 
|  100   array.MakeImmutable(); |   92   array.MakeImmutable(); | 
|  101   return array.raw(); |   93   return array.raw(); | 
|  102 } |   94 } | 
|  103  |   95  | 
|  104 }  // namespace dart |   96 }  // namespace dart | 
| OLD | NEW |