Title: [122795] trunk/Source/_javascript_Core
Revision
122795
Author
[email protected]
Date
2012-07-16 18:43:56 -0700 (Mon, 16 Jul 2012)

Log Message

Unreviewed, roll out 122790 because it broke the Windows build. I'm not
sure what to do with exported symbols that are predicated on NDEBUG.

* _javascript_Core.vcproj/_javascript_Core/_javascript_Core.def:
* bytecode/CodeBlock.cpp:
(JSC):
* bytecode/CodeBlock.h:
(CodeBlock):
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::generate):
* dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::link):
* interpreter/Interpreter.cpp:
(JSC):
(JSC::Interpreter::dumpRegisters):
(JSC::getCallerInfo):
(JSC::Interpreter::getStackTrace):
(JSC::Interpreter::retrieveCallerFromVMCode):
* interpreter/Interpreter.h:
(Interpreter):
* jsc.cpp:
(GlobalObject::finishCreation):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (122794 => 122795)


--- trunk/Source/_javascript_Core/ChangeLog	2012-07-17 01:39:40 UTC (rev 122794)
+++ trunk/Source/_javascript_Core/ChangeLog	2012-07-17 01:43:56 UTC (rev 122795)
@@ -1,3 +1,28 @@
+2012-07-16  Filip Pizlo  <[email protected]>
+
+        Unreviewed, roll out 122790 because it broke the Windows build. I'm not
+        sure what to do with exported symbols that are predicated on NDEBUG.
+
+        * _javascript_Core.vcproj/_javascript_Core/_javascript_Core.def:
+        * bytecode/CodeBlock.cpp:
+        (JSC):
+        * bytecode/CodeBlock.h:
+        (CodeBlock):
+        * bytecompiler/BytecodeGenerator.cpp:
+        (JSC::BytecodeGenerator::generate):
+        * dfg/DFGJITCompiler.cpp:
+        (JSC::DFG::JITCompiler::link):
+        * interpreter/Interpreter.cpp:
+        (JSC):
+        (JSC::Interpreter::dumpRegisters):
+        (JSC::getCallerInfo):
+        (JSC::Interpreter::getStackTrace):
+        (JSC::Interpreter::retrieveCallerFromVMCode):
+        * interpreter/Interpreter.h:
+        (Interpreter):
+        * jsc.cpp:
+        (GlobalObject::finishCreation):
+
 2012-07-16  Oliver Hunt  <[email protected]>
 
         dumpCallFrame is broken in ToT

Modified: trunk/Source/_javascript_Core/_javascript_Core.vcproj/_javascript_Core/_javascript_Core.def (122794 => 122795)


--- trunk/Source/_javascript_Core/_javascript_Core.vcproj/_javascript_Core/_javascript_Core.def	2012-07-17 01:39:40 UTC (rev 122794)
+++ trunk/Source/_javascript_Core/_javascript_Core.vcproj/_javascript_Core/_javascript_Core.def	2012-07-17 01:43:56 UTC (rev 122795)
@@ -163,7 +163,6 @@
     ?displayName@JSFunction@JSC@@QAE?BVUString@2@PAVExecState@2@@Z
     ?dtoa@WTF@@YAXQADNAA_NAAHAAI@Z
     ?dumpAllOptions@Options@JSC@@SAXPAU_iobuf@@@Z
-    ?dumpCallFrame@Interpreter@JSC@@QAEXPAVExecState@2@@Z
     ?dumpSampleData@JSGlobalData@JSC@@QAEXPAVExecState@2@@Z
     ?empty@StringImpl@WTF@@SAPAV12@XZ
     ?enumerable@PropertyDescriptor@JSC@@QBE_NXZ

Modified: trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp (122794 => 122795)


--- trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp	2012-07-17 01:39:40 UTC (rev 122794)
+++ trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp	2012-07-17 01:43:56 UTC (rev 122795)
@@ -2942,29 +2942,4 @@
     return false;
 }
 
