예제 #1
0
JSValue JSArrayBufferView::slice(ExecState* exec)
{
    ArrayBufferView* array = reinterpret_cast<ArrayBufferView*>(impl());

    int start, end;
    switch (exec->argumentCount()) {
    case 0:
        start = 0;
        end = array->length();
        break;
    case 1:
        start = exec->argument(0).toInt32(exec);
        end = array->length();
        break;
    default:
        start = exec->argument(0).toInt32(exec);
        end = exec->argument(1).toInt32(exec);
    }
    return toJS(exec, globalObject(), array->slice(start, end));
}
v8::Handle<v8::Value> V8ArrayBufferView::sliceCallback(const v8::Arguments& args)
{
    INC_STATS("DOM.ArrayBufferView.slice");
    // Forms:
    // * slice(long start, long end);

    ArrayBufferView* imp = V8ArrayBufferView::toNative(args.Holder());
    int start, end;
    switch (args.Length()) {
    case 0:
        start = 0;
        end = imp->length();
        break;
    case 1:
        start = toInt32(args[0]);
        end = imp->length();
        break;
    default:
        start = toInt32(args[0]);
        end = toInt32(args[1]);
    }
    return toV8(imp->slice(start, end));
}