18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  Copyright (C) 1999-2001 Harri Porten (porten@kde.org)
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  Copyright (C) 2001 Peter Kelly (pmk@post.com)
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  Copyright (C) 2003, 2004, 2005, 2006, 2008 Apple Inc. All rights reserved.
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  Copyright (C) 2007 Eric Seidel (eric@webkit.org)
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  This library is free software; you can redistribute it and/or
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  modify it under the terms of the GNU Library General Public
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  License as published by the Free Software Foundation; either
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  version 2 of the License, or (at your option) any later version.
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  This library is distributed in the hope that it will be useful,
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  but WITHOUT ANY WARRANTY; without even the implied warranty of
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  Library General Public License for more details.
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  You should have received a copy of the GNU Library General Public License
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  along with this library; see the file COPYING.LIB.  If not, write to
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  Boston, MA 02110-1301, USA.
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h"
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Error.h"
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ConstructData.h"
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ErrorConstructor.h"
295f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include "JSFunction.h"
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "JSGlobalObject.h"
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "JSObject.h"
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "JSString.h"
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "NativeErrorConstructor.h"
34545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#include "SourceCode.h"
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace JSC {
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
38545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochstatic const char* linePropertyName = "line";
39545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochstatic const char* sourceIdPropertyName = "sourceId";
40545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochstatic const char* sourceURLPropertyName = "sourceURL";
41545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
42545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochJSObject* createError(JSGlobalObject* globalObject, const UString& message)
43545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
44545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    ASSERT(!message.isEmpty());
45e14391e94c850b8bd03680c23b38978db68687a8John Reck    return ErrorInstance::create(&globalObject->globalData(), globalObject->errorStructure(), message);
46545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
47545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
48545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochJSObject* createEvalError(JSGlobalObject* globalObject, const UString& message)
49545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
50545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    ASSERT(!message.isEmpty());
51e14391e94c850b8bd03680c23b38978db68687a8John Reck    return ErrorInstance::create(&globalObject->globalData(), globalObject->evalErrorConstructor()->errorStructure(), message);
52545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
53545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
54545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochJSObject* createRangeError(JSGlobalObject* globalObject, const UString& message)
55545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
56545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    ASSERT(!message.isEmpty());
57e14391e94c850b8bd03680c23b38978db68687a8John Reck    return ErrorInstance::create(&globalObject->globalData(), globalObject->rangeErrorConstructor()->errorStructure(), message);
58545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
59545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
60545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochJSObject* createReferenceError(JSGlobalObject* globalObject, const UString& message)
61545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
62545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    ASSERT(!message.isEmpty());
63e14391e94c850b8bd03680c23b38978db68687a8John Reck    return ErrorInstance::create(&globalObject->globalData(), globalObject->referenceErrorConstructor()->errorStructure(), message);
64545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
65545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
66545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochJSObject* createSyntaxError(JSGlobalObject* globalObject, const UString& message)
67545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
68545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    ASSERT(!message.isEmpty());
69e14391e94c850b8bd03680c23b38978db68687a8John Reck    return ErrorInstance::create(&globalObject->globalData(), globalObject->syntaxErrorConstructor()->errorStructure(), message);
70545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
71545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
72545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochJSObject* createTypeError(JSGlobalObject* globalObject, const UString& message)
73545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
74545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    ASSERT(!message.isEmpty());
75e14391e94c850b8bd03680c23b38978db68687a8John Reck    return ErrorInstance::create(&globalObject->globalData(), globalObject->typeErrorConstructor()->errorStructure(), message);
76545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
77545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
78545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochJSObject* createURIError(JSGlobalObject* globalObject, const UString& message)
79545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
80545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    ASSERT(!message.isEmpty());
81e14391e94c850b8bd03680c23b38978db68687a8John Reck    return ErrorInstance::create(&globalObject->globalData(), globalObject->URIErrorConstructor()->errorStructure(), message);
82545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
83545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
84545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochJSObject* createError(ExecState* exec, const UString& message)
85545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
86545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return createError(exec->lexicalGlobalObject(), message);
87545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
88545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
89545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochJSObject* createEvalError(ExecState* exec, const UString& message)
90545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
91545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return createEvalError(exec->lexicalGlobalObject(), message);
92545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
93545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
94545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochJSObject* createRangeError(ExecState* exec, const UString& message)
95545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
96545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return createRangeError(exec->lexicalGlobalObject(), message);
97545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
98545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
99545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochJSObject* createReferenceError(ExecState* exec, const UString& message)
100545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
101545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return createReferenceError(exec->lexicalGlobalObject(), message);
102545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
103545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
104545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochJSObject* createSyntaxError(ExecState* exec, const UString& message)
105545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
106545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return createSyntaxError(exec->lexicalGlobalObject(), message);
107545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
108545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
109545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochJSObject* createTypeError(ExecState* exec, const UString& message)
110545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
111545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return createTypeError(exec->lexicalGlobalObject(), message);
112545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
113545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
114545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochJSObject* createURIError(ExecState* exec, const UString& message)
115545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
116545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return createURIError(exec->lexicalGlobalObject(), message);
117545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
118545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
1196b70adc33054f8aee8c54d0f460458a9df11b8a5Russell BrennerJSObject* addErrorInfo(JSGlobalData* globalData, JSObject* error, int line, const SourceCode& source)
120545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
121545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    intptr_t sourceID = source.provider()->asID();
122545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    const UString& sourceURL = source.provider()->url();
123545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
124545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    if (line != -1)
125e14391e94c850b8bd03680c23b38978db68687a8John Reck        error->putWithAttributes(globalData, Identifier(globalData, linePropertyName), jsNumber(line), ReadOnly | DontDelete);
1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (sourceID != -1)
127e14391e94c850b8bd03680c23b38978db68687a8John Reck        error->putWithAttributes(globalData, Identifier(globalData, sourceIdPropertyName), jsNumber((double)sourceID), ReadOnly | DontDelete);
1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (!sourceURL.isNull())
129545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        error->putWithAttributes(globalData, Identifier(globalData, sourceURLPropertyName), jsString(globalData, sourceURL), ReadOnly | DontDelete);
130231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return error;
1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
134545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochJSObject* addErrorInfo(ExecState* exec, JSObject* error, int line, const SourceCode& source)
1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
136545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return addErrorInfo(&exec->globalData(), error, line, source);
137545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
138545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
139545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochbool hasErrorInfo(ExecState* exec, JSObject* error)
140545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
141545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return error->hasProperty(exec, Identifier(exec, linePropertyName))
142545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        || error->hasProperty(exec, Identifier(exec, sourceIdPropertyName))
1436b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner        || error->hasProperty(exec, Identifier(exec, sourceURLPropertyName));
1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
146545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochJSValue throwError(ExecState* exec, JSValue error)
1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
148545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    exec->globalData().exception = error;
1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return error;
1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
152545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochJSObject* throwError(ExecState* exec, JSObject* error)
1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
154545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    exec->globalData().exception = error;
1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return error;
1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
158545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochJSObject* throwTypeError(ExecState* exec)
159545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
160545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return throwError(exec, createTypeError(exec, "Type error"));
161545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
162545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
163545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochJSObject* throwSyntaxError(ExecState* exec)
164545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
165545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return throwError(exec, createSyntaxError(exec, "Syntax error"));
166545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
167545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
168a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochclass StrictModeTypeErrorFunction : public InternalFunction {
169a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochpublic:
1702daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    StrictModeTypeErrorFunction(ExecState* exec, JSGlobalObject* globalObject, Structure* structure, const UString& message)
171a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        : InternalFunction(&exec->globalData(), globalObject, structure, exec->globalData().propertyNames->emptyIdentifier)
172a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        , m_message(message)
173a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    {
174a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
175a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
176a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    static EncodedJSValue JSC_HOST_CALL constructThrowTypeError(ExecState* exec)
177a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    {
178a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        throwTypeError(exec, static_cast<StrictModeTypeErrorFunction*>(exec->callee())->m_message);
179a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        return JSValue::encode(jsNull());
180a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
181a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
182a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    ConstructType getConstructData(ConstructData& constructData)
183a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    {
184a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        constructData.native.function = constructThrowTypeError;
185a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        return ConstructTypeHost;
186a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
187a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
188a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    static EncodedJSValue JSC_HOST_CALL callThrowTypeError(ExecState* exec)
189a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    {
190a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        throwTypeError(exec, static_cast<StrictModeTypeErrorFunction*>(exec->callee())->m_message);
191a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        return JSValue::encode(jsNull());
192a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
193a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
194a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    CallType getCallData(CallData& callData)
195a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    {
196a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        callData.native.function = callThrowTypeError;
197a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        return CallTypeHost;
198a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
199a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
200a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochprivate:
201a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    UString m_message;
202a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch};
203a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
2042fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockASSERT_CLASS_FITS_IN_CELL(StrictModeTypeErrorFunction);
205a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
206a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochJSValue createTypeErrorFunction(ExecState* exec, const UString& message)
207a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
208a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    return new (exec) StrictModeTypeErrorFunction(exec, exec->lexicalGlobalObject(), exec->lexicalGlobalObject()->internalFunctionStructure(), message);
209a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
210a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace JSC
212