-UString CodeBlock::nameForRegister(int registerNumber)
-{
-    SymbolTable::iterator end = m_symbolTable->end();
-    for (SymbolTable::iterator ptr = m_symbolTable->begin(); ptr != end; ++ptr) {
-        if (ptr->second.getIndex() == registerNumber)
-            return UString(ptr->first);
-    }
-    if (needsActivation() && registerNumber == activationRegister())
-        return "activation";
-    if (registerNumber == thisRegister())
-        return "this";
-    if (usesArguments()) {
-        if (registerNumber == argumentsRegister())
-            return "arguments";
-        if (unmodifiedArgumentsRegister(argumentsRegister()) == registerNumber)
-            return "real arguments";
-    }
-    if (registerNumber < 0) {
-        int argumentPosition = -registerNumber;
-        argumentPosition -= RegisterFile::CallFrameHeaderSize + 1;
-        return String::format("arguments[%3d]", argumentPosition - 1).impl();
-    }
-    return "";
-}
-
 } // namespace JSC

Modified: trunk/Source/_javascript_Core/bytecode/CodeBlock.h (122794 => 122795)


--- trunk/Source/_javascript_Core/bytecode/CodeBlock.h	2012-07-17 01:39:40 UTC (rev 122794)
+++ trunk/Source/_javascript_Core/bytecode/CodeBlock.h	2012-07-17 01:43:56 UTC (rev 122795)
@@ -578,9 +578,7 @@
         void createActivation(CallFrame*);
 
         void clearEvalCache();
