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