blob: c52bb530a2a3078b8a9af3a12ffd056ded51873f [file] [log] [blame]
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
* vim: set ts=8 sts=4 et sw=4 tw=99:
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef builtin_ParallelArray_h
#define builtin_ParallelArray_h
#include "jsapi.h"
#include "jscntxt.h"
#include "jsobj.h"
#include "jit/Ion.h"
#include "vm/ForkJoin.h"
#include "vm/ThreadPool.h"
namespace js {
class ParallelArrayObject : public JSObject
{
static Class protoClass;
static const JSFunctionSpec methods[];
static const uint32_t NumFixedSlots = 4;
static const uint32_t NumCtors = 4;
static FixedHeapPtr<PropertyName> ctorNames[NumCtors];
static bool initProps(JSContext *cx, HandleObject obj);
public:
static Class class_;
static JSBool construct(JSContext *cx, unsigned argc, Value *vp);
static JSBool constructHelper(JSContext *cx, MutableHandleFunction ctor, CallArgs &args);
// Creates a new ParallelArray instance with the correct number of slots
// and so forth.
//
// NOTE: This object will NOT have the correct type object! It is
// up to the caller to adjust the type object appropriately
// before releasing the object into the wild. You probably want
// to be calling construct() above, which will adjust the type
// object for you, since ParallelArray type objects must be setup
// in a rather particular way to interact well with the
// self-hosted code. See constructHelper() for details.
static JSObject *newInstance(JSContext *cx, NewObjectKind newKind = GenericObject);
// Get the constructor function for argc number of arguments.
static JSFunction *getConstructor(JSContext *cx, unsigned argc);
static JSObject *initClass(JSContext *cx, HandleObject obj);
static bool is(const Value &v);
};
} // namespace js
extern JSObject *
js_InitParallelArrayClass(JSContext *cx, js::HandleObject obj);
#endif /* builtin_ParallelArray_h */