/ runtime / JSInternalPromiseConstructor.cpp
JSInternalPromiseConstructor.cpp
 1  /*
 2   * Copyright (C) 2015 Apple Inc. All rights reserved.
 3   *
 4   * Redistribution and use in source and binary forms, with or without
 5   * modification, are permitted provided that the following conditions
 6   * are met:
 7   * 1. Redistributions of source code must retain the above copyright
 8   *    notice, this list of conditions and the following disclaimer.
 9   * 2. Redistributions in binary form must reproduce the above copyright
10   *    notice, this list of conditions and the following disclaimer in the
11   *    documentation and/or other materials provided with the distribution.
12   *
13   * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15   * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16   * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17   * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23   * THE POSSIBILITY OF SUCH DAMAGE.
24   */
25  
26  #include "config.h"
27  #include "JSInternalPromiseConstructor.h"
28  
29  #include "JSCBuiltins.h"
30  #include "JSInternalPromisePrototype.h"
31  #include "JSObjectInlines.h"
32  #include "StructureInlines.h"
33  
34  #include "JSInternalPromiseConstructor.lut.h"
35  
36  namespace JSC {
37  
38  STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(JSInternalPromiseConstructor);
39  
40  const ClassInfo JSInternalPromiseConstructor::s_info = { "Function", &Base::s_info, &internalPromiseConstructorTable, nullptr, CREATE_METHOD_TABLE(JSInternalPromiseConstructor) };
41  
42  /* Source for JSInternalPromiseConstructor.lut.h
43  @begin internalPromiseConstructorTable
44    internalAll  JSBuiltin DontEnum|Function 1
45  @end
46  */
47  
48  JSInternalPromiseConstructor* JSInternalPromiseConstructor::create(VM& vm, Structure* structure, JSInternalPromisePrototype* promisePrototype, GetterSetter* speciesSymbol)
49  {
50      JSGlobalObject* globalObject = structure->globalObject();
51      FunctionExecutable* executable = promiseConstructorInternalPromiseConstructorCodeGenerator(vm);
52      JSInternalPromiseConstructor* constructor = new (NotNull, allocateCell<JSInternalPromiseConstructor>(vm.heap)) JSInternalPromiseConstructor(vm, executable, globalObject, structure);
53      constructor->finishCreation(vm, promisePrototype, speciesSymbol);
54      return constructor;
55  }
56  
57  Structure* JSInternalPromiseConstructor::createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
58  {
59      return Structure::create(vm, globalObject, prototype, TypeInfo(JSFunctionType, StructureFlags), info());
60  }
61  
62  JSInternalPromiseConstructor::JSInternalPromiseConstructor(VM& vm, FunctionExecutable* executable, JSGlobalObject* globalObject, Structure* structure)
63      : Base(vm, executable, globalObject, structure)
64  {
65  }
66  
67  } // namespace JSC