diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-05-20 09:56:07 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-05-20 09:56:07 +0000 |
commit | 41386e9cb918eed93b3f13648cbef387e371e451 (patch) | |
tree | a97f9d7bd1d9d091833286085f72da9d83fd0606 /Source/JavaScriptCore/runtime/StringConstructor.cpp | |
parent | e15dd966d523731101f70ccf768bba12435a0208 (diff) | |
download | WebKitGtk-tarball-41386e9cb918eed93b3f13648cbef387e371e451.tar.gz |
webkitgtk-2.4.9webkitgtk-2.4.9
Diffstat (limited to 'Source/JavaScriptCore/runtime/StringConstructor.cpp')
-rw-r--r-- | Source/JavaScriptCore/runtime/StringConstructor.cpp | 48 |
1 files changed, 5 insertions, 43 deletions
diff --git a/Source/JavaScriptCore/runtime/StringConstructor.cpp b/Source/JavaScriptCore/runtime/StringConstructor.cpp index e8d396970..207d8585a 100644 --- a/Source/JavaScriptCore/runtime/StringConstructor.cpp +++ b/Source/JavaScriptCore/runtime/StringConstructor.cpp @@ -21,18 +21,16 @@ #include "config.h" #include "StringConstructor.h" -#include "Error.h" #include "Executable.h" #include "JITCode.h" #include "JSFunction.h" #include "JSGlobalObject.h" -#include "JSCInlines.h" +#include "Operations.h" #include "StringPrototype.h" namespace JSC { static EncodedJSValue JSC_HOST_CALL stringFromCharCode(ExecState*); -static EncodedJSValue JSC_HOST_CALL stringFromCodePoint(ExecState*); } @@ -40,13 +38,11 @@ static EncodedJSValue JSC_HOST_CALL stringFromCodePoint(ExecState*); namespace JSC { -const ClassInfo StringConstructor::s_info = { "Function", &InternalFunction::s_info, &stringConstructorTable, CREATE_METHOD_TABLE(StringConstructor) }; +const ClassInfo StringConstructor::s_info = { "Function", &InternalFunction::s_info, 0, ExecState::stringConstructorTable, CREATE_METHOD_TABLE(StringConstructor) }; /* Source for StringConstructor.lut.h @begin stringConstructorTable fromCharCode stringFromCharCode DontEnum|Function 1 - fromCodePoint stringFromCodePoint DontEnum|Function 1 - raw stringRaw DontEnum|Function 1 @end */ @@ -66,7 +62,7 @@ void StringConstructor::finishCreation(VM& vm, StringPrototype* stringPrototype) bool StringConstructor::getOwnPropertySlot(JSObject* object, ExecState* exec, PropertyName propertyName, PropertySlot &slot) { - return getStaticFunctionSlot<InternalFunction>(exec, stringConstructorTable, jsCast<StringConstructor*>(object), propertyName, slot); + return getStaticFunctionSlot<InternalFunction>(exec, ExecState::stringConstructorTable(exec->vm()), jsCast<StringConstructor*>(object), propertyName, slot); } // ------------------------------ Functions -------------------------------- @@ -93,33 +89,6 @@ JSCell* JSC_HOST_CALL stringFromCharCode(ExecState* exec, int32_t arg) return jsSingleCharacterString(exec, arg); } -static EncodedJSValue JSC_HOST_CALL stringFromCodePoint(ExecState* exec) -{ - unsigned length = exec->argumentCount(); - StringBuilder builder; - builder.reserveCapacity(length); - - for (unsigned i = 0; i < length; ++i) { - double codePointAsDouble = exec->uncheckedArgument(i).toNumber(exec); - if (exec->hadException()) - return JSValue::encode(jsUndefined()); - - uint32_t codePoint = static_cast<uint32_t>(codePointAsDouble); - - if (codePoint != codePointAsDouble || codePoint > UCHAR_MAX_VALUE) - return throwVMError(exec, createRangeError(exec, ASCIILiteral("Arguments contain a value that is out of range of code points"))); - - if (U_IS_BMP(codePoint)) - builder.append(static_cast<UChar>(codePoint)); - else { - builder.append(U16_LEAD(codePoint)); - builder.append(U16_TRAIL(codePoint)); - } - } - - return JSValue::encode(jsString(exec, builder.toString())); -} - static EncodedJSValue JSC_HOST_CALL constructWithStringConstructor(ExecState* exec) { JSGlobalObject* globalObject = asInternalFunction(exec->callee())->globalObject(); @@ -127,7 +96,7 @@ static EncodedJSValue JSC_HOST_CALL constructWithStringConstructor(ExecState* ex if (!exec->argumentCount()) return JSValue::encode(StringObject::create(vm, globalObject->stringObjectStructure())); - + return JSValue::encode(StringObject::create(vm, globalObject->stringObjectStructure(), exec->uncheckedArgument(0).toString(exec))); } @@ -137,18 +106,11 @@ ConstructType StringConstructor::getConstructData(JSCell*, ConstructData& constr return ConstructTypeHost; } -JSCell* stringConstructor(ExecState* exec, JSValue argument) -{ - if (argument.isSymbol()) - return jsNontrivialString(exec, asSymbol(argument)->descriptiveString()); - return argument.toString(exec); -} - static EncodedJSValue JSC_HOST_CALL callStringConstructor(ExecState* exec) { if (!exec->argumentCount()) return JSValue::encode(jsEmptyString(exec)); - return JSValue::encode(stringConstructor(exec, exec->uncheckedArgument(0))); + return JSValue::encode(exec->uncheckedArgument(0).toString(exec)); } CallType StringConstructor::getCallData(JSCell*, CallData& callData) |