-        
-        UString nameForRegister(int registerNumber);
-        
+
         void addPropertyAccessInstruction(unsigned propertyAccessInstruction)
         {
             m_propertyAccessInstructions.append(propertyAccessInstruction);

Modified: trunk/Source/_javascript_Core/bytecompiler/BytecodeGenerator.cpp (122794 => 122795)


--- trunk/Source/_javascript_Core/bytecompiler/BytecodeGenerator.cpp	2012-07-17 01:39:40 UTC (rev 122794)
+++ trunk/Source/_javascript_Core/bytecompiler/BytecodeGenerator.cpp	2012-07-17 01:43:56 UTC (rev 122795)
@@ -193,10 +193,8 @@
     if (s_dumpsGeneratedCode)
         m_codeBlock->dump(m_scopeChain->globalObject->globalExec());
 
-#ifdef NDEBUG
     if ((m_codeType == FunctionCode && !m_codeBlock->needsFullScopeChain() && !m_codeBlock->usesArguments()) || m_codeType == EvalCode)
         symbolTable().clear();
-#endif
 
     m_codeBlock->shrinkToFit(CodeBlock::EarlyShrink);
 

Modified: trunk/Source/_javascript_Core/dfg/DFGJITCompiler.cpp (122794 => 122795)


--- trunk/Source/_javascript_Core/dfg/DFGJITCompiler.cpp	2012-07-17 01:39:40 UTC (rev 122794)
+++ trunk/Source/_javascript_Core/dfg/DFGJITCompiler.cpp	2012-07-17 01:43:56 UTC (rev 122795)
@@ -188,7 +188,6 @@
         CallLinkInfo& info = m_codeBlock->callLinkInfo(i);
         info.callType = m_jsCalls[i].m_callType;
         info.isDFG = true;
-        info.bytecodeIndex = m_jsCalls[i].m_codeOrigin.bytecodeIndex;
         linkBuffer.link(m_jsCalls[i].m_slowCall, FunctionPtr((m_globalData->getCTIStub(info.callType == CallLinkInfo::Construct ? linkConstructThunkGenerator : linkCallThunkGenerator)).code().executableAddress()));
         info.callReturnLocation = linkBuffer.locationOfNearCall(m_jsCalls[i].m_slowCall);
         info.hotPathBegin = linkBuffer.locationOf(m_jsCalls[i].m_targetToCheck);

Modified: trunk/Source/_javascript_Core/interpreter/Interpreter.cpp (122794 => 122795)


--- trunk/Source/_javascript_Core/interpreter/Interpreter.cpp	2012-07-17 01:39:40 UTC (rev 122794)
+++ trunk/Source/_javascript_Core/interpreter/Interpreter.cpp	2012-07-17 01:43:56 UTC (rev 122795)
@@ -77,8 +77,6 @@
 
 namespace JSC {
 
-static CallFrame* getCallerInfo(JSGlobalData*, CallFrame*, int& lineNumber, unsigned& bytecodeOffset);
-
 // Returns the depth of the scope chain within a given call frame.
 static int depth(CodeBlock* codeBlock, ScopeChainNode* sc)
 {
@@ -626,42 +624,34 @@
     CodeBlock* codeBlock = callFrame->codeBlock();
     const Register* it;
     const Register* end;
+    JSValue v;
 
-    it = callFrame->registers() - RegisterFile::CallFrameHeaderSize - callFrame->argumentCountIncludingThis();
-    end = callFrame->registers() - RegisterFile::CallFrameHeaderSize;
-    while (it < end) {
-        JSValue v = it->jsValue();
-        int registerNumber = it - callFrame->registers();
-        UString name = codeBlock->nameForRegister(registerNumber);
+    it = callFrame->registers() - RegisterFile::CallFrameHeaderSize - codeBlock->numParameters();
+    v = (*it).jsValue();
 #if USE(JSVALUE32_64)
-        dataLog("[r% 3d %14s]      | %10p | %-16s 0x%llx \n", registerNumber, name.ascii().data(), it, v.description(), JSValue::encode(v));
+    dataLog("[this]                     | %10p | %-16s 0x%llx \n", it, v.description(), JSValue::encode(v)); ++it;
 #else
-        dataLog("[r% 3d %14s]      | %10p | %-16s %p \n", registerNumber, name.ascii().data(), it, v.description(), JSValue::encode(v));
+    dataLog("[this]                     | %10p | %-16s %p \n", it, v.description(), JSValue::encode(v)); ++it;
 #endif
-        it++;
+    end = it + max(codeBlock->numParameters() - 1, 0); // - 1 to skip "this"
+    if (it != end) {
+        do {
+            v = (*it).jsValue();
+#if USE(JSVALUE32_64)
+            dataLog("[param]                    | %10p | %-16s 0x%llx \n", it, v.description(), JSValue::encode(v));
+#else
+            dataLog("[param]                    | %10p | %-16s %p \n", it, v.description(), JSValue::encode(v));
+#endif
+            ++it;
+        } while (it != end);
     }
-    
     dataLog("-----------------------------------------------------------------------------\n");
-    dataLog("[ArgumentCount]            | %10p | %ld \n", it, callFrame->argumentCount());
-    ++it;
-    dataLog("[CallerFrame]              | %10p | %p \n", it, callFrame->callerFrame());
-    ++it;
-    dataLog("[Callee]                   | %10p | %p \n", it, callFrame->callee());
-    ++it;
-    dataLog("[ScopeChain]               | %10p | %p \n", it, callFrame->scopeChain());
-    ++it;
-#if ENABLE(JIT)
-    AbstractPC pc = callFrame->abstractReturnPC(callFrame->globalData());
-    if (pc.hasJITReturnAddress())
-        dataLog("[ReturnJITPC]              | %10p | %p \n", it, pc.jitReturnAddress().value());
-#endif
-    unsigned bytecodeOffset = 0;
-    int line = 0;
-    getCallerInfo(&callFrame->globalData(), callFrame, line, bytecodeOffset);
-    dataLog("[ReturnVPC]                | %10p | %d (line %d)\n", it, bytecodeOffset, line);
-    ++it;
-    dataLog("[CodeBlock]                | %10p | %p \n", it, callFrame->codeBlock());
-    ++it;
+    dataLog("[CodeBlock]                | %10p | %p \n", it, (*it).codeBlock()); ++it;
+    dataLog("[ScopeChain]               | %10p | %p \n", it, (*it).scopeChain()); ++it;
+    dataLog("[CallerRegisters]          | %10p | %d \n", it, (*it).i()); ++it;
+    dataLog("[ReturnPC]                 | %10p | %p \n", it, (*it).vPC()); ++it;
+    dataLog("[ArgumentCount]            | %10p | %d \n", it, (*it).i()); ++it;
+    dataLog("[Callee]                   | %10p | %p \n", it, (*it).function()); ++it;
     dataLog("-----------------------------------------------------------------------------\n");
 
     int registerCount = 0;
@@ -669,13 +659,11 @@
     end = it + codeBlock->m_numVars;
     if (it != end) {
         do {
-            JSValue v = it->jsValue();
-            int registerNumber = it - callFrame->registers();
-            UString name = codeBlock->nameForRegister(registerNumber);
+            v = (*it).jsValue();
 #if USE(JSVALUE32_64)
-            dataLog("[r% 3d %14s]      | %10p | %-16s 0x%llx \n", registerNumber, name.ascii().data(), it, v.description(), JSValue::encode(v));
+            dataLog("[r%2d]                      | %10p | %-16s 0x%llx \n", registerCount, it, v.description(), JSValue::encode(v));
 #else
-            dataLog("[r% 3d %14s]      | %10p | %-16s %p \n", registerNumber, name.ascii().data(), it, v.description(), JSValue::encode(v));
+            dataLog("[r%2d]                      | %10p | %-16s %p \n", registerCount, it, v.description(), JSValue::encode(v));
 #endif
             ++it;
             ++registerCount;
@@ -686,11 +674,11 @@
     end = it + codeBlock->m_numCalleeRegisters - codeBlock->m_numVars;
     if (it != end) {
         do {
-            JSValue v = (*it).jsValue();
+            v = (*it).jsValue();
 #if USE(JSVALUE32_64)
-            dataLog("[r% 3d]                     | %10p | %-16s 0x%llx \n", registerCount, it, v.description(), JSValue::encode(v));
+            dataLog("[r%2d]                      | %10p | %-16s 0x%llx \n", registerCount, it, v.description(), JSValue::encode(v));
 #else
-            dataLog("[r% 3d]                     | %10p | %-16s %p \n", registerCount, it, v.description(), JSValue::encode(v));
+            dataLog("[r%2d]                      | %10p | %-16s %p \n", registerCount, it, v.description(), JSValue::encode(v));
 #endif
             ++it;
             ++registerCount;
@@ -850,10 +838,10 @@
 #endif
 }
 
-static CallFrame* getCallerInfo(JSGlobalData* globalData, CallFrame* callFrame, int& lineNumber, unsigned& bytecodeOffset)
+static CallFrame* getCallerInfo(JSGlobalData* globalData, CallFrame* callFrame, int& lineNumber)
 {
     UNUSED_PARAM(globalData);
-    bytecodeOffset = 0;
+    unsigned bytecodeOffset = 0;
     lineNumber = -1;
     ASSERT(!callFrame->hasHostCallFrameFlag());
     CallFrame* callerFrame = callFrame->codeBlock() ? callFrame->trueCallerFrame() : callFrame->callerFrame()->removeHostCallFrameFlag();
@@ -985,8 +973,7 @@
             StackFrame s = { Strong<JSObject>(*globalData, callFrame->callee()), StackFrameNativeCode, Strong<ExecutableBase>(), -1, UString()};
             results.append(s);
         }
-        unsigned unusedBytecodeOffset = 0;
-        callFrame = getCallerInfo(globalData, callFrame, line, unusedBytecodeOffset);
+        callFrame = getCallerInfo(globalData, callFrame, line);
     }
 }
 
@@ -5343,8 +5330,7 @@
         return jsNull();
     
     int lineNumber;
-    unsigned bytecodeOffset;
-    CallFrame* callerFrame = getCallerInfo(&callFrame->globalData(), functionCallFrame, lineNumber, bytecodeOffset);
+    CallFrame* callerFrame = getCallerInfo(&callFrame->globalData(), functionCallFrame, lineNumber);
     if (!callerFrame)
         return jsNull();
     JSValue caller = callerFrame->callee();
@@ -5354,7 +5340,7 @@
     // Skip over function bindings.
     ASSERT(caller.isObject());
     while (asObject(caller)->inherits(&JSBoundFunction::s_info)) {
-        callerFrame = getCallerInfo(&callFrame->globalData(), callerFrame, lineNumber, bytecodeOffset);
+        callerFrame = getCallerInfo(&callFrame->globalData(), callerFrame, lineNumber);
         if (!callerFrame)
             return jsNull();
         caller = callerFrame->callee();

Modified: trunk/Source/_javascript_Core/interpreter/Interpreter.h (122794 => 122795)


--- trunk/Source/_javascript_Core/interpreter/Interpreter.h	2012-07-17 01:39:40 UTC (rev 122794)
+++ trunk/Source/_javascript_Core/interpreter/Interpreter.h	2012-07-17 01:43:56 UTC (rev 122795)
@@ -248,11 +248,6 @@
         void dumpSampleData(ExecState* exec);
         void startSampling();
         void stopSampling();
-
-#ifndef NDEBUG
-        JS_EXPORT_PRIVATE void dumpCallFrame(CallFrame*);
-#endif
-
     private:
         enum ExecutionFlag { Normal, InitializeAndReturn };
 
@@ -284,6 +279,7 @@
 
         JSValue privateExecute(ExecutionFlag, RegisterFile*, CallFrame*);
 
+        void dumpCallFrame(CallFrame*);
         void dumpRegisters(CallFrame*);
         
         bool isCallBytecode(Opcode opcode) { return opcode == getOpcode(op_call) || opcode == getOpcode(op_construct) || opcode == getOpcode(op_call_eval); }

Modified: trunk/Source/_javascript_Core/jsc.cpp (122794 => 122795)


--- trunk/Source/_javascript_Core/jsc.cpp	2012-07-17 01:39:40 UTC (rev 122794)
+++ trunk/Source/_javascript_Core/jsc.cpp	2012-07-17 01:43:56 UTC (rev 122795)
@@ -88,7 +88,6 @@
 static EncodedJSValue JSC_HOST_CALL functionGC(ExecState*);
 #ifndef NDEBUG
 static EncodedJSValue JSC_HOST_CALL functionReleaseExecutableMemory(ExecState*);
-static EncodedJSValue JSC_HOST_CALL functionDumpCallFrame(ExecState*);
 #endif
 static EncodedJSValue JSC_HOST_CALL functionVersion(ExecState*);
 static EncodedJSValue JSC_HOST_CALL functionRun(ExecState*);
@@ -195,7 +194,6 @@
         addFunction(globalData, "quit", functionQuit, 0);
         addFunction(globalData, "gc", functionGC, 0);
 #ifndef NDEBUG
-        addFunction(globalData, "dumpCallFrame", functionDumpCallFrame, 0);
         addFunction(globalData, "releaseExecutableMemory", functionReleaseExecutableMemory, 0);
 #endif
         addFunction(globalData, "version", functionVersion, 1);
@@ -283,15 +281,6 @@
     return JSValue::encode(jsUndefined());
 }
 
-#ifndef NDEBUG
-EncodedJSValue JSC_HOST_CALL functionDumpCallFrame(ExecState* exec)
-{
-    if (!exec->callerFrame()->hasHostCallFrameFlag())
-        exec->globalData().interpreter->dumpCallFrame(exec->callerFrame());
-    return JSValue::encode(jsUndefined());
-}
-#endif
-
 EncodedJSValue JSC_HOST_CALL functionDebug(ExecState* exec)
 {
     fprintf(stderr, "--> %s\n", exec->argument(0).toString(exec)->value(exec).utf8().data());
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to