Index: src/factory.cc |
diff --git a/src/factory.cc b/src/factory.cc |
index c5a1fddb88b413c843f7ca051a421026b035537c..5a3b48feff43957d0a5f7cb214926fd6f15eb0c4 100644 |
--- a/src/factory.cc |
+++ b/src/factory.cc |
@@ -1097,73 +1097,70 @@ void Factory::EnsureCanContainElements(Handle<JSArray> array, |
Handle<JSArrayBuffer> Factory::NewJSArrayBuffer() { |
- JSFunction* array_buffer_fun = |
- isolate()->context()->native_context()->array_buffer_fun(); |
+ Handle<JSFunction> array_buffer_fun( |
+ isolate()->context()->native_context()->array_buffer_fun()); |
CALL_HEAP_FUNCTION( |
isolate(), |
- isolate()->heap()->AllocateJSObject(array_buffer_fun), |
+ isolate()->heap()->AllocateJSObject(*array_buffer_fun), |
JSArrayBuffer); |
} |
Handle<JSDataView> Factory::NewJSDataView() { |
- JSFunction* data_view_fun = |
- isolate()->context()->native_context()->data_view_fun(); |
+ Handle<JSFunction> data_view_fun( |
+ isolate()->context()->native_context()->data_view_fun()); |
CALL_HEAP_FUNCTION( |
isolate(), |
- isolate()->heap()->AllocateJSObject(data_view_fun), |
+ isolate()->heap()->AllocateJSObject(*data_view_fun), |
JSDataView); |
} |
-Handle<JSTypedArray> Factory::NewJSTypedArray(ExternalArrayType type) { |
- JSFunction* typed_array_fun; |
- Context* native_context = isolate()->context()->native_context(); |
+static JSFunction* GetTypedArrayFun(ExternalArrayType type, |
+ Context* native_context) { |
switch (type) { |
case kExternalUnsignedByteArray: |
- typed_array_fun = native_context->uint8_array_fun(); |
- break; |
+ return native_context->uint8_array_fun(); |
case kExternalByteArray: |
- typed_array_fun = native_context->int8_array_fun(); |
- break; |
+ return native_context->int8_array_fun(); |
case kExternalUnsignedShortArray: |
- typed_array_fun = native_context->uint16_array_fun(); |
- break; |
+ return native_context->uint16_array_fun(); |
case kExternalShortArray: |
- typed_array_fun = native_context->int16_array_fun(); |
- break; |
+ return native_context->int16_array_fun(); |
case kExternalUnsignedIntArray: |
- typed_array_fun = native_context->uint32_array_fun(); |
- break; |
+ return native_context->uint32_array_fun(); |
case kExternalIntArray: |
- typed_array_fun = native_context->int32_array_fun(); |
- break; |
+ return native_context->int32_array_fun(); |
case kExternalFloatArray: |
- typed_array_fun = native_context->float_array_fun(); |
- break; |
+ return native_context->float_array_fun(); |
case kExternalDoubleArray: |
- typed_array_fun = native_context->double_array_fun(); |
- break; |
+ return native_context->double_array_fun(); |
case kExternalPixelArray: |
- typed_array_fun = native_context->uint8c_array_fun(); |
- break; |
+ return native_context->uint8c_array_fun(); |
default: |
UNREACHABLE(); |
- return Handle<JSTypedArray>(); |
+ return NULL; |
} |
+} |
+ |
+ |
+Handle<JSTypedArray> Factory::NewJSTypedArray(ExternalArrayType type) { |
+ Context* native_context = isolate()->context()->native_context(); |
+ Handle<JSFunction> typed_array_fun_handle( |
+ GetTypedArrayFun(type, native_context)); |
Michael Starzinger
2013/08/06 18:05:46
nit: Instead of passing "Context*" into GetTypedAr
Dmitry Lomov (no reviews)
2013/08/06 19:15:09
Done, great idea - thanks!
|
CALL_HEAP_FUNCTION( |
isolate(), |
- isolate()->heap()->AllocateJSObject(typed_array_fun), |
+ isolate()->heap()->AllocateJSObject(*typed_array_fun_handle), |
JSTypedArray); |
} |