Changeset 174216 in webkit
- Timestamp:
- Oct 2, 2014 8:15:03 AM (10 years ago)
- Location:
- trunk/Source
- Files:
-
- 26 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r174188 r174216 1 2014-10-02 Mark Lam <mark.lam@apple.com> 2 3 Fixed the Inspector to be able to properly distinguish between scope types. 4 <https://webkit.org/b/137279> 5 6 Reviewed by Geoffrey Garen. 7 8 The pre-existing code incorrectly labels Catch Scopes and Function Name Scopes 9 as With Scopes. This patch will fix this. 10 11 * bytecode/BytecodeList.json: 12 * bytecompiler/BytecodeGenerator.cpp: 13 (JSC::BytecodeGenerator::emitPushFunctionNameScope): 14 (JSC::BytecodeGenerator::emitPushCatchScope): 15 - These now passes stores the desired JSNameScope::Type in a bytecode operand. 16 * debugger/DebuggerScope.cpp: 17 (JSC::DebuggerScope::isCatchScope): 18 (JSC::DebuggerScope::isFunctionNameScope): 19 - Added queries to be able to explicitly test if the scope is a CatchScope 20 or FunctionNameScope. The FunctionNameScope is the case where the 21 NameScope is used to capture the function name of a function expression. 22 * debugger/DebuggerScope.h: 23 * inspector/InjectedScriptSource.js: 24 * inspector/JSJavaScriptCallFrame.cpp: 25 (Inspector::JSJavaScriptCallFrame::scopeType): 26 * inspector/JSJavaScriptCallFrame.h: 27 * inspector/JSJavaScriptCallFramePrototype.cpp: 28 (Inspector::JSJavaScriptCallFramePrototype::finishCreation): 29 (Inspector::jsJavaScriptCallFrameConstantFUNCTION_NAME_SCOPE): 30 * inspector/protocol/Debugger.json: 31 * jit/CCallHelpers.h: 32 (JSC::CCallHelpers::setupArgumentsWithExecState): 33 * jit/JIT.h: 34 * jit/JITInlines.h: 35 (JSC::JIT::callOperation): 36 * jit/JITOpcodes.cpp: 37 (JSC::JIT::emit_op_push_name_scope): 38 * jit/JITOpcodes32_64.cpp: 39 (JSC::JIT::emit_op_push_name_scope): 40 * jit/JITOperations.cpp: 41 * jit/JITOperations.h: 42 * llint/LLIntSlowPaths.cpp: 43 (JSC::LLInt::LLINT_SLOW_PATH_DECL): 44 * llint/LowLevelInterpreter.asm: 45 * runtime/JSFunction.cpp: 46 (JSC::JSFunction::addNameScopeIfNeeded): 47 * runtime/JSNameScope.h: 48 (JSC::JSNameScope::create): 49 (JSC::JSNameScope::isFunctionNameScope): 50 (JSC::JSNameScope::isCatchScope): 51 (JSC::JSNameScope::JSNameScope): 52 - Now stores the JSNameScope::Type in a field. 53 1 54 2014-10-01 Commit Queue <commit-queue@webkit.org> 2 55 -
trunk/Source/JavaScriptCore/bytecode/BytecodeList.json
r173517 r174216 113 113 { "name" : "op_push_with_scope", "length" : 2 }, 114 114 { "name" : "op_pop_scope", "length" : 1 }, 115 { "name" : "op_push_name_scope", "length" : 4},115 { "name" : "op_push_name_scope", "length" : 5 }, 116 116 { "name" : "op_catch", "length" : 2 }, 117 117 { "name" : "op_throw", "length" : 2 }, -
trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp
r173517 r174216 2295 2295 instructions().append(value->index()); 2296 2296 instructions().append(attributes); 2297 instructions().append(JSNameScope::FunctionNameScope); 2297 2298 } 2298 2299 … … 2308 2309 instructions().append(value->index()); 2309 2310 instructions().append(attributes); 2311 instructions().append(JSNameScope::CatchScope); 2310 2312 } 2311 2313 -
trunk/Source/JavaScriptCore/debugger/DebuggerScope.cpp
r173896 r174216 29 29 #include "JSLexicalEnvironment.h" 30 30 #include "JSCInlines.h" 31 #include "JSNameScope.h" 31 32 #include "JSWithScope.h" 32 33 … … 155 156 } 156 157 158 bool DebuggerScope::isCatchScope() const 159 { 160 return m_scope->isNameScopeObject() && reinterpret_cast<JSNameScope*>(m_scope.get())->isCatchScope(); 161 } 162 163 bool DebuggerScope::isFunctionNameScope() const 164 { 165 return m_scope->isNameScopeObject() && reinterpret_cast<JSNameScope*>(m_scope.get())->isFunctionNameScope(); 166 } 167 157 168 bool DebuggerScope::isWithScope() const 158 169 { -
trunk/Source/JavaScriptCore/debugger/DebuggerScope.h
r173100 r174216 85 85 bool isValid() const { return !!m_scope; } 86 86 87 bool isCatchScope() const; 88 bool isFunctionNameScope() const; 87 89 bool isWithScope() const; 88 90 bool isGlobalScope() const; -
trunk/Source/JavaScriptCore/inspector/InjectedScriptSource.js
r166971 r174216 1 1 /* 2 * Copyright (C) 2007 Apple Inc. All rights reserved.2 * Copyright (C) 2007, 2014 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 1019 1019 const CLOSURE_SCOPE = 3; 1020 1020 const CATCH_SCOPE = 4; 1021 const FUNCTION_NAME_SCOPE = 5; 1021 1022 1022 1023 /** @type {!Object.<number, string>} */ … … 1027 1028 scopeTypeNames[CLOSURE_SCOPE] = "closure"; 1028 1029 scopeTypeNames[CATCH_SCOPE] = "catch"; 1030 scopeTypeNames[FUNCTION_NAME_SCOPE] = "functionName"; 1029 1031 1030 1032 return { -
trunk/Source/JavaScriptCore/inspector/JSJavaScriptCallFrame.cpp
r173410 r174216 112 112 113 113 if (!index) { 114 if (scope->isCatchScope()) 115 return jsNumber(JSJavaScriptCallFrame::CATCH_SCOPE); 116 if (scope->isFunctionNameScope()) 117 return jsNumber(JSJavaScriptCallFrame::FUNCTION_NAME_SCOPE); 114 118 if (scope->isWithScope()) 115 119 return jsNumber(JSJavaScriptCallFrame::WITH_SCOPE); … … 118 122 return jsNumber(JSJavaScriptCallFrame::GLOBAL_SCOPE); 119 123 } 120 // FIXME: We should be identifying and returning CATCH_SCOPE appropriately.121 124 ASSERT(scope->isFunctionOrEvalScope()); 122 125 return jsNumber(JSJavaScriptCallFrame::CLOSURE_SCOPE); -
trunk/Source/JavaScriptCore/inspector/JSJavaScriptCallFrame.h
r162970 r174216 78 78 static const unsigned short CLOSURE_SCOPE = 3; 79 79 static const unsigned short CATCH_SCOPE = 4; 80 static const unsigned short FUNCTION_NAME_SCOPE = 5; 80 81 81 82 protected: -
trunk/Source/JavaScriptCore/inspector/JSJavaScriptCallFramePrototype.cpp
r171824 r174216 60 60 static EncodedJSValue JSC_HOST_CALL jsJavaScriptCallFrameConstantCLOSURE_SCOPE(ExecState*); 61 61 static EncodedJSValue JSC_HOST_CALL jsJavaScriptCallFrameConstantCATCH_SCOPE(ExecState*); 62 static EncodedJSValue JSC_HOST_CALL jsJavaScriptCallFrameConstantFUNCTION_NAME_SCOPE(ExecState*); 62 63 63 64 const ClassInfo JSJavaScriptCallFramePrototype::s_info = { "JavaScriptCallFrame", &Base::s_info, 0, CREATE_METHOD_TABLE(JSJavaScriptCallFramePrototype) }; … … 95 96 JSC_NATIVE_NON_INDEX_ACCESSOR("CLOSURE_SCOPE", jsJavaScriptCallFrameConstantCLOSURE_SCOPE, DontEnum | Accessor); 96 97 JSC_NATIVE_NON_INDEX_ACCESSOR("CATCH_SCOPE", jsJavaScriptCallFrameConstantCATCH_SCOPE, DontEnum | Accessor); 98 JSC_NATIVE_NON_INDEX_ACCESSOR("FUNCTION_NAME_SCOPE", jsJavaScriptCallFrameConstantFUNCTION_NAME_SCOPE, DontEnum | Accessor); 97 99 } 98 100 … … 232 234 } 233 235 236 EncodedJSValue JSC_HOST_CALL jsJavaScriptCallFrameConstantFUNCTION_NAME_SCOPE(ExecState*) 237 { 238 return JSValue::encode(jsNumber(JSJavaScriptCallFrame::FUNCTION_NAME_SCOPE)); 239 } 240 234 241 } // namespace Inspector 235 242 -
trunk/Source/JavaScriptCore/inspector/protocol/Debugger.json
r163477 r174216 81 81 "type": "object", 82 82 "properties": [ 83 { "name": "type", "type": "string", "enum": ["global", "local", "with", "closure", "catch" ], "description": "Scope type." },83 { "name": "type", "type": "string", "enum": ["global", "local", "with", "closure", "catch", "functionName"], "description": "Scope type." }, 84 84 { "name": "object", "$ref": "Runtime.RemoteObject", "description": "Object representing the scope. For <code>global</code> and <code>with</code> scopes it represents the actual object; for the rest of the scopes, it is artificial transient object enumerating scope variables as its properties." } 85 85 ], -
trunk/Source/JavaScriptCore/jit/CCallHelpers.h
r173069 r174216 473 473 addCallArgument(arg3); 474 474 addCallArgument(arg4); 475 } 476 477 ALWAYS_INLINE void setupArgumentsWithExecState(TrustedImmPtr arg1, GPRReg arg2, GPRReg arg3, TrustedImm32 arg4, TrustedImm32 arg5) 478 { 479 resetCallArguments(); 480 addCallArgument(GPRInfo::callFrameRegister); 481 addCallArgument(arg1); 482 addCallArgument(arg2); 483 addCallArgument(arg3); 484 addCallArgument(arg4); 485 addCallArgument(arg5); 475 486 } 476 487 … … 1286 1297 } 1287 1298 1299 #if CPU(X86_64) || CPU(ARM64) 1300 ALWAYS_INLINE void setupArgumentsWithExecState(TrustedImmPtr arg1, GPRReg arg2, TrustedImm32 arg3, TrustedImm32 arg4) 1301 { 1302 move(arg2, GPRInfo::argumentGPR2); // In case arg2 is argumentGPR1. 1303 move(arg1, GPRInfo::argumentGPR1); 1304 move(arg3, GPRInfo::argumentGPR3); 1305 move(arg4, GPRInfo::argumentGPR4); 1306 move(GPRInfo::callFrameRegister, GPRInfo::argumentGPR0); 1307 } 1308 #endif 1309 1288 1310 ALWAYS_INLINE void setupArgumentsWithExecState(TrustedImmPtr arg1, GPRReg arg2, TrustedImmPtr arg3) 1289 1311 { … … 1365 1387 } 1366 1388 1389 ALWAYS_INLINE void setupArgumentsWithExecState(TrustedImmPtr arg1, GPRReg arg2, GPRReg arg3, TrustedImm32 arg4, TrustedImm32 arg5) 1390 { 1391 poke(arg5, POKE_ARGUMENT_OFFSET + 1); 1392 poke(arg4, POKE_ARGUMENT_OFFSET); 1393 setupArgumentsWithExecState(arg1, arg2, arg3); 1394 } 1395 1367 1396 ALWAYS_INLINE void setupArgumentsWithExecState(TrustedImmPtr arg1, GPRReg arg2, GPRReg arg3, TrustedImm32 arg4, TrustedImmPtr arg5) 1368 1397 { … … 1646 1675 } 1647 1676 1677 ALWAYS_INLINE void setupArgumentsWithExecState(TrustedImmPtr arg1, GPRReg arg2, GPRReg arg3, TrustedImm32 arg4, TrustedImm32 arg5) 1678 { 1679 setupTwoStubArgsGPR<GPRInfo::argumentGPR2, GPRInfo::argumentGPR3>(arg2, arg3); 1680 move(arg1, GPRInfo::argumentGPR1); 1681 move(arg4, GPRInfo::argumentGPR4); 1682 move(arg5, GPRInfo::argumentGPR5); 1683 move(GPRInfo::callFrameRegister, GPRInfo::argumentGPR0); 1684 } 1685 1648 1686 ALWAYS_INLINE void setupArgumentsWithExecState(GPRReg arg1, GPRReg arg2, GPRReg arg3, TrustedImm32 arg4) 1649 1687 { -
trunk/Source/JavaScriptCore/jit/JIT.h
r173517 r174216 720 720 MacroAssembler::Call callOperation(V_JITOperation_ECICC, RegisterID, const Identifier*, RegisterID, RegisterID); 721 721 MacroAssembler::Call callOperation(J_JITOperation_EE, RegisterID); 722 MacroAssembler::Call callOperation(V_JITOperation_EIdJZ , const Identifier*, RegisterID, int32_t);722 MacroAssembler::Call callOperation(V_JITOperation_EIdJZZ, const Identifier*, RegisterID, int32_t, int32_t); 723 723 MacroAssembler::Call callOperation(V_JITOperation_EJ, RegisterID); 724 724 #if USE(JSVALUE64) … … 752 752 MacroAssembler::Call callOperation(S_JITOperation_EJ, RegisterID, RegisterID); 753 753 MacroAssembler::Call callOperation(S_JITOperation_EJJ, RegisterID, RegisterID, RegisterID, RegisterID); 754 MacroAssembler::Call callOperation(V_JITOperation_EIdJZ , const Identifier*, RegisterID, RegisterID, int32_t);754 MacroAssembler::Call callOperation(V_JITOperation_EIdJZZ, const Identifier*, RegisterID, RegisterID, int32_t, int32_t); 755 755 MacroAssembler::Call callOperation(V_JITOperation_EJ, RegisterID, RegisterID); 756 756 MacroAssembler::Call callOperation(V_JITOperation_EJJJ, RegisterID, RegisterID, RegisterID, RegisterID, RegisterID, RegisterID); -
trunk/Source/JavaScriptCore/jit/JITInlines.h
r173282 r174216 442 442 } 443 443 444 ALWAYS_INLINE MacroAssembler::Call JIT::callOperation(V_JITOperation_EIdJZ operation, const Identifier* identOp1, RegisterID regOp2, int32_t op3)445 { 446 setupArgumentsWithExecState(TrustedImmPtr(identOp1), regOp2, TrustedImm32(op3) );444 ALWAYS_INLINE MacroAssembler::Call JIT::callOperation(V_JITOperation_EIdJZZ operation, const Identifier* identOp1, RegisterID regOp2, int32_t op3, int32_t op4) 445 { 446 setupArgumentsWithExecState(TrustedImmPtr(identOp1), regOp2, TrustedImm32(op3), TrustedImm32(op4)); 447 447 return appendCallWithExceptionCheck(operation); 448 448 } … … 576 576 } 577 577 578 ALWAYS_INLINE MacroAssembler::Call JIT::callOperation(V_JITOperation_EIdJZ operation, const Identifier* identOp1, RegisterID regOp2Tag, RegisterID regOp2Payload, int32_t op3)579 { 580 setupArgumentsWithExecState(TrustedImmPtr(identOp1), regOp2Payload, regOp2Tag, TrustedImm32(op3) );578 ALWAYS_INLINE MacroAssembler::Call JIT::callOperation(V_JITOperation_EIdJZZ operation, const Identifier* identOp1, RegisterID regOp2Tag, RegisterID regOp2Payload, int32_t op3, int32_t op4) 579 { 580 setupArgumentsWithExecState(TrustedImmPtr(identOp1), regOp2Payload, regOp2Tag, TrustedImm32(op3), TrustedImm32(op4)); 581 581 return appendCallWithExceptionCheck(operation); 582 582 } -
trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp
r173517 r174216 526 526 { 527 527 emitGetVirtualRegister(currentInstruction[2].u.operand, regT0); 528 callOperation(operationPushNameScope, &m_codeBlock->identifier(currentInstruction[1].u.operand), regT0, currentInstruction[3].u.operand );528 callOperation(operationPushNameScope, &m_codeBlock->identifier(currentInstruction[1].u.operand), regT0, currentInstruction[3].u.operand, currentInstruction[4].u.operand); 529 529 } 530 530 -
trunk/Source/JavaScriptCore/jit/JITOpcodes32_64.cpp
r173517 r174216 806 806 { 807 807 emitLoad(currentInstruction[2].u.operand, regT1, regT0); 808 callOperation(operationPushNameScope, &m_codeBlock->identifier(currentInstruction[1].u.operand), regT1, regT0, currentInstruction[3].u.operand );808 callOperation(operationPushNameScope, &m_codeBlock->identifier(currentInstruction[1].u.operand), regT1, regT0, currentInstruction[3].u.operand, currentInstruction[4].u.operand); 809 809 } 810 810 -
trunk/Source/JavaScriptCore/jit/JITOperations.cpp
r173517 r174216 1309 1309 #endif 1310 1310 1311 void JIT_OPERATION operationPushNameScope(ExecState* exec, Identifier* identifier, EncodedJSValue encodedValue, int32_t attibutes) 1312 { 1313 VM& vm = exec->vm(); 1314 NativeCallFrameTracer tracer(&vm, exec); 1315 1316 JSNameScope* scope = JSNameScope::create(exec, *identifier, JSValue::decode(encodedValue), attibutes); 1311 void JIT_OPERATION operationPushNameScope(ExecState* exec, Identifier* identifier, EncodedJSValue encodedValue, int32_t attibutes, int32_t type) 1312 { 1313 VM& vm = exec->vm(); 1314 NativeCallFrameTracer tracer(&vm, exec); 1315 1316 JSNameScope::Type scopeType = static_cast<JSNameScope::Type>(type); 1317 JSNameScope* scope = JSNameScope::create(exec, *identifier, JSValue::decode(encodedValue), attibutes, scopeType); 1317 1318 1318 1319 exec->setScope(scope); -
trunk/Source/JavaScriptCore/jit/JITOperations.h
r173517 r174216 165 165 typedef void JIT_OPERATION (*V_JITOperation_ECZ)(ExecState*, JSCell*, int32_t); 166 166 typedef void JIT_OPERATION (*V_JITOperation_ECC)(ExecState*, JSCell*, JSCell*); 167 typedef void JIT_OPERATION (*V_JITOperation_EIdJZ )(ExecState*, Identifier*, EncodedJSValue, int32_t);167 typedef void JIT_OPERATION (*V_JITOperation_EIdJZZ)(ExecState*, Identifier*, EncodedJSValue, int32_t, int32_t); 168 168 typedef void JIT_OPERATION (*V_JITOperation_EJ)(ExecState*, EncodedJSValue); 169 169 typedef void JIT_OPERATION (*V_JITOperation_EJCI)(ExecState*, EncodedJSValue, JSCell*, StringImpl*); … … 278 278 void JIT_OPERATION operationPutGetterSetter(ExecState*, JSCell*, Identifier*, JSCell*, JSCell*) WTF_INTERNAL; 279 279 #endif 280 void JIT_OPERATION operationPushNameScope(ExecState*, Identifier*, EncodedJSValue, int32_t ) WTF_INTERNAL;280 void JIT_OPERATION operationPushNameScope(ExecState*, Identifier*, EncodedJSValue, int32_t, int32_t) WTF_INTERNAL; 281 281 void JIT_OPERATION operationPushWithScope(ExecState*, EncodedJSValue) WTF_INTERNAL; 282 282 void JIT_OPERATION operationPopScope(ExecState*) WTF_INTERNAL; -
trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp
r173517 r174216 1301 1301 LLINT_BEGIN(); 1302 1302 CodeBlock* codeBlock = exec->codeBlock(); 1303 JSNameScope* scope = JSNameScope::create(exec, codeBlock->identifier(pc[1].u.operand), LLINT_OP(2).jsValue(), pc[3].u.operand); 1303 JSNameScope::Type type = static_cast<JSNameScope::Type>(pc[4].u.operand); 1304 JSNameScope* scope = JSNameScope::create(exec, codeBlock->identifier(pc[1].u.operand), LLINT_OP(2).jsValue(), pc[3].u.operand, type); 1304 1305 exec->setScope(scope); 1305 1306 LLINT_END(); -
trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm
r173886 r174216 1247 1247 traceExecution() 1248 1248 callSlowPath(_llint_slow_path_push_name_scope) 1249 dispatch( 4)1249 dispatch(5) 1250 1250 1251 1251 -
trunk/Source/JavaScriptCore/runtime/JSFunction.cpp
r173600 r174216 117 117 if (!functionNameScopeIsDynamic(executable->usesEval(), executable->isStrictMode())) 118 118 return; 119 setScope(vm, JSNameScope::create(vm, scope()->globalObject(), executable->name(), this, ReadOnly | DontDelete, scope() ));119 setScope(vm, JSNameScope::create(vm, scope()->globalObject(), executable->name(), this, ReadOnly | DontDelete, scope(), JSNameScope::FunctionNameScope)); 120 120 } 121 121 -
trunk/Source/JavaScriptCore/runtime/JSNameScope.h
r173490 r174216 37 37 typedef JSEnvironmentRecord Base; 38 38 39 static JSNameScope* create(ExecState* exec, const Identifier& identifier, JSValue value, unsigned attributes) 39 enum Type { 40 CatchScope, 41 FunctionNameScope 42 }; 43 44 static JSNameScope* create(ExecState* exec, const Identifier& identifier, JSValue value, unsigned attributes, Type type) 40 45 { 41 46 VM& vm = exec->vm(); 42 JSNameScope* scopeObject = new (NotNull, allocateCell<JSNameScope>(vm.heap)) JSNameScope(vm, exec->lexicalGlobalObject(), exec->scope() );47 JSNameScope* scopeObject = new (NotNull, allocateCell<JSNameScope>(vm.heap)) JSNameScope(vm, exec->lexicalGlobalObject(), exec->scope(), type); 43 48 scopeObject->finishCreation(vm, identifier, value, attributes); 44 49 return scopeObject; 45 50 } 46 51 47 static JSNameScope* create(VM& vm, JSGlobalObject* globalObject, const Identifier& identifier, JSValue value, unsigned attributes, JSScope* next )52 static JSNameScope* create(VM& vm, JSGlobalObject* globalObject, const Identifier& identifier, JSValue value, unsigned attributes, JSScope* next, Type type) 48 53 { 49 JSNameScope* scopeObject = new (NotNull, allocateCell<JSNameScope>(vm.heap)) JSNameScope(vm, globalObject, next );54 JSNameScope* scopeObject = new (NotNull, allocateCell<JSNameScope>(vm.heap)) JSNameScope(vm, globalObject, next, type); 50 55 scopeObject->finishCreation(vm, identifier, value, attributes); 51 56 return scopeObject; … … 61 66 DECLARE_INFO; 62 67 68 bool isFunctionNameScope() { return m_type == FunctionNameScope; } 69 bool isCatchScope() { return m_type == CatchScope; } 70 63 71 protected: 64 72 void finishCreation(VM& vm, const Identifier& identifier, JSValue value, unsigned attributes) … … 72 80 73 81 private: 74 JSNameScope(VM& vm, JSGlobalObject* globalObject, JSScope* next )82 JSNameScope(VM& vm, JSGlobalObject* globalObject, JSScope* next, Type type) 75 83 : Base( 76 84 vm, … … 79 87 next 80 88 ) 89 , m_type(type) 81 90 { 82 91 } 83 92 84 93 WriteBarrier<Unknown> m_registerStore; 94 Type m_type; 85 95 }; 86 96 -
trunk/Source/WebInspectorUI/ChangeLog
r174207 r174216 1 2014-10-02 Mark Lam <mark.lam@apple.com> 2 3 Fixed the Inspector to be able to properly distinguish between scope types. 4 <https://webkit.org/b/137279> 5 6 Reviewed by Geoffrey Garen and Joseph Pecoraro. 7 8 * Localizations/en.lproj/localizedStrings.js: 9 * UserInterface/Controllers/DebuggerManager.js: 10 * UserInterface/Models/ScopeChainNode.js: 11 * UserInterface/Views/ScopeChainDetailsSidebarPanel.js: 12 - Added handling of the FunctionNameScope case. 13 1 14 2014-10-02 Andres Gomez <agomez@igalia.com> 2 15 -
trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
r173929 r174216 215 215 localizedStrings["Full URL"] = "Full URL"; 216 216 localizedStrings["Function"] = "Function"; 217 localizedStrings["Function Name Variable"] = "Function Name Variable"; 217 218 localizedStrings["Global Variables"] = "Global Variables"; 218 219 localizedStrings["Grammar"] = "Grammar"; -
trunk/Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js
r172412 r174216 573 573 type = WebInspector.ScopeChainNode.Type.Catch; 574 574 break; 575 case "functionName": 576 type = WebInspector.ScopeChainNode.Type.FunctionName; 577 break; 575 578 default: 576 579 console.error("Unknown type: " + payload.type); -
trunk/Source/WebInspectorUI/UserInterface/Models/ScopeChainNode.js
r164543 r174216 43 43 With: "scope-chain-type-with", 44 44 Closure: "scope-chain-type-closure", 45 Catch: "scope-chain-type-catch" 45 Catch: "scope-chain-type-catch", 46 FunctionName: "scope-chain-type-functionName" 46 47 }; 47 48 -
trunk/Source/WebInspectorUI/UserInterface/Views/ScopeChainDetailsSidebarPanel.js
r173436 r174216 122 122 break; 123 123 124 case WebInspector.ScopeChainNode.Type.FunctionName: 125 title = WebInspector.UIString("Function Name Variable"); 126 dontHighlightNonEnumerableProperties = true; 127 collapsedByDefault = true; 128 break; 129 124 130 case WebInspector.ScopeChainNode.Type.With: 125 131 title = WebInspector.UIString("With Object Properties");
Note: See TracChangeset
for help on using the changeset viewer.