Skip to content

Commit fda2217

Browse files
committed
Fix debugger to string for class constructors
1 parent 62cb715 commit fda2217

File tree

5 files changed

+16
-10
lines changed

5 files changed

+16
-10
lines changed

lib/Parser/Parse.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8059,6 +8059,7 @@ ParseNodeClass * Parser::ParseClassDecl(BOOL isDeclaration, LPCOLESTR pNameHint,
80598059
pnodeConstructor->hintLength = constructorNameLength;
80608060
pnodeConstructor->hintOffset = constructorShortNameHintOffset;
80618061
pnodeConstructor->pid = pnodeName && pnodeName->pid ? pnodeName->pid : wellKnownPropertyPids.constructor;
8062+
pnodeConstructor->SetHasNonThisStmt();
80628063
pnodeConstructor->SetHasComputedName();
80638064
pnodeConstructor->SetHasHomeObj();
80648065
}

lib/Runtime/Base/FunctionBody.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4635,7 +4635,6 @@ namespace Js
46354635
Output::Print(_u("\n\n Line %3d: "), line + 1);
46364636
// Need to match up cchStartOffset to appropriate cbStartOffset given function's cbStartOffset and cchStartOffset
46374637
size_t utf8SrcStartIdx = utf8::CharacterIndexToByteIndex(source, sourceInfo->GetCbLength(), cchStartOffset, this->m_cbStartOffset, this->m_cchStartOffset);
4638-
46394638
size_t utf8SrcEndIdx = StartOffset() + LengthInBytes();
46404639
char16* utf16Buf = HeapNewArray(char16, utf8SrcEndIdx - utf8SrcStartIdx + 2);
46414640
size_t utf16BufSz = utf8::DecodeUnitsIntoAndNullTerminateNoAdvance(utf16Buf, source + utf8SrcStartIdx, source + utf8SrcEndIdx, utf8::DecodeOptions::doDefault);

lib/Runtime/Library/JavascriptFunction.cpp

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3154,13 +3154,20 @@ void __cdecl _alloca_probe_16()
31543154
}
31553155
else
31563156
{
3157-
charcount_t count = min(DIAG_MAX_FUNCTION_STRING, func->LengthInChars());
31583157
utf8::DecodeOptions options = sourceInfo->IsCesu8() ? utf8::doAllowThreeByteSurrogates : utf8::doDefault;
3159-
LPCUTF8 source = func->GetSource(_u("JavascriptFunction::GetDiagValueString"));
3160-
size_t cbLength = sourceInfo->GetCbLength(_u("JavascriptFunction::GetDiagValueString"));
3161-
size_t cbIndex = utf8::CharacterIndexToByteIndex(source, cbLength, count, options);
3162-
utf8::DecodeUnitsInto(stringBuilder->AllocBufferSpace(count), source, source + cbIndex, options);
3163-
stringBuilder->IncreaseCount(count);
3158+
charcount_t count = func->LengthInChars();
3159+
LPCUTF8 pbStart = func->GetToStringSource(_u("JavascriptFunction::GetDiagValueString"));
3160+
size_t cbLength = func->LengthInBytes();
3161+
PrintOffsets* printOffsets = func->GetPrintOffsets();
3162+
if (printOffsets != nullptr)
3163+
{
3164+
count += 3*(charcount_t)((printOffsets->cbEndPrintOffset - printOffsets->cbStartPrintOffset) - cbLength);
3165+
cbLength = printOffsets->cbEndPrintOffset - printOffsets->cbStartPrintOffset;
3166+
}
3167+
3168+
size_t decodedCount = utf8::DecodeUnitsInto(stringBuilder->AllocBufferSpace(count), pbStart, pbStart + cbLength, options);
3169+
Assert(decodedCount < MaxCharCount);
3170+
stringBuilder->IncreaseCount(min(DIAG_MAX_FUNCTION_STRING, (charcount_t)decodedCount));
31643171
return TRUE;
31653172
}
31663173
}

lib/Runtime/Library/ScriptFunction.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ using namespace Js;
103103
pfuncScript->GetTypeHandler()->EnsureObjectReady(pfuncScript);
104104
}
105105

106-
107106
JS_ETW(EventWriteJSCRIPT_RECYCLER_ALLOCATE_FUNCTION(pfuncScript, EtwTrace::GetFunctionId(functionProxy)));
108107

109108
return pfuncScript;

test/DebuggerCommon/ConsoleScope.js.dbg.baseline

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[
22
{
33
"evaluate": {
4-
"var varProp = 'varProp';let letProp = 'letProp';const constProp = 'constProp';function func() {return 0;};nonVarProp = 'nonVarProp';class class1{foo(){return 0;}};": "function {"
4+
"var varProp = 'varProp';let letProp = 'letProp';const constProp = 'constProp';function func() {return 0;};nonVarProp = 'nonVarProp';class class1{foo(){return 0;}};": "function <large string>"
55
}
66
},
77
{
@@ -21,7 +21,7 @@
2121
},
2222
{
2323
"evaluate": {
24-
"var varProp = 'varProp1';let letProp = 'letProp1';const constProp = 'constProp1';function func() {return 1;};nonVarProp = 'nonVarProp1';class class1{foo(){return 1;}};": "function {"
24+
"var varProp = 'varProp1';let letProp = 'letProp1';const constProp = 'constProp1';function func() {return 1;};nonVarProp = 'nonVarProp1';class class1{foo(){return 1;}};": "function <large string>"
2525
}
2626
},
2727
{

0 commit comments

Comments
 (0)