diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2010-03-15 12:06:11 (GMT) |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2010-03-15 12:06:11 (GMT) |
commit | 22fd80b88e4d75b65d48403975ff0e7fb77d4ae5 (patch) | |
tree | 4e2d72720f3852d8dcdb6b7eb1ea5c85f6487b36 /src/3rdparty/javascriptcore/JavaScriptCore/jsc.cpp | |
parent | 33c6983a19942c151fa0bcc878b5219e0b641ba9 (diff) | |
parent | 2ee0c797d9bb582073b53cb1f8348abaf2acc0db (diff) | |
download | Qt-22fd80b88e4d75b65d48403975ff0e7fb77d4ae5.zip Qt-22fd80b88e4d75b65d48403975ff0e7fb77d4ae5.tar.gz Qt-22fd80b88e4d75b65d48403975ff0e7fb77d4ae5.tar.bz2 |
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1 into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1: (61 commits)
Fix broken setCollectionFile (creating multiple models instead reusing)
Enable the fast paths when converting to Rgb565
qdoc: ifdefed out all the debug code.
Add missing QtScript API shims
Further fix license whitespace.
Remove NetworkManager test-bed application.
Remove configure test for NetworkManager.
Fix QDir::entryList regression
Add DEFINES to mingw32/windres.exe command line.
Fix up whitespace in license headers.
Fix SetDialogPreference build error on Symbian.
get known wifi networks a more complicated way, but without accessing
Only enable BM by default in QNAM for appropriate platforms.
fix crash on 10.6 with no wifi interface
Fix creation of QNetworkSession.
Make QNetworkConfigurationManager and QNetworkConfiguration threadsafe.
remove qt_winQString2MB() and qt_winMB2QString()
Fix include() path in qimportbase.pri
Fix qmake crash on Windows
Compile
...
Diffstat (limited to 'src/3rdparty/javascriptcore/JavaScriptCore/jsc.cpp')
-rw-r--r-- | src/3rdparty/javascriptcore/JavaScriptCore/jsc.cpp | 91 |
1 files changed, 45 insertions, 46 deletions
diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/jsc.cpp b/src/3rdparty/javascriptcore/JavaScriptCore/jsc.cpp index ee4e393..252fb96 100644 --- a/src/3rdparty/javascriptcore/JavaScriptCore/jsc.cpp +++ b/src/3rdparty/javascriptcore/JavaScriptCore/jsc.cpp @@ -29,6 +29,7 @@ #include "JSArray.h" #include "JSFunction.h" #include "JSLock.h" +#include "JSString.h" #include "PrototypeFunction.h" #include "SamplingTool.h" #include <math.h> @@ -36,7 +37,7 @@ #include <stdlib.h> #include <string.h> -#if !PLATFORM(WIN_OS) +#if !OS(WINDOWS) #include <unistd.h> #endif @@ -53,10 +54,10 @@ #include <signal.h> #endif -#if COMPILER(MSVC) && !PLATFORM(WINCE) +#if COMPILER(MSVC) && !OS(WINCE) #include <crtdbg.h> -#include <windows.h> #include <mmsystem.h> +#include <windows.h> #endif #if PLATFORM(QT) @@ -87,8 +88,8 @@ static JSValue JSC_HOST_CALL functionClearSamplingFlags(ExecState*, JSObject*, J struct Script { bool isFile; - char *argument; - + char* argument; + Script(bool isFile, char *argument) : isFile(isFile) , argument(argument) @@ -173,12 +174,12 @@ GlobalObject::GlobalObject(const Vector<UString>& arguments) JSValue JSC_HOST_CALL functionPrint(ExecState* exec, JSObject*, JSValue, const ArgList& args) { for (unsigned i = 0; i < args.size(); ++i) { - if (i != 0) + if (i) putchar(' '); - + printf("%s", args.at(i).toString(exec).UTF8String().c_str()); } - + putchar('\n'); fflush(stdout); return jsUndefined(); @@ -193,7 +194,7 @@ JSValue JSC_HOST_CALL functionDebug(ExecState* exec, JSObject*, JSValue, const A JSValue JSC_HOST_CALL functionGC(ExecState* exec, JSObject*, JSValue, const ArgList&) { JSLock lock(SilenceAssertionsOnly); - exec->heap()->collect(); + exec->heap()->collectAllGarbage(); return jsUndefined(); } @@ -291,8 +292,18 @@ JSValue JSC_HOST_CALL functionReadline(ExecState* exec, JSObject*, JSValue, cons JSValue JSC_HOST_CALL functionQuit(ExecState* exec, JSObject*, JSValue, const ArgList&) { + // Technically, destroying the heap in the middle of JS execution is a no-no, + // but we want to maintain compatibility with the Mozilla test suite, so + // we pretend that execution has terminated to avoid ASSERTs, then tear down the heap. + exec->globalData().dynamicGlobalObject = 0; + cleanupGlobalData(&exec->globalData()); exit(EXIT_SUCCESS); + +#if COMPILER(MSVC) && OS(WINCE) + // Without this, Visual Studio will complain that this method does not return a value. + return jsUndefined(); +#endif } // Use SEH for Release builds only to get rid of the crash report dialog @@ -312,7 +323,7 @@ int jscmain(int argc, char** argv, JSGlobalData*); int main(int argc, char** argv) { -#if defined(_DEBUG) && PLATFORM(WIN_OS) +#if defined(_DEBUG) && OS(WINDOWS) _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR); @@ -321,7 +332,7 @@ int main(int argc, char** argv) _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE); #endif -#if COMPILER(MSVC) && !PLATFORM(WINCE) +#if COMPILER(MSVC) && !OS(WINCE) timeBeginPeriod(1); #endif @@ -360,11 +371,8 @@ static bool runWithScripts(GlobalObject* globalObject, const Vector<Script>& scr if (dump) BytecodeGenerator::setDumpsGeneratedCode(true); -#if ENABLE(OPCODE_SAMPLING) - Interpreter* interpreter = globalObject->globalData()->interpreter; - interpreter->setSampler(new SamplingTool(interpreter)); - interpreter->sampler()->setup(); -#endif + JSGlobalData* globalData = globalObject->globalData(); + #if ENABLE(SAMPLING_FLAGS) SamplingFlags::start(); #endif @@ -381,9 +389,7 @@ static bool runWithScripts(GlobalObject* globalObject, const Vector<Script>& scr fileName = "[Command Line]"; } -#if ENABLE(SAMPLING_THREAD) - SamplingThread::start(); -#endif + globalData->startSampling(); Completion completion = evaluate(globalObject->globalExec(), globalObject->globalScopeChain(), makeSource(script, fileName)); success = success && completion.complType() != Throw; @@ -394,20 +400,14 @@ static bool runWithScripts(GlobalObject* globalObject, const Vector<Script>& scr printf("End: %s\n", completion.value().toString(globalObject->globalExec()).ascii()); } -#if ENABLE(SAMPLING_THREAD) - SamplingThread::stop(); -#endif - + globalData->stopSampling(); globalObject->globalExec()->clearException(); } #if ENABLE(SAMPLING_FLAGS) SamplingFlags::stop(); #endif -#if ENABLE(OPCODE_SAMPLING) - interpreter->sampler()->dump(globalObject->globalExec()); - delete interpreter->sampler(); -#endif + globalData->dumpSampleData(globalObject->globalExec()); #if ENABLE(SAMPLING_COUNTERS) AbstractSamplingCounter::dump(); #endif @@ -473,30 +473,27 @@ static void parseArguments(int argc, char** argv, Options& options, JSGlobalData int i = 1; for (; i < argc; ++i) { const char* arg = argv[i]; - if (strcmp(arg, "-f") == 0) { + if (!strcmp(arg, "-f")) { if (++i == argc) printUsageStatement(globalData); options.scripts.append(Script(true, argv[i])); continue; } - if (strcmp(arg, "-e") == 0) { + if (!strcmp(arg, "-e")) { if (++i == argc) printUsageStatement(globalData); options.scripts.append(Script(false, argv[i])); continue; } - if (strcmp(arg, "-h") == 0 || strcmp(arg, "--help") == 0) { - printUsageStatement(globalData, true); - } - if (strcmp(arg, "-i") == 0) { + if (!strcmp(arg, "-i")) { options.interactive = true; continue; } - if (strcmp(arg, "-d") == 0) { + if (!strcmp(arg, "-d")) { options.dump = true; continue; } - if (strcmp(arg, "-s") == 0) { + if (!strcmp(arg, "-s")) { #if HAVE(SIGNAL_H) signal(SIGILL, _exit); signal(SIGFPE, _exit); @@ -505,16 +502,18 @@ static void parseArguments(int argc, char** argv, Options& options, JSGlobalData #endif continue; } - if (strcmp(arg, "--") == 0) { + if (!strcmp(arg, "--")) { ++i; break; } + if (!strcmp(arg, "-h") || !strcmp(arg, "--help")) + printUsageStatement(globalData, true); options.scripts.append(Script(true, argv[i])); } - + if (options.scripts.isEmpty()) options.interactive = true; - + for (; i < argc; ++i) options.arguments.append(argv[i]); } @@ -542,20 +541,20 @@ static bool fillBufferWithContentsOfFile(const UString& fileName, Vector<char>& return false; } - size_t buffer_size = 0; - size_t buffer_capacity = 1024; + size_t bufferSize = 0; + size_t bufferCapacity = 1024; - buffer.resize(buffer_capacity); + buffer.resize(bufferCapacity); while (!feof(f) && !ferror(f)) { - buffer_size += fread(buffer.data() + buffer_size, 1, buffer_capacity - buffer_size, f); - if (buffer_size == buffer_capacity) { // guarantees space for trailing '\0' - buffer_capacity *= 2; - buffer.resize(buffer_capacity); + bufferSize += fread(buffer.data() + bufferSize, 1, bufferCapacity - bufferSize, f); + if (bufferSize == bufferCapacity) { // guarantees space for trailing '\0' + bufferCapacity *= 2; + buffer.resize(bufferCapacity); } } fclose(f); - buffer[buffer_size] = '\0'; + buffer[bufferSize] = '\0'; return true; } |