Index: src/objects-inl.h |
diff --git a/src/objects-inl.h b/src/objects-inl.h |
index 3939921bf7304378b13540fc4a1fda3f426216b3..72c8b1172fc2a7367d3985d39fd785e65eb09fc7 100644 |
--- a/src/objects-inl.h |
+++ b/src/objects-inl.h |
@@ -2175,6 +2175,11 @@ Object* FixedArray::get(int index) { |
} |
+Handle<Object> FixedArray::get(Handle<FixedArray> array, int index) { |
+ return handle(array->get(index), array->GetIsolate()); |
+} |
+ |
+ |
bool FixedArray::is_the_hole(int index) { |
return get(index) == GetHeap()->the_hole_value(); |
} |
@@ -2240,11 +2245,12 @@ MaybeObject* FixedDoubleArray::get(int index) { |
} |
-Handle<Object> FixedDoubleArray::get_as_handle(int index) { |
- if (is_the_hole(index)) { |
- return GetIsolate()->factory()->the_hole_value(); |
+Handle<Object> FixedDoubleArray::get(Handle<FixedDoubleArray> array, |
+ int index) { |
+ if (array->is_the_hole(index)) { |
+ return array->GetIsolate()->factory()->the_hole_value(); |
} else { |
- return GetIsolate()->factory()->NewNumber(get_scalar(index)); |
+ return array->GetIsolate()->factory()->NewNumber(array->get_scalar(index)); |
} |
} |
@@ -3575,11 +3581,18 @@ uint8_t ExternalUint8ClampedArray::get_scalar(int index) { |
} |
-MaybeObject* ExternalUint8ClampedArray::get(int index) { |
+Object* ExternalUint8ClampedArray::get(int index) { |
return Smi::FromInt(static_cast<int>(get_scalar(index))); |
} |
+Handle<Object> ExternalUint8ClampedArray::get( |
+ Handle<ExternalUint8ClampedArray> array, |
+ int index) { |
+ return handle(array->get(index), array->GetIsolate()); |
+} |
+ |
+ |
void ExternalUint8ClampedArray::set(int index, uint8_t value) { |
ASSERT((index >= 0) && (index < this->length())); |
uint8_t* ptr = external_uint8_clamped_pointer(); |
@@ -3606,11 +3619,17 @@ int8_t ExternalInt8Array::get_scalar(int index) { |
} |
-MaybeObject* ExternalInt8Array::get(int index) { |
+Object* ExternalInt8Array::get(int index) { |
return Smi::FromInt(static_cast<int>(get_scalar(index))); |
} |
+Handle<Object> ExternalInt8Array::get(Handle<ExternalInt8Array> array, |
+ int index) { |
+ return handle(array->get(index), array->GetIsolate()); |
+} |
+ |
+ |
void ExternalInt8Array::set(int index, int8_t value) { |
ASSERT((index >= 0) && (index < this->length())); |
int8_t* ptr = static_cast<int8_t*>(external_pointer()); |
@@ -3625,11 +3644,17 @@ uint8_t ExternalUint8Array::get_scalar(int index) { |
} |
-MaybeObject* ExternalUint8Array::get(int index) { |
+Object* ExternalUint8Array::get(int index) { |
return Smi::FromInt(static_cast<int>(get_scalar(index))); |
} |
+Handle<Object> ExternalUint8Array::get(Handle<ExternalUint8Array> array, |
+ int index) { |
+ return handle(array->get(index), array->GetIsolate()); |
+} |
+ |
+ |
void ExternalUint8Array::set(int index, uint8_t value) { |
ASSERT((index >= 0) && (index < this->length())); |
uint8_t* ptr = static_cast<uint8_t*>(external_pointer()); |
@@ -3644,11 +3669,17 @@ int16_t ExternalInt16Array::get_scalar(int index) { |
} |
-MaybeObject* ExternalInt16Array::get(int index) { |
+Object* ExternalInt16Array::get(int index) { |
return Smi::FromInt(static_cast<int>(get_scalar(index))); |
} |
+Handle<Object> ExternalInt16Array::get(Handle<ExternalInt16Array> array, |
+ int index) { |
+ return handle(array->get(index), array->GetIsolate()); |
+} |
+ |
+ |
void ExternalInt16Array::set(int index, int16_t value) { |
ASSERT((index >= 0) && (index < this->length())); |
int16_t* ptr = static_cast<int16_t*>(external_pointer()); |
@@ -3663,11 +3694,17 @@ uint16_t ExternalUint16Array::get_scalar(int index) { |
} |
-MaybeObject* ExternalUint16Array::get(int index) { |
+Object* ExternalUint16Array::get(int index) { |
return Smi::FromInt(static_cast<int>(get_scalar(index))); |
} |
+Handle<Object> ExternalUint16Array::get(Handle<ExternalUint16Array> array, |
+ int index) { |
+ return handle(array->get(index), array->GetIsolate()); |
+} |
+ |
+ |
void ExternalUint16Array::set(int index, uint16_t value) { |
ASSERT((index >= 0) && (index < this->length())); |
uint16_t* ptr = static_cast<uint16_t*>(external_pointer()); |
@@ -3683,7 +3720,14 @@ int32_t ExternalInt32Array::get_scalar(int index) { |
MaybeObject* ExternalInt32Array::get(int index) { |
- return GetHeap()->NumberFromInt32(get_scalar(index)); |
+ return GetHeap()->NumberFromInt32(get_scalar(index)); |
+} |
+ |
+ |
+Handle<Object> ExternalInt32Array::get(Handle<ExternalInt32Array> array, |
+ int index) { |
+ return array->GetIsolate()->factory()-> |
+ NewNumberFromInt(array->get_scalar(index)); |
} |
@@ -3702,7 +3746,14 @@ uint32_t ExternalUint32Array::get_scalar(int index) { |
MaybeObject* ExternalUint32Array::get(int index) { |
- return GetHeap()->NumberFromUint32(get_scalar(index)); |
+ return GetHeap()->NumberFromUint32(get_scalar(index)); |
+} |
+ |
+ |
+Handle<Object> ExternalUint32Array::get(Handle<ExternalUint32Array> array, |
+ int index) { |
+ return array->GetIsolate()->factory()-> |
+ NewNumberFromUint(array->get_scalar(index)); |
} |
@@ -3721,7 +3772,13 @@ float ExternalFloat32Array::get_scalar(int index) { |
MaybeObject* ExternalFloat32Array::get(int index) { |
- return GetHeap()->NumberFromDouble(get_scalar(index)); |
+ return GetHeap()->NumberFromDouble(get_scalar(index)); |
+} |
+ |
+ |
+Handle<Object> ExternalFloat32Array::get(Handle<ExternalFloat32Array> array, |
+ int index) { |
+ return array->GetIsolate()->factory()->NewNumber(array->get_scalar(index)); |
} |
@@ -3744,6 +3801,12 @@ MaybeObject* ExternalFloat64Array::get(int index) { |
} |
+Handle<Object> ExternalFloat64Array::get(Handle<ExternalFloat64Array> array, |
+ int index) { |
+ return array->GetIsolate()->factory()->NewNumber(array->get_scalar(index)); |
+} |
+ |
+ |
void ExternalFloat64Array::set(int index, double value) { |
ASSERT((index >= 0) && (index < this->length())); |
double* ptr = static_cast<double*>(external_pointer()); |
@@ -3890,6 +3953,13 @@ MaybeObject* FixedTypedArray<Traits>::get(int index) { |
} |
template <class Traits> |
+Handle<Object> FixedTypedArray<Traits>::get( |
+ Handle<FixedTypedArray<Traits> > array, |
+ int index) { |
+ return Traits::ToHandle(array->GetIsolate(), array->get_scalar(index)); |
+} |
+ |
+template <class Traits> |
MaybeObject* FixedTypedArray<Traits>::SetValue(uint32_t index, Object* value) { |
ElementType cast_value = Traits::defaultValue(); |
if (index < static_cast<uint32_t>(length())) { |
@@ -3925,46 +3995,92 @@ MaybeObject* Uint8ArrayTraits::ToObject(Heap*, uint8_t scalar) { |
} |
+Handle<Object> Uint8ArrayTraits::ToHandle(Isolate* isolate, uint8_t scalar) { |
+ return handle(Smi::FromInt(scalar), isolate); |
+} |
+ |
+ |
MaybeObject* Uint8ClampedArrayTraits::ToObject(Heap*, uint8_t scalar) { |
return Smi::FromInt(scalar); |
} |
+Handle<Object> Uint8ClampedArrayTraits::ToHandle(Isolate* isolate, |
+ uint8_t scalar) { |
+ return handle(Smi::FromInt(scalar), isolate); |
+} |
+ |
+ |
MaybeObject* Int8ArrayTraits::ToObject(Heap*, int8_t scalar) { |
return Smi::FromInt(scalar); |
} |
+Handle<Object> Int8ArrayTraits::ToHandle(Isolate* isolate, int8_t scalar) { |
+ return handle(Smi::FromInt(scalar), isolate); |
+} |
+ |
+ |
MaybeObject* Uint16ArrayTraits::ToObject(Heap*, uint16_t scalar) { |
return Smi::FromInt(scalar); |
} |
+Handle<Object> Uint16ArrayTraits::ToHandle(Isolate* isolate, uint16_t scalar) { |
+ return handle(Smi::FromInt(scalar), isolate); |
+} |
+ |
+ |
MaybeObject* Int16ArrayTraits::ToObject(Heap*, int16_t scalar) { |
return Smi::FromInt(scalar); |
} |
+Handle<Object> Int16ArrayTraits::ToHandle(Isolate* isolate, int16_t scalar) { |
+ return handle(Smi::FromInt(scalar), isolate); |
+} |
+ |
+ |
MaybeObject* Uint32ArrayTraits::ToObject(Heap* heap, uint32_t scalar) { |
return heap->NumberFromUint32(scalar); |
} |
+Handle<Object> Uint32ArrayTraits::ToHandle(Isolate* isolate, uint32_t scalar) { |
+ return isolate->factory()->NewNumberFromUint(scalar); |
+} |
+ |
+ |
MaybeObject* Int32ArrayTraits::ToObject(Heap* heap, int32_t scalar) { |
return heap->NumberFromInt32(scalar); |
} |
+Handle<Object> Int32ArrayTraits::ToHandle(Isolate* isolate, int32_t scalar) { |
+ return isolate->factory()->NewNumberFromInt(scalar); |
+} |
+ |
+ |
MaybeObject* Float32ArrayTraits::ToObject(Heap* heap, float scalar) { |
return heap->NumberFromDouble(scalar); |
} |
+Handle<Object> Float32ArrayTraits::ToHandle(Isolate* isolate, float scalar) { |
+ return isolate->factory()->NewNumber(scalar); |
+} |
+ |
+ |
MaybeObject* Float64ArrayTraits::ToObject(Heap* heap, double scalar) { |
return heap->NumberFromDouble(scalar); |
} |
+Handle<Object> Float64ArrayTraits::ToHandle(Isolate* isolate, double scalar) { |
+ return isolate->factory()->NewNumber(scalar); |
+} |
+ |
+ |
int Map::visitor_id() { |
return READ_BYTE_FIELD(this, kVisitorIdOffset); |
} |