Home | History | Annotate | Download | only in JS
      1 /*
      2     This file is part of the WebKit open source project.
      3     This file has been generated by generate-bindings.pl. DO NOT MODIFY!
      4 
      5     This library is free software; you can redistribute it and/or
      6     modify it under the terms of the GNU Library General Public
      7     License as published by the Free Software Foundation; either
      8     version 2 of the License, or (at your option) any later version.
      9 
     10     This library is distributed in the hope that it will be useful,
     11     but WITHOUT ANY WARRANTY; without even the implied warranty of
     12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13     Library General Public License for more details.
     14 
     15     You should have received a copy of the GNU Library General Public License
     16     along with this library; see the file COPYING.LIB.  If not, write to
     17     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
     18     Boston, MA 02110-1301, USA.
     19 */
     20 
     21 #include "config.h"
     22 #include "JSTestObj.h"
     23 
     24 #include "ExceptionCode.h"
     25 #include "HTMLNames.h"
     26 #include "IDBBindingUtilities.h"
     27 #include "IDBKey.h"
     28 #include "JSDOMBinding.h"
     29 #include "JSEventListener.h"
     30 #include "JSOptionsObject.h"
     31 #include "JSTestCallback.h"
     32 #include "JSTestObj.h"
     33 #include "JSlog.h"
     34 #include "KURL.h"
     35 #include "ScriptArguments.h"
     36 #include "ScriptCallStack.h"
     37 #include "ScriptCallStackFactory.h"
     38 #include "SerializedScriptValue.h"
     39 #include "TestObj.h"
     40 #include <runtime/Error.h>
     41 #include <runtime/JSNumberCell.h>
     42 #include <runtime/JSString.h>
     43 #include <wtf/GetPtr.h>
     44 
     45 using namespace JSC;
     46 
     47 namespace WebCore {
     48 
     49 ASSERT_CLASS_FITS_IN_CELL(JSTestObj);
     50 
     51 /* Hash table */
     52 #if ENABLE(JIT)
     53 #define THUNK_GENERATOR(generator) , generator
     54 #else
     55 #define THUNK_GENERATOR(generator)
     56 #endif
     57 
     58 static const HashTableValue JSTestObjTableValues[37] =
     59 {
     60     { "readOnlyIntAttr", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReadOnlyIntAttr), (intptr_t)0 THUNK_GENERATOR(0) },
     61     { "readOnlyStringAttr", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReadOnlyStringAttr), (intptr_t)0 THUNK_GENERATOR(0) },
     62     { "readOnlyTestObjAttr", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReadOnlyTestObjAttr), (intptr_t)0 THUNK_GENERATOR(0) },
     63     { "shortAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjShortAttr), (intptr_t)setJSTestObjShortAttr THUNK_GENERATOR(0) },
     64     { "unsignedShortAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjUnsignedShortAttr), (intptr_t)setJSTestObjUnsignedShortAttr THUNK_GENERATOR(0) },
     65     { "intAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjIntAttr), (intptr_t)setJSTestObjIntAttr THUNK_GENERATOR(0) },
     66     { "longLongAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjLongLongAttr), (intptr_t)setJSTestObjLongLongAttr THUNK_GENERATOR(0) },
     67     { "unsignedLongLongAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjUnsignedLongLongAttr), (intptr_t)setJSTestObjUnsignedLongLongAttr THUNK_GENERATOR(0) },
     68     { "stringAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringAttr), (intptr_t)setJSTestObjStringAttr THUNK_GENERATOR(0) },
     69     { "testObjAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjTestObjAttr), (intptr_t)setJSTestObjTestObjAttr THUNK_GENERATOR(0) },
     70     { "XMLObjAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjXMLObjAttr), (intptr_t)setJSTestObjXMLObjAttr THUNK_GENERATOR(0) },
     71     { "create", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCreate), (intptr_t)setJSTestObjCreate THUNK_GENERATOR(0) },
     72     { "reflectedStringAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedStringAttr), (intptr_t)setJSTestObjReflectedStringAttr THUNK_GENERATOR(0) },
     73     { "reflectedIntegralAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedIntegralAttr), (intptr_t)setJSTestObjReflectedIntegralAttr THUNK_GENERATOR(0) },
     74     { "reflectedUnsignedIntegralAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedUnsignedIntegralAttr), (intptr_t)setJSTestObjReflectedUnsignedIntegralAttr THUNK_GENERATOR(0) },
     75     { "reflectedBooleanAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedBooleanAttr), (intptr_t)setJSTestObjReflectedBooleanAttr THUNK_GENERATOR(0) },
     76     { "reflectedURLAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedURLAttr), (intptr_t)setJSTestObjReflectedURLAttr THUNK_GENERATOR(0) },
     77     { "reflectedNonEmptyURLAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedNonEmptyURLAttr), (intptr_t)setJSTestObjReflectedNonEmptyURLAttr THUNK_GENERATOR(0) },
     78     { "reflectedStringAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedStringAttr), (intptr_t)setJSTestObjReflectedStringAttr THUNK_GENERATOR(0) },
     79     { "reflectedCustomIntegralAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomIntegralAttr), (intptr_t)setJSTestObjReflectedCustomIntegralAttr THUNK_GENERATOR(0) },
     80     { "reflectedCustomBooleanAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomBooleanAttr), (intptr_t)setJSTestObjReflectedCustomBooleanAttr THUNK_GENERATOR(0) },
     81     { "reflectedCustomURLAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomURLAttr), (intptr_t)setJSTestObjReflectedCustomURLAttr THUNK_GENERATOR(0) },
     82     { "reflectedCustomNonEmptyURLAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomNonEmptyURLAttr), (intptr_t)setJSTestObjReflectedCustomNonEmptyURLAttr THUNK_GENERATOR(0) },
     83     { "attrWithGetterException", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttrWithGetterException), (intptr_t)setJSTestObjAttrWithGetterException THUNK_GENERATOR(0) },
     84     { "attrWithSetterException", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttrWithSetterException), (intptr_t)setJSTestObjAttrWithSetterException THUNK_GENERATOR(0) },
     85     { "stringAttrWithGetterException", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringAttrWithGetterException), (intptr_t)setJSTestObjStringAttrWithGetterException THUNK_GENERATOR(0) },
     86     { "stringAttrWithSetterException", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringAttrWithSetterException), (intptr_t)setJSTestObjStringAttrWithSetterException THUNK_GENERATOR(0) },
     87     { "customAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCustomAttr), (intptr_t)setJSTestObjCustomAttr THUNK_GENERATOR(0) },
     88     { "scriptStringAttr", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjScriptStringAttr), (intptr_t)0 THUNK_GENERATOR(0) },
     89 #if ENABLE(Condition1)
     90     { "conditionalAttr1", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr1), (intptr_t)setJSTestObjConditionalAttr1 THUNK_GENERATOR(0) },
     91 #endif
     92 #if ENABLE(Condition1) && ENABLE(Condition2)
     93     { "conditionalAttr2", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr2), (intptr_t)setJSTestObjConditionalAttr2 THUNK_GENERATOR(0) },
     94 #endif
     95 #if ENABLE(Condition1) || ENABLE(Condition2)
     96     { "conditionalAttr3", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr3), (intptr_t)setJSTestObjConditionalAttr3 THUNK_GENERATOR(0) },
     97 #endif
     98     { "description", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjDescription), (intptr_t)0 THUNK_GENERATOR(0) },
     99     { "id", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjId), (intptr_t)setJSTestObjId THUNK_GENERATOR(0) },
    100     { "hash", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjHash), (intptr_t)0 THUNK_GENERATOR(0) },
    101     { "constructor", DontEnum | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConstructor), (intptr_t)0 THUNK_GENERATOR(0) },
    102     { 0, 0, 0, 0 THUNK_GENERATOR(0) }
    103 };
    104 
    105 #undef THUNK_GENERATOR
    106 static JSC_CONST_HASHTABLE HashTable JSTestObjTable = { 133, 127, JSTestObjTableValues, 0 };
    107 /* Hash table for constructor */
    108 #if ENABLE(JIT)
    109 #define THUNK_GENERATOR(generator) , generator
    110 #else
    111 #define THUNK_GENERATOR(generator)
    112 #endif
    113 
    114 static const HashTableValue JSTestObjConstructorTableValues[12] =
    115 {
    116     { "CONST_VALUE_0", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_0), (intptr_t)0 THUNK_GENERATOR(0) },
    117     { "CONST_VALUE_1", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_1), (intptr_t)0 THUNK_GENERATOR(0) },
    118     { "CONST_VALUE_2", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_2), (intptr_t)0 THUNK_GENERATOR(0) },
    119     { "CONST_VALUE_4", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_4), (intptr_t)0 THUNK_GENERATOR(0) },
    120     { "CONST_VALUE_8", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_8), (intptr_t)0 THUNK_GENERATOR(0) },
    121     { "CONST_VALUE_9", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_9), (intptr_t)0 THUNK_GENERATOR(0) },
    122     { "CONST_VALUE_10", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_10), (intptr_t)0 THUNK_GENERATOR(0) },
    123     { "CONST_VALUE_11", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_11), (intptr_t)0 THUNK_GENERATOR(0) },
    124     { "CONST_VALUE_12", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_12), (intptr_t)0 THUNK_GENERATOR(0) },
    125     { "CONST_VALUE_13", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_13), (intptr_t)0 THUNK_GENERATOR(0) },
    126     { "CONST_VALUE_14", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_14), (intptr_t)0 THUNK_GENERATOR(0) },
    127     { 0, 0, 0, 0 THUNK_GENERATOR(0) }
    128 };
    129 
    130 #undef THUNK_GENERATOR
    131 static JSC_CONST_HASHTABLE HashTable JSTestObjConstructorTable = { 33, 31, JSTestObjConstructorTableValues, 0 };
    132 
    133 COMPILE_ASSERT(0 == TestObj::CONST_VALUE_0, TestObjEnumCONST_VALUE_0IsWrongUseDontCheckEnums);
    134 COMPILE_ASSERT(1 == TestObj::CONST_VALUE_1, TestObjEnumCONST_VALUE_1IsWrongUseDontCheckEnums);
    135 COMPILE_ASSERT(2 == TestObj::CONST_VALUE_2, TestObjEnumCONST_VALUE_2IsWrongUseDontCheckEnums);
    136 COMPILE_ASSERT(4 == TestObj::CONST_VALUE_4, TestObjEnumCONST_VALUE_4IsWrongUseDontCheckEnums);
    137 COMPILE_ASSERT(8 == TestObj::CONST_VALUE_8, TestObjEnumCONST_VALUE_8IsWrongUseDontCheckEnums);
    138 COMPILE_ASSERT(-1 == TestObj::CONST_VALUE_9, TestObjEnumCONST_VALUE_9IsWrongUseDontCheckEnums);
    139 COMPILE_ASSERT("my constant string" == TestObj::CONST_VALUE_10, TestObjEnumCONST_VALUE_10IsWrongUseDontCheckEnums);
    140 COMPILE_ASSERT(0xffffffff == TestObj::CONST_VALUE_11, TestObjEnumCONST_VALUE_11IsWrongUseDontCheckEnums);
    141 COMPILE_ASSERT(0x01 == TestObj::CONST_VALUE_12, TestObjEnumCONST_VALUE_12IsWrongUseDontCheckEnums);
    142 COMPILE_ASSERT(0X20 == TestObj::CONST_VALUE_13, TestObjEnumCONST_VALUE_13IsWrongUseDontCheckEnums);
    143 COMPILE_ASSERT(0x1abc == TestObj::CONST_VALUE_14, TestObjEnumCONST_VALUE_14IsWrongUseDontCheckEnums);
    144 
    145 class JSTestObjConstructor : public DOMConstructorObject {
    146 public:
    147     JSTestObjConstructor(JSC::ExecState*, JSDOMGlobalObject*);
    148 
    149     virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier&, JSC::PropertySlot&);
    150     virtual bool getOwnPropertyDescriptor(JSC::ExecState*, const JSC::Identifier&, JSC::PropertyDescriptor&);
    151     static const JSC::ClassInfo s_info;
    152     static PassRefPtr<JSC::Structure> createStructure(JSC::JSGlobalData& globalData, JSC::JSValue prototype)
    153     {
    154         return JSC::Structure::create(globalData, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    155     }
    156 protected:
    157     static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | JSC::ImplementsHasInstance | DOMConstructorObject::StructureFlags;
    158 };
    159 
    160 const ClassInfo JSTestObjConstructor::s_info = { "TestObjConstructor", &DOMConstructorObject::s_info, &JSTestObjConstructorTable, 0 };
    161 
    162 JSTestObjConstructor::JSTestObjConstructor(ExecState* exec, JSDOMGlobalObject* globalObject)
    163     : DOMConstructorObject(JSTestObjConstructor::createStructure(globalObject->globalData(), globalObject->objectPrototype()), globalObject)
    164 {
    165     ASSERT(inherits(&s_info));
    166     putDirect(exec->globalData(), exec->propertyNames().prototype, JSTestObjPrototype::self(exec, globalObject), DontDelete | ReadOnly);
    167 }
    168 
    169 bool JSTestObjConstructor::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
    170 {
    171     return getStaticValueSlot<JSTestObjConstructor, DOMObject>(exec, &JSTestObjConstructorTable, this, propertyName, slot);
    172 }
    173 
    174 bool JSTestObjConstructor::getOwnPropertyDescriptor(ExecState* exec, const Identifier& propertyName, PropertyDescriptor& descriptor)
    175 {
    176     return getStaticValueDescriptor<JSTestObjConstructor, DOMObject>(exec, &JSTestObjConstructorTable, this, propertyName, descriptor);
    177 }
    178 
    179 /* Hash table for prototype */
    180 #if ENABLE(JIT)
    181 #define THUNK_GENERATOR(generator) , generator
    182 #else
    183 #define THUNK_GENERATOR(generator)
    184 #endif
    185 
    186 static const HashTableValue JSTestObjPrototypeTableValues[48] =
    187 {
    188     { "CONST_VALUE_0", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_0), (intptr_t)0 THUNK_GENERATOR(0) },
    189     { "CONST_VALUE_1", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_1), (intptr_t)0 THUNK_GENERATOR(0) },
    190     { "CONST_VALUE_2", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_2), (intptr_t)0 THUNK_GENERATOR(0) },
    191     { "CONST_VALUE_4", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_4), (intptr_t)0 THUNK_GENERATOR(0) },
    192     { "CONST_VALUE_8", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_8), (intptr_t)0 THUNK_GENERATOR(0) },
    193     { "CONST_VALUE_9", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_9), (intptr_t)0 THUNK_GENERATOR(0) },
    194     { "CONST_VALUE_10", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_10), (intptr_t)0 THUNK_GENERATOR(0) },
    195     { "CONST_VALUE_11", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_11), (intptr_t)0 THUNK_GENERATOR(0) },
    196     { "CONST_VALUE_12", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_12), (intptr_t)0 THUNK_GENERATOR(0) },
    197     { "CONST_VALUE_13", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_13), (intptr_t)0 THUNK_GENERATOR(0) },
    198     { "CONST_VALUE_14", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_14), (intptr_t)0 THUNK_GENERATOR(0) },
    199     { "voidMethod", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionVoidMethod), (intptr_t)0 THUNK_GENERATOR(0) },
    200     { "voidMethodWithArgs", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionVoidMethodWithArgs), (intptr_t)3 THUNK_GENERATOR(0) },
    201     { "intMethod", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionIntMethod), (intptr_t)0 THUNK_GENERATOR(0) },
    202     { "intMethodWithArgs", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionIntMethodWithArgs), (intptr_t)3 THUNK_GENERATOR(0) },
    203     { "objMethod", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionObjMethod), (intptr_t)0 THUNK_GENERATOR(0) },
    204     { "objMethodWithArgs", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionObjMethodWithArgs), (intptr_t)3 THUNK_GENERATOR(0) },
    205     { "methodThatRequiresAllArgs", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodThatRequiresAllArgs), (intptr_t)2 THUNK_GENERATOR(0) },
    206     { "methodThatRequiresAllArgsAndThrows", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows), (intptr_t)2 THUNK_GENERATOR(0) },
    207     { "serializedValue", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionSerializedValue), (intptr_t)1 THUNK_GENERATOR(0) },
    208     { "idbKey", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionIdbKey), (intptr_t)1 THUNK_GENERATOR(0) },
    209     { "optionsObject", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionOptionsObject), (intptr_t)2 THUNK_GENERATOR(0) },
    210     { "methodWithException", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithException), (intptr_t)0 THUNK_GENERATOR(0) },
    211     { "customMethod", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionCustomMethod), (intptr_t)0 THUNK_GENERATOR(0) },
    212     { "customMethodWithArgs", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionCustomMethodWithArgs), (intptr_t)3 THUNK_GENERATOR(0) },
    213     { "customArgsAndException", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionCustomArgsAndException), (intptr_t)1 THUNK_GENERATOR(0) },
    214     { "addEventListener", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionAddEventListener), (intptr_t)3 THUNK_GENERATOR(0) },
    215     { "removeEventListener", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionRemoveEventListener), (intptr_t)3 THUNK_GENERATOR(0) },
    216     { "withDynamicFrame", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithDynamicFrame), (intptr_t)0 THUNK_GENERATOR(0) },
    217     { "withDynamicFrameAndArg", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithDynamicFrameAndArg), (intptr_t)1 THUNK_GENERATOR(0) },
    218     { "withDynamicFrameAndOptionalArg", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithDynamicFrameAndOptionalArg), (intptr_t)2 THUNK_GENERATOR(0) },
    219     { "withDynamicFrameAndUserGesture", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithDynamicFrameAndUserGesture), (intptr_t)1 THUNK_GENERATOR(0) },
    220     { "withDynamicFrameAndUserGestureASAD", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithDynamicFrameAndUserGestureASAD), (intptr_t)2 THUNK_GENERATOR(0) },
    221     { "withScriptStateVoid", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptStateVoid), (intptr_t)0 THUNK_GENERATOR(0) },
    222     { "withScriptStateObj", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptStateObj), (intptr_t)0 THUNK_GENERATOR(0) },
    223     { "withScriptStateVoidException", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptStateVoidException), (intptr_t)0 THUNK_GENERATOR(0) },
    224     { "withScriptStateObjException", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptStateObjException), (intptr_t)0 THUNK_GENERATOR(0) },
    225     { "withScriptExecutionContext", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptExecutionContext), (intptr_t)0 THUNK_GENERATOR(0) },
    226     { "methodWithOptionalArg", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithOptionalArg), (intptr_t)1 THUNK_GENERATOR(0) },
    227     { "methodWithNonOptionalArgAndOptionalArg", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArg), (intptr_t)2 THUNK_GENERATOR(0) },
    228     { "methodWithNonOptionalArgAndTwoOptionalArgs", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgs), (intptr_t)3 THUNK_GENERATOR(0) },
    229     { "methodWithCallbackArg", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithCallbackArg), (intptr_t)1 THUNK_GENERATOR(0) },
    230     { "methodWithNonCallbackArgAndCallbackArg", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg), (intptr_t)2 THUNK_GENERATOR(0) },
    231     { "methodWithCallbackAndOptionalArg", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArg), (intptr_t)1 THUNK_GENERATOR(0) },
    232     { "overloadedMethod", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionOverloadedMethod), (intptr_t)2 THUNK_GENERATOR(0) },
    233     { "classMethod", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionClassMethod), (intptr_t)0 THUNK_GENERATOR(0) },
    234     { "classMethodWithOptional", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionClassMethodWithOptional), (intptr_t)1 THUNK_GENERATOR(0) },
    235     { 0, 0, 0, 0 THUNK_GENERATOR(0) }
    236 };
    237 
    238 #undef THUNK_GENERATOR
    239 static JSC_CONST_HASHTABLE HashTable JSTestObjPrototypeTable = { 136, 127, JSTestObjPrototypeTableValues, 0 };
    240 const ClassInfo JSTestObjPrototype::s_info = { "TestObjPrototype", &JSC::JSObjectWithGlobalObject::s_info, &JSTestObjPrototypeTable, 0 };
    241 
    242 JSObject* JSTestObjPrototype::self(ExecState* exec, JSGlobalObject* globalObject)
    243 {
    244     return getDOMPrototype<JSTestObj>(exec, globalObject);
    245 }
    246 
    247 bool JSTestObjPrototype::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
    248 {
    249     return getStaticPropertySlot<JSTestObjPrototype, JSObject>(exec, &JSTestObjPrototypeTable, this, propertyName, slot);
    250 }
    251 
    252 bool JSTestObjPrototype::getOwnPropertyDescriptor(ExecState* exec, const Identifier& propertyName, PropertyDescriptor& descriptor)
    253 {
    254     return getStaticPropertyDescriptor<JSTestObjPrototype, JSObject>(exec, &JSTestObjPrototypeTable, this, propertyName, descriptor);
    255 }
    256 
    257 const ClassInfo JSTestObj::s_info = { "TestObj", &DOMObjectWithGlobalPointer::s_info, &JSTestObjTable, 0 };
    258 
    259 JSTestObj::JSTestObj(NonNullPassRefPtr<Structure> structure, JSDOMGlobalObject* globalObject, PassRefPtr<TestObj> impl)
    260     : DOMObjectWithGlobalPointer(structure, globalObject)
    261     , m_impl(impl)
    262 {
    263     ASSERT(inherits(&s_info));
    264 }
    265 
    266 JSObject* JSTestObj::createPrototype(ExecState* exec, JSGlobalObject* globalObject)
    267 {
    268     return new (exec) JSTestObjPrototype(globalObject, JSTestObjPrototype::createStructure(globalObject->globalData(), globalObject->objectPrototype()));
    269 }
    270 
    271 bool JSTestObj::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
    272 {
    273     return getStaticValueSlot<JSTestObj, Base>(exec, &JSTestObjTable, this, propertyName, slot);
    274 }
    275 
    276 bool JSTestObj::getOwnPropertyDescriptor(ExecState* exec, const Identifier& propertyName, PropertyDescriptor& descriptor)
    277 {
    278     return getStaticValueDescriptor<JSTestObj, Base>(exec, &JSTestObjTable, this, propertyName, descriptor);
    279 }
    280 
    281 JSValue jsTestObjReadOnlyIntAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    282 {
    283     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    284     UNUSED_PARAM(exec);
    285     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    286     JSValue result = jsNumber(imp->readOnlyIntAttr());
    287     return result;
    288 }
    289 
    290 JSValue jsTestObjReadOnlyStringAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    291 {
    292     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    293     UNUSED_PARAM(exec);
    294     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    295     JSValue result = jsString(exec, imp->readOnlyStringAttr());
    296     return result;
    297 }
    298 
    299 JSValue jsTestObjReadOnlyTestObjAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    300 {
    301     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    302     UNUSED_PARAM(exec);
    303     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    304     JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->readOnlyTestObjAttr()));
    305     return result;
    306 }
    307 
    308 JSValue jsTestObjShortAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    309 {
    310     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    311     UNUSED_PARAM(exec);
    312     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    313     JSValue result = jsNumber(imp->shortAttr());
    314     return result;
    315 }
    316 
    317 JSValue jsTestObjUnsignedShortAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    318 {
    319     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    320     UNUSED_PARAM(exec);
    321     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    322     JSValue result = jsNumber(imp->unsignedShortAttr());
    323     return result;
    324 }
    325 
    326 JSValue jsTestObjIntAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    327 {
    328     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    329     UNUSED_PARAM(exec);
    330     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    331     JSValue result = jsNumber(imp->intAttr());
    332     return result;
    333 }
    334 
    335 JSValue jsTestObjLongLongAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    336 {
    337     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    338     UNUSED_PARAM(exec);
    339     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    340     JSValue result = jsNumber(imp->longLongAttr());
    341     return result;
    342 }
    343 
    344 JSValue jsTestObjUnsignedLongLongAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    345 {
    346     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    347     UNUSED_PARAM(exec);
    348     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    349     JSValue result = jsNumber(imp->unsignedLongLongAttr());
    350     return result;
    351 }
    352 
    353 JSValue jsTestObjStringAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    354 {
    355     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    356     UNUSED_PARAM(exec);
    357     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    358     JSValue result = jsString(exec, imp->stringAttr());
    359     return result;
    360 }
    361 
    362 JSValue jsTestObjTestObjAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    363 {
    364     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    365     UNUSED_PARAM(exec);
    366     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    367     JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->testObjAttr()));
    368     return result;
    369 }
    370 
    371 JSValue jsTestObjXMLObjAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    372 {
    373     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    374     UNUSED_PARAM(exec);
    375     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    376     JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->xmlObjAttr()));
    377     return result;
    378 }
    379 
    380 JSValue jsTestObjCreate(ExecState* exec, JSValue slotBase, const Identifier&)
    381 {
    382     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    383     UNUSED_PARAM(exec);
    384     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    385     JSValue result = jsBoolean(imp->isCreate());
    386     return result;
    387 }
    388 
    389 JSValue jsTestObjReflectedStringAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    390 {
    391     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    392     UNUSED_PARAM(exec);
    393     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    394     JSValue result = jsString(exec, imp->getAttribute(WebCore::HTMLNames::reflectedstringattrAttr));
    395     return result;
    396 }
    397 
    398 JSValue jsTestObjReflectedIntegralAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    399 {
    400     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    401     UNUSED_PARAM(exec);
    402     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    403     JSValue result = jsNumber(imp->getIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr));
    404     return result;
    405 }
    406 
    407 JSValue jsTestObjReflectedUnsignedIntegralAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    408 {
    409     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    410     UNUSED_PARAM(exec);
    411     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    412     JSValue result = jsNumber(std::max(0, imp->getIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr)));
    413     return result;
    414 }
    415 
    416 JSValue jsTestObjReflectedBooleanAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    417 {
    418     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    419     UNUSED_PARAM(exec);
    420     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    421     JSValue result = jsBoolean(imp->hasAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr));
    422     return result;
    423 }
    424 
    425 JSValue jsTestObjReflectedURLAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    426 {
    427     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    428     UNUSED_PARAM(exec);
    429     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    430     JSValue result = jsString(exec, imp->getURLAttribute(WebCore::HTMLNames::reflectedurlattrAttr));
    431     return result;
    432 }
    433 
    434 JSValue jsTestObjReflectedNonEmptyURLAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    435 {
    436     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    437     UNUSED_PARAM(exec);
    438     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    439     JSValue result = jsString(exec, imp->getNonEmptyURLAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr));
    440     return result;
    441 }
    442 
    443 JSValue jsTestObjReflectedStringAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    444 {
    445     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    446     UNUSED_PARAM(exec);
    447     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    448     JSValue result = jsString(exec, imp->getAttribute(WebCore::HTMLNames::customContentStringAttrAttr));
    449     return result;
    450 }
    451 
    452 JSValue jsTestObjReflectedCustomIntegralAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    453 {
    454     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    455     UNUSED_PARAM(exec);
    456     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    457     JSValue result = jsNumber(imp->getIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr));
    458     return result;
    459 }
    460 
    461 JSValue jsTestObjReflectedCustomBooleanAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    462 {
    463     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    464     UNUSED_PARAM(exec);
    465     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    466     JSValue result = jsBoolean(imp->hasAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr));
    467     return result;
    468 }
    469 
    470 JSValue jsTestObjReflectedCustomURLAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    471 {
    472     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    473     UNUSED_PARAM(exec);
    474     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    475     JSValue result = jsString(exec, imp->getURLAttribute(WebCore::HTMLNames::customContentURLAttrAttr));
    476     return result;
    477 }
    478 
    479 JSValue jsTestObjReflectedCustomNonEmptyURLAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    480 {
    481     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    482     UNUSED_PARAM(exec);
    483     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    484     JSValue result = jsString(exec, imp->getNonEmptyURLAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr));
    485     return result;
    486 }
    487 
    488 JSValue jsTestObjAttrWithGetterException(ExecState* exec, JSValue slotBase, const Identifier&)
    489 {
    490     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    491     ExceptionCode ec = 0;
    492     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    493     JSC::JSValue result = jsNumber(imp->attrWithGetterException(ec));
    494     setDOMException(exec, ec);
    495     return result;
    496 }
    497 
    498 JSValue jsTestObjAttrWithSetterException(ExecState* exec, JSValue slotBase, const Identifier&)
    499 {
    500     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    501     UNUSED_PARAM(exec);
    502     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    503     JSValue result = jsNumber(imp->attrWithSetterException());
    504     return result;
    505 }
    506 
    507 JSValue jsTestObjStringAttrWithGetterException(ExecState* exec, JSValue slotBase, const Identifier&)
    508 {
    509     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    510     ExceptionCode ec = 0;
    511     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    512     JSC::JSValue result = jsString(exec, imp->stringAttrWithGetterException(ec));
    513     setDOMException(exec, ec);
    514     return result;
    515 }
    516 
    517 JSValue jsTestObjStringAttrWithSetterException(ExecState* exec, JSValue slotBase, const Identifier&)
    518 {
    519     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    520     UNUSED_PARAM(exec);
    521     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    522     JSValue result = jsString(exec, imp->stringAttrWithSetterException());
    523     return result;
    524 }
    525 
    526 JSValue jsTestObjCustomAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    527 {
    528     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    529     return castedThis->customAttr(exec);
    530 }
    531 
    532 JSValue jsTestObjScriptStringAttr(ExecState* exec, JSValue slotBase, const Identifier&)
    533 {
    534     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    535     UNUSED_PARAM(exec);
    536     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    537     JSValue result = jsOwnedStringOrNull(exec, imp->scriptStringAttr());
    538     return result;
    539 }
    540 
    541 #if ENABLE(Condition1)
    542 JSValue jsTestObjConditionalAttr1(ExecState* exec, JSValue slotBase, const Identifier&)
    543 {
    544     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    545     UNUSED_PARAM(exec);
    546     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    547     JSValue result = jsNumber(imp->conditionalAttr1());
    548     return result;
    549 }
    550 #endif
    551 
    552 #if ENABLE(Condition1) && ENABLE(Condition2)
    553 JSValue jsTestObjConditionalAttr2(ExecState* exec, JSValue slotBase, const Identifier&)
    554 {
    555     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    556     UNUSED_PARAM(exec);
    557     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    558     JSValue result = jsNumber(imp->conditionalAttr2());
    559     return result;
    560 }
    561 #endif
    562 
    563 #if ENABLE(Condition1) || ENABLE(Condition2)
    564 JSValue jsTestObjConditionalAttr3(ExecState* exec, JSValue slotBase, const Identifier&)
    565 {
    566     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    567     UNUSED_PARAM(exec);
    568     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    569     JSValue result = jsNumber(imp->conditionalAttr3());
    570     return result;
    571 }
    572 #endif
    573 
    574 JSValue jsTestObjDescription(ExecState* exec, JSValue slotBase, const Identifier&)
    575 {
    576     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    577     UNUSED_PARAM(exec);
    578     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    579     JSValue result = jsNumber(imp->description());
    580     return result;
    581 }
    582 
    583 JSValue jsTestObjId(ExecState* exec, JSValue slotBase, const Identifier&)
    584 {
    585     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    586     UNUSED_PARAM(exec);
    587     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    588     JSValue result = jsNumber(imp->id());
    589     return result;
    590 }
    591 
    592 JSValue jsTestObjHash(ExecState* exec, JSValue slotBase, const Identifier&)
    593 {
    594     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
    595     UNUSED_PARAM(exec);
    596     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    597     JSValue result = jsString(exec, imp->hash());
    598     return result;
    599 }
    600 
    601 JSValue jsTestObjConstructor(ExecState* exec, JSValue slotBase, const Identifier&)
    602 {
    603     JSTestObj* domObject = static_cast<JSTestObj*>(asObject(slotBase));
    604     return JSTestObj::getConstructor(exec, domObject->globalObject());
    605 }
    606 
    607 void JSTestObj::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
    608 {
    609     lookupPut<JSTestObj, Base>(exec, propertyName, value, &JSTestObjTable, this, slot);
    610 }
    611 
    612 void setJSTestObjShortAttr(ExecState* exec, JSObject* thisObject, JSValue value)
    613 {
    614     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    615     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    616     imp->setShortAttr(value.toInt32(exec));
    617 }
    618 
    619 void setJSTestObjUnsignedShortAttr(ExecState* exec, JSObject* thisObject, JSValue value)
    620 {
    621     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    622     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    623     imp->setUnsignedShortAttr(value.toUInt32(exec));
    624 }
    625 
    626 void setJSTestObjIntAttr(ExecState* exec, JSObject* thisObject, JSValue value)
    627 {
    628     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    629     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    630     imp->setIntAttr(value.toInt32(exec));
    631 }
    632 
    633 void setJSTestObjLongLongAttr(ExecState* exec, JSObject* thisObject, JSValue value)
    634 {
    635     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    636     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    637     imp->setLongLongAttr(static_cast<long long>(value.toInteger(exec)));
    638 }
    639 
    640 void setJSTestObjUnsignedLongLongAttr(ExecState* exec, JSObject* thisObject, JSValue value)
    641 {
    642     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    643     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    644     imp->setUnsignedLongLongAttr(static_cast<unsigned long long>(value.toInteger(exec)));
    645 }
    646 
    647 void setJSTestObjStringAttr(ExecState* exec, JSObject* thisObject, JSValue value)
    648 {
    649     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    650     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    651     imp->setStringAttr(ustringToString(value.toString(exec)));
    652 }
    653 
    654 void setJSTestObjTestObjAttr(ExecState* exec, JSObject* thisObject, JSValue value)
    655 {
    656     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    657     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    658     imp->setTestObjAttr(toTestObj(value));
    659 }
    660 
    661 void setJSTestObjXMLObjAttr(ExecState* exec, JSObject* thisObject, JSValue value)
    662 {
    663     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    664     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    665     imp->setXMLObjAttr(toTestObj(value));
    666 }
    667 
    668 void setJSTestObjCreate(ExecState* exec, JSObject* thisObject, JSValue value)
    669 {
    670     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    671     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    672     imp->setCreate(value.toBoolean(exec));
    673 }
    674 
    675 void setJSTestObjReflectedStringAttr(ExecState* exec, JSObject* thisObject, JSValue value)
    676 {
    677     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    678     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    679     imp->setAttribute(WebCore::HTMLNames::reflectedstringattrAttr, valueToStringWithNullCheck(exec, value));
    680 }
    681 
    682 void setJSTestObjReflectedIntegralAttr(ExecState* exec, JSObject* thisObject, JSValue value)
    683 {
    684     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    685     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    686     imp->setIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr, value.toInt32(exec));
    687 }
    688 
    689 void setJSTestObjReflectedUnsignedIntegralAttr(ExecState* exec, JSObject* thisObject, JSValue value)
    690 {
    691     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    692     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    693     imp->setUnsignedIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr, value.toUInt32(exec));
    694 }
    695 
    696 void setJSTestObjReflectedBooleanAttr(ExecState* exec, JSObject* thisObject, JSValue value)
    697 {
    698     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    699     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    700     imp->setBooleanAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr, value.toBoolean(exec));
    701 }
    702 
    703 void setJSTestObjReflectedURLAttr(ExecState* exec, JSObject* thisObject, JSValue value)
    704 {
    705     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    706     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    707     imp->setAttribute(WebCore::HTMLNames::reflectedurlattrAttr, valueToStringWithNullCheck(exec, value));
    708 }
    709 
    710 void setJSTestObjReflectedNonEmptyURLAttr(ExecState* exec, JSObject* thisObject, JSValue value)
    711 {
    712     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    713     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    714     imp->setAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr, valueToStringWithNullCheck(exec, value));
    715 }
    716 
    717 void setJSTestObjReflectedStringAttr(ExecState* exec, JSObject* thisObject, JSValue value)
    718 {
    719     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    720     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    721     imp->setAttribute(WebCore::HTMLNames::customContentStringAttrAttr, valueToStringWithNullCheck(exec, value));
    722 }
    723 
    724 void setJSTestObjReflectedCustomIntegralAttr(ExecState* exec, JSObject* thisObject, JSValue value)
    725 {
    726     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    727     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    728     imp->setIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr, value.toInt32(exec));
    729 }
    730 
    731 void setJSTestObjReflectedCustomBooleanAttr(ExecState* exec, JSObject* thisObject, JSValue value)
    732 {
    733     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    734     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    735     imp->setBooleanAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr, value.toBoolean(exec));
    736 }
    737 
    738 void setJSTestObjReflectedCustomURLAttr(ExecState* exec, JSObject* thisObject, JSValue value)
    739 {
    740     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    741     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    742     imp->setAttribute(WebCore::HTMLNames::customContentURLAttrAttr, valueToStringWithNullCheck(exec, value));
    743 }
    744 
    745 void setJSTestObjReflectedCustomNonEmptyURLAttr(ExecState* exec, JSObject* thisObject, JSValue value)
    746 {
    747     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    748     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    749     imp->setAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr, valueToStringWithNullCheck(exec, value));
    750 }
    751 
    752 void setJSTestObjAttrWithGetterException(ExecState* exec, JSObject* thisObject, JSValue value)
    753 {
    754     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    755     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    756     ExceptionCode ec = 0;
    757     imp->setAttrWithGetterException(value.toInt32(exec), ec);
    758     setDOMException(exec, ec);
    759 }
    760 
    761 void setJSTestObjAttrWithSetterException(ExecState* exec, JSObject* thisObject, JSValue value)
    762 {
    763     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    764     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    765     ExceptionCode ec = 0;
    766     imp->setAttrWithSetterException(value.toInt32(exec), ec);
    767     setDOMException(exec, ec);
    768 }
    769 
    770 void setJSTestObjStringAttrWithGetterException(ExecState* exec, JSObject* thisObject, JSValue value)
    771 {
    772     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    773     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    774     ExceptionCode ec = 0;
    775     imp->setStringAttrWithGetterException(ustringToString(value.toString(exec)), ec);
    776     setDOMException(exec, ec);
    777 }
    778 
    779 void setJSTestObjStringAttrWithSetterException(ExecState* exec, JSObject* thisObject, JSValue value)
    780 {
    781     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    782     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    783     ExceptionCode ec = 0;
    784     imp->setStringAttrWithSetterException(ustringToString(value.toString(exec)), ec);
    785     setDOMException(exec, ec);
    786 }
    787 
    788 void setJSTestObjCustomAttr(ExecState* exec, JSObject* thisObject, JSValue value)
    789 {
    790     static_cast<JSTestObj*>(thisObject)->setCustomAttr(exec, value);
    791 }
    792 
    793 #if ENABLE(Condition1)
    794 void setJSTestObjConditionalAttr1(ExecState* exec, JSObject* thisObject, JSValue value)
    795 {
    796     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    797     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    798     imp->setConditionalAttr1(value.toInt32(exec));
    799 }
    800 #endif
    801 
    802 #if ENABLE(Condition1) && ENABLE(Condition2)
    803 void setJSTestObjConditionalAttr2(ExecState* exec, JSObject* thisObject, JSValue value)
    804 {
    805     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    806     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    807     imp->setConditionalAttr2(value.toInt32(exec));
    808 }
    809 #endif
    810 
    811 #if ENABLE(Condition1) || ENABLE(Condition2)
    812 void setJSTestObjConditionalAttr3(ExecState* exec, JSObject* thisObject, JSValue value)
    813 {
    814     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    815     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    816     imp->setConditionalAttr3(value.toInt32(exec));
    817 }
    818 #endif
    819 
    820 void setJSTestObjId(ExecState* exec, JSObject* thisObject, JSValue value)
    821 {
    822     JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
    823     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    824     imp->setId(value.toInt32(exec));
    825 }
    826 
    827 JSValue JSTestObj::getConstructor(ExecState* exec, JSGlobalObject* globalObject)
    828 {
    829     return getDOMConstructor<JSTestObjConstructor>(exec, static_cast<JSDOMGlobalObject*>(globalObject));
    830 }
    831 
    832 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVoidMethod(ExecState* exec)
    833 {
    834     JSValue thisValue = exec->hostThisValue();
    835     if (!thisValue.inherits(&JSTestObj::s_info))
    836         return throwVMTypeError(exec);
    837     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
    838     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    839 
    840     imp->voidMethod();
    841     return JSValue::encode(jsUndefined());
    842 }
    843 
    844 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVoidMethodWithArgs(ExecState* exec)
    845 {
    846     JSValue thisValue = exec->hostThisValue();
    847     if (!thisValue.inherits(&JSTestObj::s_info))
    848         return throwVMTypeError(exec);
    849     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
    850     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    851     int intArg(exec->argument(0).toInt32(exec));
    852     if (exec->hadException())
    853         return JSValue::encode(jsUndefined());
    854     const String& strArg(ustringToString(exec->argument(1).toString(exec)));
    855     if (exec->hadException())
    856         return JSValue::encode(jsUndefined());
    857     TestObj* objArg(toTestObj(exec->argument(2)));
    858     if (exec->hadException())
    859         return JSValue::encode(jsUndefined());
    860 
    861     imp->voidMethodWithArgs(intArg, strArg, objArg);
    862     return JSValue::encode(jsUndefined());
    863 }
    864 
    865 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionIntMethod(ExecState* exec)
    866 {
    867     JSValue thisValue = exec->hostThisValue();
    868     if (!thisValue.inherits(&JSTestObj::s_info))
    869         return throwVMTypeError(exec);
    870     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
    871     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    872 
    873 
    874     JSC::JSValue result = jsNumber(imp->intMethod());
    875     return JSValue::encode(result);
    876 }
    877 
    878 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionIntMethodWithArgs(ExecState* exec)
    879 {
    880     JSValue thisValue = exec->hostThisValue();
    881     if (!thisValue.inherits(&JSTestObj::s_info))
    882         return throwVMTypeError(exec);
    883     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
    884     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    885     int intArg(exec->argument(0).toInt32(exec));
    886     if (exec->hadException())
    887         return JSValue::encode(jsUndefined());
    888     const String& strArg(ustringToString(exec->argument(1).toString(exec)));
    889     if (exec->hadException())
    890         return JSValue::encode(jsUndefined());
    891     TestObj* objArg(toTestObj(exec->argument(2)));
    892     if (exec->hadException())
    893         return JSValue::encode(jsUndefined());
    894 
    895 
    896     JSC::JSValue result = jsNumber(imp->intMethodWithArgs(intArg, strArg, objArg));
    897     return JSValue::encode(result);
    898 }
    899 
    900 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionObjMethod(ExecState* exec)
    901 {
    902     JSValue thisValue = exec->hostThisValue();
    903     if (!thisValue.inherits(&JSTestObj::s_info))
    904         return throwVMTypeError(exec);
    905     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
    906     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    907 
    908 
    909     JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->objMethod()));
    910     return JSValue::encode(result);
    911 }
    912 
    913 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionObjMethodWithArgs(ExecState* exec)
    914 {
    915     JSValue thisValue = exec->hostThisValue();
    916     if (!thisValue.inherits(&JSTestObj::s_info))
    917         return throwVMTypeError(exec);
    918     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
    919     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    920     int intArg(exec->argument(0).toInt32(exec));
    921     if (exec->hadException())
    922         return JSValue::encode(jsUndefined());
    923     const String& strArg(ustringToString(exec->argument(1).toString(exec)));
    924     if (exec->hadException())
    925         return JSValue::encode(jsUndefined());
    926     TestObj* objArg(toTestObj(exec->argument(2)));
    927     if (exec->hadException())
    928         return JSValue::encode(jsUndefined());
    929 
    930 
    931     JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->objMethodWithArgs(intArg, strArg, objArg)));
    932     return JSValue::encode(result);
    933 }
    934 
    935 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodThatRequiresAllArgs(ExecState* exec)
    936 {
    937     JSValue thisValue = exec->hostThisValue();
    938     if (!thisValue.inherits(&JSTestObj::s_info))
    939         return throwVMTypeError(exec);
    940     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
    941     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    942     if (exec->argumentCount() < 2)
    943         return JSValue::encode(jsUndefined());
    944     const String& strArg(ustringToString(exec->argument(0).toString(exec)));
    945     if (exec->hadException())
    946         return JSValue::encode(jsUndefined());
    947     TestObj* objArg(toTestObj(exec->argument(1)));
    948     if (exec->hadException())
    949         return JSValue::encode(jsUndefined());
    950 
    951 
    952     JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->methodThatRequiresAllArgs(strArg, objArg)));
    953     return JSValue::encode(result);
    954 }
    955 
    956 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows(ExecState* exec)
    957 {
    958     JSValue thisValue = exec->hostThisValue();
    959     if (!thisValue.inherits(&JSTestObj::s_info))
    960         return throwVMTypeError(exec);
    961     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
    962     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    963     if (exec->argumentCount() < 2)
    964         return throwVMError(exec, createSyntaxError(exec, "Not enough arguments"));
    965     ExceptionCode ec = 0;
    966     const String& strArg(ustringToString(exec->argument(0).toString(exec)));
    967     if (exec->hadException())
    968         return JSValue::encode(jsUndefined());
    969     TestObj* objArg(toTestObj(exec->argument(1)));
    970     if (exec->hadException())
    971         return JSValue::encode(jsUndefined());
    972 
    973 
    974     JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->methodThatRequiresAllArgsAndThrows(strArg, objArg, ec)));
    975     setDOMException(exec, ec);
    976     return JSValue::encode(result);
    977 }
    978 
    979 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionSerializedValue(ExecState* exec)
    980 {
    981     JSValue thisValue = exec->hostThisValue();
    982     if (!thisValue.inherits(&JSTestObj::s_info))
    983         return throwVMTypeError(exec);
    984     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
    985     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
    986     RefPtr<SerializedScriptValue> serializedArg(SerializedScriptValue::create(exec, exec->argument(0)));
    987     if (exec->hadException())
    988         return JSValue::encode(jsUndefined());
    989 
    990     imp->serializedValue(serializedArg);
    991     return JSValue::encode(jsUndefined());
    992 }
    993 
    994 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionIdbKey(ExecState* exec)
    995 {
    996     JSValue thisValue = exec->hostThisValue();
    997     if (!thisValue.inherits(&JSTestObj::s_info))
    998         return throwVMTypeError(exec);
    999     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1000     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1001     RefPtr<IDBKey> key(createIDBKeyFromValue(exec, exec->argument(0)));
   1002     if (exec->hadException())
   1003         return JSValue::encode(jsUndefined());
   1004 
   1005     imp->idbKey(key);
   1006     return JSValue::encode(jsUndefined());
   1007 }
   1008 
   1009 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOptionsObject(ExecState* exec)
   1010 {
   1011     JSValue thisValue = exec->hostThisValue();
   1012     if (!thisValue.inherits(&JSTestObj::s_info))
   1013         return throwVMTypeError(exec);
   1014     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1015     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1016     OptionsObject* oo(toOptionsObject(exec->argument(0)));
   1017     if (exec->hadException())
   1018         return JSValue::encode(jsUndefined());
   1019 
   1020     int argsCount = exec->argumentCount();
   1021     if (argsCount <= 1) {
   1022         imp->optionsObject(oo);
   1023         return JSValue::encode(jsUndefined());
   1024     }
   1025 
   1026     OptionsObject* ooo(toOptionsObject(exec->argument(1)));
   1027     if (exec->hadException())
   1028         return JSValue::encode(jsUndefined());
   1029 
   1030     imp->optionsObject(oo, ooo);
   1031     return JSValue::encode(jsUndefined());
   1032 }
   1033 
   1034 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithException(ExecState* exec)
   1035 {
   1036     JSValue thisValue = exec->hostThisValue();
   1037     if (!thisValue.inherits(&JSTestObj::s_info))
   1038         return throwVMTypeError(exec);
   1039     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1040     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1041     ExceptionCode ec = 0;
   1042 
   1043     imp->methodWithException(ec);
   1044     setDOMException(exec, ec);
   1045     return JSValue::encode(jsUndefined());
   1046 }
   1047 
   1048 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomMethod(ExecState* exec)
   1049 {
   1050     JSValue thisValue = exec->hostThisValue();
   1051     if (!thisValue.inherits(&JSTestObj::s_info))
   1052         return throwVMTypeError(exec);
   1053     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1054     return JSValue::encode(castedThis->customMethod(exec));
   1055 }
   1056 
   1057 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomMethodWithArgs(ExecState* exec)
   1058 {
   1059     JSValue thisValue = exec->hostThisValue();
   1060     if (!thisValue.inherits(&JSTestObj::s_info))
   1061         return throwVMTypeError(exec);
   1062     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1063     return JSValue::encode(castedThis->customMethodWithArgs(exec));
   1064 }
   1065 
   1066 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomArgsAndException(ExecState* exec)
   1067 {
   1068     JSValue thisValue = exec->hostThisValue();
   1069     if (!thisValue.inherits(&JSTestObj::s_info))
   1070         return throwVMTypeError(exec);
   1071     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1072     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1073     ExceptionCode ec = 0;
   1074     RefPtr<ScriptArguments> scriptArguments(createScriptArguments(exec, 1));
   1075     size_t maxStackSize = imp->shouldCaptureFullStackTrace() ? ScriptCallStack::maxCallStackSizeToCapture : 1;
   1076     RefPtr<ScriptCallStack> callStack(createScriptCallStack(exec, maxStackSize));
   1077     log* intArg(tolog(exec->argument(0)));
   1078     if (exec->hadException())
   1079         return JSValue::encode(jsUndefined());
   1080 
   1081     imp->customArgsAndException(intArg, scriptArguments, callStack, ec);
   1082     setDOMException(exec, ec);
   1083     return JSValue::encode(jsUndefined());
   1084 }
   1085 
   1086 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionAddEventListener(ExecState* exec)
   1087 {
   1088     JSValue thisValue = exec->hostThisValue();
   1089     if (!thisValue.inherits(&JSTestObj::s_info))
   1090         return throwVMTypeError(exec);
   1091     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1092     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1093     JSValue listener = exec->argument(1);
   1094     if (!listener.isObject())
   1095         return JSValue::encode(jsUndefined());
   1096     imp->addEventListener(ustringToAtomicString(exec->argument(0).toString(exec)), JSEventListener::create(asObject(listener), castedThis, false, currentWorld(exec)), exec->argument(2).toBoolean(exec));
   1097     return JSValue::encode(jsUndefined());
   1098 }
   1099 
   1100 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionRemoveEventListener(ExecState* exec)
   1101 {
   1102     JSValue thisValue = exec->hostThisValue();
   1103     if (!thisValue.inherits(&JSTestObj::s_info))
   1104         return throwVMTypeError(exec);
   1105     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1106     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1107     JSValue listener = exec->argument(1);
   1108     if (!listener.isObject())
   1109         return JSValue::encode(jsUndefined());
   1110     imp->removeEventListener(ustringToAtomicString(exec->argument(0).toString(exec)), JSEventListener::create(asObject(listener), castedThis, false, currentWorld(exec)).get(), exec->argument(2).toBoolean(exec));
   1111     return JSValue::encode(jsUndefined());
   1112 }
   1113 
   1114 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithDynamicFrame(ExecState* exec)
   1115 {
   1116     JSValue thisValue = exec->hostThisValue();
   1117     if (!thisValue.inherits(&JSTestObj::s_info))
   1118         return throwVMTypeError(exec);
   1119     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1120     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1121     Frame* dynamicFrame = toDynamicFrame(exec);
   1122     if (!dynamicFrame)
   1123         return JSValue::encode(jsUndefined());
   1124 
   1125     imp->withDynamicFrame(dynamicFrame);
   1126     return JSValue::encode(jsUndefined());
   1127 }
   1128 
   1129 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithDynamicFrameAndArg(ExecState* exec)
   1130 {
   1131     JSValue thisValue = exec->hostThisValue();
   1132     if (!thisValue.inherits(&JSTestObj::s_info))
   1133         return throwVMTypeError(exec);
   1134     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1135     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1136     Frame* dynamicFrame = toDynamicFrame(exec);
   1137     if (!dynamicFrame)
   1138         return JSValue::encode(jsUndefined());
   1139     int intArg(exec->argument(0).toInt32(exec));
   1140     if (exec->hadException())
   1141         return JSValue::encode(jsUndefined());
   1142 
   1143     imp->withDynamicFrameAndArg(dynamicFrame, intArg);
   1144     return JSValue::encode(jsUndefined());
   1145 }
   1146 
   1147 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithDynamicFrameAndOptionalArg(ExecState* exec)
   1148 {
   1149     JSValue thisValue = exec->hostThisValue();
   1150     if (!thisValue.inherits(&JSTestObj::s_info))
   1151         return throwVMTypeError(exec);
   1152     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1153     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1154     Frame* dynamicFrame = toDynamicFrame(exec);
   1155     if (!dynamicFrame)
   1156         return JSValue::encode(jsUndefined());
   1157     int intArg(exec->argument(0).toInt32(exec));
   1158     if (exec->hadException())
   1159         return JSValue::encode(jsUndefined());
   1160 
   1161     int argsCount = exec->argumentCount();
   1162     if (argsCount <= 1) {
   1163         imp->withDynamicFrameAndOptionalArg(dynamicFrame, intArg);
   1164         return JSValue::encode(jsUndefined());
   1165     }
   1166 
   1167     int optionalArg(exec->argument(1).toInt32(exec));
   1168     if (exec->hadException())
   1169         return JSValue::encode(jsUndefined());
   1170 
   1171     imp->withDynamicFrameAndOptionalArg(dynamicFrame, intArg, optionalArg);
   1172     return JSValue::encode(jsUndefined());
   1173 }
   1174 
   1175 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithDynamicFrameAndUserGesture(ExecState* exec)
   1176 {
   1177     JSValue thisValue = exec->hostThisValue();
   1178     if (!thisValue.inherits(&JSTestObj::s_info))
   1179         return throwVMTypeError(exec);
   1180     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1181     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1182     Frame* dynamicFrame = toDynamicFrame(exec);
   1183     if (!dynamicFrame)
   1184         return JSValue::encode(jsUndefined());
   1185     int intArg(exec->argument(0).toInt32(exec));
   1186     if (exec->hadException())
   1187         return JSValue::encode(jsUndefined());
   1188 
   1189     imp->withDynamicFrameAndUserGesture(dynamicFrame, intArg, processingUserGesture());
   1190     return JSValue::encode(jsUndefined());
   1191 }
   1192 
   1193 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithDynamicFrameAndUserGestureASAD(ExecState* exec)
   1194 {
   1195     JSValue thisValue = exec->hostThisValue();
   1196     if (!thisValue.inherits(&JSTestObj::s_info))
   1197         return throwVMTypeError(exec);
   1198     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1199     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1200     Frame* dynamicFrame = toDynamicFrame(exec);
   1201     if (!dynamicFrame)
   1202         return JSValue::encode(jsUndefined());
   1203     int intArg(exec->argument(0).toInt32(exec));
   1204     if (exec->hadException())
   1205         return JSValue::encode(jsUndefined());
   1206 
   1207     int argsCount = exec->argumentCount();
   1208     if (argsCount <= 1) {
   1209         imp->withDynamicFrameAndUserGestureASAD(dynamicFrame, intArg);
   1210         return JSValue::encode(jsUndefined());
   1211     }
   1212 
   1213     int optionalArg(exec->argument(1).toInt32(exec));
   1214     if (exec->hadException())
   1215         return JSValue::encode(jsUndefined());
   1216 
   1217     imp->withDynamicFrameAndUserGestureASAD(dynamicFrame, intArg, optionalArg, processingUserGesture());
   1218     return JSValue::encode(jsUndefined());
   1219 }
   1220 
   1221 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateVoid(ExecState* exec)
   1222 {
   1223     JSValue thisValue = exec->hostThisValue();
   1224     if (!thisValue.inherits(&JSTestObj::s_info))
   1225         return throwVMTypeError(exec);
   1226     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1227     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1228 
   1229     imp->withScriptStateVoid(exec);
   1230     return JSValue::encode(jsUndefined());
   1231 }
   1232 
   1233 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateObj(ExecState* exec)
   1234 {
   1235     JSValue thisValue = exec->hostThisValue();
   1236     if (!thisValue.inherits(&JSTestObj::s_info))
   1237         return throwVMTypeError(exec);
   1238     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1239     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1240 
   1241 
   1242     JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->withScriptStateObj(exec)));
   1243     if (exec->hadException())
   1244         return JSValue::encode(jsUndefined());
   1245     return JSValue::encode(result);
   1246 }
   1247 
   1248 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateVoidException(ExecState* exec)
   1249 {
   1250     JSValue thisValue = exec->hostThisValue();
   1251     if (!thisValue.inherits(&JSTestObj::s_info))
   1252         return throwVMTypeError(exec);
   1253     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1254     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1255     ExceptionCode ec = 0;
   1256 
   1257     imp->withScriptStateVoidException(exec, ec);
   1258     setDOMException(exec, ec);
   1259     return JSValue::encode(jsUndefined());
   1260 }
   1261 
   1262 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateObjException(ExecState* exec)
   1263 {
   1264     JSValue thisValue = exec->hostThisValue();
   1265     if (!thisValue.inherits(&JSTestObj::s_info))
   1266         return throwVMTypeError(exec);
   1267     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1268     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1269     ExceptionCode ec = 0;
   1270 
   1271 
   1272     JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->withScriptStateObjException(exec, ec)));
   1273     setDOMException(exec, ec);
   1274     if (exec->hadException())
   1275         return JSValue::encode(jsUndefined());
   1276     return JSValue::encode(result);
   1277 }
   1278 
   1279 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptExecutionContext(ExecState* exec)
   1280 {
   1281     JSValue thisValue = exec->hostThisValue();
   1282     if (!thisValue.inherits(&JSTestObj::s_info))
   1283         return throwVMTypeError(exec);
   1284     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1285     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1286     ScriptExecutionContext* scriptContext = static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject())->scriptExecutionContext();
   1287     if (!scriptContext)
   1288         return JSValue::encode(jsUndefined());
   1289 
   1290     imp->withScriptExecutionContext(scriptContext);
   1291     return JSValue::encode(jsUndefined());
   1292 }
   1293 
   1294 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalArg(ExecState* exec)
   1295 {
   1296     JSValue thisValue = exec->hostThisValue();
   1297     if (!thisValue.inherits(&JSTestObj::s_info))
   1298         return throwVMTypeError(exec);
   1299     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1300     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1301 
   1302     int argsCount = exec->argumentCount();
   1303     if (argsCount <= 0) {
   1304         imp->methodWithOptionalArg();
   1305         return JSValue::encode(jsUndefined());
   1306     }
   1307 
   1308     int opt(exec->argument(0).toInt32(exec));
   1309     if (exec->hadException())
   1310         return JSValue::encode(jsUndefined());
   1311 
   1312     imp->methodWithOptionalArg(opt);
   1313     return JSValue::encode(jsUndefined());
   1314 }
   1315 
   1316 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArg(ExecState* exec)
   1317 {
   1318     JSValue thisValue = exec->hostThisValue();
   1319     if (!thisValue.inherits(&JSTestObj::s_info))
   1320         return throwVMTypeError(exec);
   1321     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1322     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1323     int nonOpt(exec->argument(0).toInt32(exec));
   1324     if (exec->hadException())
   1325         return JSValue::encode(jsUndefined());
   1326 
   1327     int argsCount = exec->argumentCount();
   1328     if (argsCount <= 1) {
   1329         imp->methodWithNonOptionalArgAndOptionalArg(nonOpt);
   1330         return JSValue::encode(jsUndefined());
   1331     }
   1332 
   1333     int opt(exec->argument(1).toInt32(exec));
   1334     if (exec->hadException())
   1335         return JSValue::encode(jsUndefined());
   1336 
   1337     imp->methodWithNonOptionalArgAndOptionalArg(nonOpt, opt);
   1338     return JSValue::encode(jsUndefined());
   1339 }
   1340 
   1341 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgs(ExecState* exec)
   1342 {
   1343     JSValue thisValue = exec->hostThisValue();
   1344     if (!thisValue.inherits(&JSTestObj::s_info))
   1345         return throwVMTypeError(exec);
   1346     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1347     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1348     int nonOpt(exec->argument(0).toInt32(exec));
   1349     if (exec->hadException())
   1350         return JSValue::encode(jsUndefined());
   1351 
   1352     int argsCount = exec->argumentCount();
   1353     if (argsCount <= 1) {
   1354         imp->methodWithNonOptionalArgAndTwoOptionalArgs(nonOpt);
   1355         return JSValue::encode(jsUndefined());
   1356     }
   1357 
   1358     int opt1(exec->argument(1).toInt32(exec));
   1359     if (exec->hadException())
   1360         return JSValue::encode(jsUndefined());
   1361     int opt2(exec->argument(2).toInt32(exec));
   1362     if (exec->hadException())
   1363         return JSValue::encode(jsUndefined());
   1364 
   1365     imp->methodWithNonOptionalArgAndTwoOptionalArgs(nonOpt, opt1, opt2);
   1366     return JSValue::encode(jsUndefined());
   1367 }
   1368 
   1369 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithCallbackArg(ExecState* exec)
   1370 {
   1371     JSValue thisValue = exec->hostThisValue();
   1372     if (!thisValue.inherits(&JSTestObj::s_info))
   1373         return throwVMTypeError(exec);
   1374     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1375     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1376     if (exec->argumentCount() <= 0 || !exec->argument(0).isObject()) {
   1377         setDOMException(exec, TYPE_MISMATCH_ERR);
   1378         return JSValue::encode(jsUndefined());
   1379     }
   1380     RefPtr<TestCallback> callback = JSTestCallback::create(asObject(exec->argument(0)), castedThis->globalObject());
   1381 
   1382     imp->methodWithCallbackArg(callback);
   1383     return JSValue::encode(jsUndefined());
   1384 }
   1385 
   1386 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg(ExecState* exec)
   1387 {
   1388     JSValue thisValue = exec->hostThisValue();
   1389     if (!thisValue.inherits(&JSTestObj::s_info))
   1390         return throwVMTypeError(exec);
   1391     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1392     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1393     int nonCallback(exec->argument(0).toInt32(exec));
   1394     if (exec->hadException())
   1395         return JSValue::encode(jsUndefined());
   1396     if (exec->argumentCount() <= 1 || !exec->argument(1).isObject()) {
   1397         setDOMException(exec, TYPE_MISMATCH_ERR);
   1398         return JSValue::encode(jsUndefined());
   1399     }
   1400     RefPtr<TestCallback> callback = JSTestCallback::create(asObject(exec->argument(1)), castedThis->globalObject());
   1401 
   1402     imp->methodWithNonCallbackArgAndCallbackArg(nonCallback, callback);
   1403     return JSValue::encode(jsUndefined());
   1404 }
   1405 
   1406 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArg(ExecState* exec)
   1407 {
   1408     JSValue thisValue = exec->hostThisValue();
   1409     if (!thisValue.inherits(&JSTestObj::s_info))
   1410         return throwVMTypeError(exec);
   1411     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1412     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1413     RefPtr<TestCallback> callback;
   1414     if (exec->argumentCount() > 0 && !exec->argument(0).isNull() && !exec->argument(0).isUndefined()) {
   1415         if (!exec->argument(0).isObject()) {
   1416             setDOMException(exec, TYPE_MISMATCH_ERR);
   1417             return JSValue::encode(jsUndefined());
   1418         }
   1419         callback = JSTestCallback::create(asObject(exec->argument(0)), castedThis->globalObject());
   1420     }
   1421 
   1422     imp->methodWithCallbackAndOptionalArg(callback);
   1423     return JSValue::encode(jsUndefined());
   1424 }
   1425 
   1426 static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod1(ExecState* exec)
   1427 {
   1428     JSValue thisValue = exec->hostThisValue();
   1429     if (!thisValue.inherits(&JSTestObj::s_info))
   1430         return throwVMTypeError(exec);
   1431     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1432     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1433     TestObj* objArg(toTestObj(exec->argument(0)));
   1434     if (exec->hadException())
   1435         return JSValue::encode(jsUndefined());
   1436     const String& strArg(ustringToString(exec->argument(1).toString(exec)));
   1437     if (exec->hadException())
   1438         return JSValue::encode(jsUndefined());
   1439 
   1440     imp->overloadedMethod(objArg, strArg);
   1441     return JSValue::encode(jsUndefined());
   1442 }
   1443 
   1444 static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod2(ExecState* exec)
   1445 {
   1446     JSValue thisValue = exec->hostThisValue();
   1447     if (!thisValue.inherits(&JSTestObj::s_info))
   1448         return throwVMTypeError(exec);
   1449     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1450     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1451     TestObj* objArg(toTestObj(exec->argument(0)));
   1452     if (exec->hadException())
   1453         return JSValue::encode(jsUndefined());
   1454 
   1455     int argsCount = exec->argumentCount();
   1456     if (argsCount <= 1) {
   1457         imp->overloadedMethod(objArg);
   1458         return JSValue::encode(jsUndefined());
   1459     }
   1460 
   1461     int intArg(exec->argument(1).toInt32(exec));
   1462     if (exec->hadException())
   1463         return JSValue::encode(jsUndefined());
   1464 
   1465     imp->overloadedMethod(objArg, intArg);
   1466     return JSValue::encode(jsUndefined());
   1467 }
   1468 
   1469 static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod3(ExecState* exec)
   1470 {
   1471     JSValue thisValue = exec->hostThisValue();
   1472     if (!thisValue.inherits(&JSTestObj::s_info))
   1473         return throwVMTypeError(exec);
   1474     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1475     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1476     const String& strArg(ustringToString(exec->argument(0).toString(exec)));
   1477     if (exec->hadException())
   1478         return JSValue::encode(jsUndefined());
   1479 
   1480     imp->overloadedMethod(strArg);
   1481     return JSValue::encode(jsUndefined());
   1482 }
   1483 
   1484 static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod4(ExecState* exec)
   1485 {
   1486     JSValue thisValue = exec->hostThisValue();
   1487     if (!thisValue.inherits(&JSTestObj::s_info))
   1488         return throwVMTypeError(exec);
   1489     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1490     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1491     int intArg(exec->argument(0).toInt32(exec));
   1492     if (exec->hadException())
   1493         return JSValue::encode(jsUndefined());
   1494 
   1495     imp->overloadedMethod(intArg);
   1496     return JSValue::encode(jsUndefined());
   1497 }
   1498 
   1499 static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod5(ExecState* exec)
   1500 {
   1501     JSValue thisValue = exec->hostThisValue();
   1502     if (!thisValue.inherits(&JSTestObj::s_info))
   1503         return throwVMTypeError(exec);
   1504     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1505     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1506     if (exec->argumentCount() <= 0 || !exec->argument(0).isObject()) {
   1507         setDOMException(exec, TYPE_MISMATCH_ERR);
   1508         return JSValue::encode(jsUndefined());
   1509     }
   1510     RefPtr<TestCallback> callback = JSTestCallback::create(asObject(exec->argument(0)), castedThis->globalObject());
   1511 
   1512     imp->overloadedMethod(callback);
   1513     return JSValue::encode(jsUndefined());
   1514 }
   1515 
   1516 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod(ExecState* exec)
   1517 {
   1518     if ((exec->argumentCount() == 2 && (exec->argument(0).isNull() || (exec->argument(0).isObject() && asObject(exec->argument(0))->inherits(&JSTestObj::s_info))) && (exec->argument(1).isNull() || exec->argument(1).isUndefined() || exec->argument(1).isString() || exec->argument(1).isObject())))
   1519         return jsTestObjPrototypeFunctionOverloadedMethod1(exec);
   1520     if ((exec->argumentCount() == 1 && (exec->argument(0).isNull() || (exec->argument(0).isObject() && asObject(exec->argument(0))->inherits(&JSTestObj::s_info)))) || (exec->argumentCount() == 2 && (exec->argument(0).isNull() || (exec->argument(0).isObject() && asObject(exec->argument(0))->inherits(&JSTestObj::s_info)))))
   1521         return jsTestObjPrototypeFunctionOverloadedMethod2(exec);
   1522     if ((exec->argumentCount() == 1 && (exec->argument(0).isNull() || exec->argument(0).isUndefined() || exec->argument(0).isString() || exec->argument(0).isObject())))
   1523         return jsTestObjPrototypeFunctionOverloadedMethod3(exec);
   1524     if (exec->argumentCount() == 1)
   1525         return jsTestObjPrototypeFunctionOverloadedMethod4(exec);
   1526     if ((exec->argumentCount() == 1 && (exec->argument(0).isNull() || exec->argument(0).isObject())))
   1527         return jsTestObjPrototypeFunctionOverloadedMethod5(exec);
   1528     return throwVMTypeError(exec);
   1529 }
   1530 
   1531 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionClassMethod(ExecState* exec)
   1532 {
   1533     JSValue thisValue = exec->hostThisValue();
   1534     if (!thisValue.inherits(&JSTestObj::s_info))
   1535         return throwVMTypeError(exec);
   1536     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1537     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1538 
   1539     imp->classMethod();
   1540     return JSValue::encode(jsUndefined());
   1541 }
   1542 
   1543 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionClassMethodWithOptional(ExecState* exec)
   1544 {
   1545     JSValue thisValue = exec->hostThisValue();
   1546     if (!thisValue.inherits(&JSTestObj::s_info))
   1547         return throwVMTypeError(exec);
   1548     JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
   1549     TestObj* imp = static_cast<TestObj*>(castedThis->impl());
   1550 
   1551     int argsCount = exec->argumentCount();
   1552     if (argsCount <= 0) {
   1553 
   1554         JSC::JSValue result = jsNumber(imp->classMethodWithOptional());
   1555         return JSValue::encode(result);
   1556     }
   1557 
   1558     int arg(exec->argument(0).toInt32(exec));
   1559     if (exec->hadException())
   1560         return JSValue::encode(jsUndefined());
   1561 
   1562 
   1563     JSC::JSValue result = jsNumber(imp->classMethodWithOptional(arg));
   1564     return JSValue::encode(result);
   1565 }
   1566 
   1567 // Constant getters
   1568 
   1569 JSValue jsTestObjCONST_VALUE_0(ExecState* exec, JSValue, const Identifier&)
   1570 {
   1571     UNUSED_PARAM(exec);
   1572     return jsNumber(static_cast<int>(0));
   1573 }
   1574 
   1575 JSValue jsTestObjCONST_VALUE_1(ExecState* exec, JSValue, const Identifier&)
   1576 {
   1577     UNUSED_PARAM(exec);
   1578     return jsNumber(static_cast<int>(1));
   1579 }
   1580 
   1581 JSValue jsTestObjCONST_VALUE_2(ExecState* exec, JSValue, const Identifier&)
   1582 {
   1583     UNUSED_PARAM(exec);
   1584     return jsNumber(static_cast<int>(2));
   1585 }
   1586 
   1587 JSValue jsTestObjCONST_VALUE_4(ExecState* exec, JSValue, const Identifier&)
   1588 {
   1589     UNUSED_PARAM(exec);
   1590     return jsNumber(static_cast<int>(4));
   1591 }
   1592 
   1593 JSValue jsTestObjCONST_VALUE_8(ExecState* exec, JSValue, const Identifier&)
   1594 {
   1595     UNUSED_PARAM(exec);
   1596     return jsNumber(static_cast<int>(8));
   1597 }
   1598 
   1599 JSValue jsTestObjCONST_VALUE_9(ExecState* exec, JSValue, const Identifier&)
   1600 {
   1601     UNUSED_PARAM(exec);
   1602     return jsNumber(static_cast<int>(-1));
   1603 }
   1604 
   1605 JSValue jsTestObjCONST_VALUE_10(ExecState* exec, JSValue, const Identifier&)
   1606 {
   1607     return jsStringOrNull(exec, String("my constant string"));
   1608 }
   1609 
   1610 JSValue jsTestObjCONST_VALUE_11(ExecState* exec, JSValue, const Identifier&)
   1611 {
   1612     UNUSED_PARAM(exec);
   1613     return jsNumber(static_cast<int>(0xffffffff));
   1614 }
   1615 
   1616 JSValue jsTestObjCONST_VALUE_12(ExecState* exec, JSValue, const Identifier&)
   1617 {
   1618     UNUSED_PARAM(exec);
   1619     return jsNumber(static_cast<int>(0x01));
   1620 }
   1621 
   1622 JSValue jsTestObjCONST_VALUE_13(ExecState* exec, JSValue, const Identifier&)
   1623 {
   1624     UNUSED_PARAM(exec);
   1625     return jsNumber(static_cast<int>(0X20));
   1626 }
   1627 
   1628 JSValue jsTestObjCONST_VALUE_14(ExecState* exec, JSValue, const Identifier&)
   1629 {
   1630     UNUSED_PARAM(exec);
   1631     return jsNumber(static_cast<int>(0x1abc));
   1632 }
   1633 
   1634 JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, TestObj* object)
   1635 {
   1636     return getDOMObjectWrapper<JSTestObj>(exec, globalObject, object);
   1637 }
   1638 TestObj* toTestObj(JSC::JSValue value)
   1639 {
   1640     return value.inherits(&JSTestObj::s_info) ? static_cast<JSTestObj*>(asObject(value))->impl() : 0;
   1641 }
   1642 
   1643 }
   1644