| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- #include "RuntimeDebugPch.h"
- #ifdef ENABLE_SCRIPT_DEBUGGING
- namespace Js
- {
- BreakpointProbe::BreakpointProbe(DebugDocument* debugDocument, StatementLocation& statement, int breakpointId) :
- debugDocument(debugDocument),
- functionBody(statement.function),
- characterOffset(statement.statement.begin),
- byteOffset(statement.bytecodeSpan.begin),
- breakpointId(breakpointId)
- {
- }
- bool BreakpointProbe::Install(ScriptContext* pScriptContext)
- {
- Assert(this->functionBody);
- return functionBody->InstallProbe(byteOffset);
- }
- bool BreakpointProbe::Uninstall(ScriptContext* pScriptContext)
- {
- Assert(this->functionBody);
- if (this->functionBody)
- {
- Assert(this->debugDocument);
- this->debugDocument->RemoveBreakpointProbe(this);
- return functionBody->UninstallProbe(byteOffset);
- }
- return true;
- }
- bool BreakpointProbe::CanHalt(InterpreterHaltState* pHaltState)
- {
- Assert(this->functionBody);
- FunctionBody* pCurrentFuncBody = pHaltState->GetFunction();
- int offset = pHaltState->GetCurrentOffset();
- if (functionBody == pCurrentFuncBody && byteOffset == offset)
- {
- return true;
- }
- return false;
- }
- void BreakpointProbe::DispatchHalt(InterpreterHaltState* pHaltState)
- {
- Assert(false);
- }
- void BreakpointProbe::CleanupHalt()
- {
- Assert(this->functionBody);
- // Nothing to clean here
- }
- bool BreakpointProbe::Matches(FunctionBody* _pBody, int _characterOffset)
- {
- Assert(this->functionBody);
- return _pBody == functionBody && _characterOffset == characterOffset;
- }
- bool BreakpointProbe::Matches(StatementLocation statement)
- {
- return (this->GetCharacterOffset() == statement.statement.begin) && (this->byteOffset == statement.bytecodeSpan.begin);
- }
- bool BreakpointProbe::Matches(FunctionBody* _pBody, DebugDocument* debugDocument, int byteOffset)
- {
- return (this->functionBody == _pBody) && (this->debugDocument == debugDocument) && (this->byteOffset == byteOffset);
- }
- void BreakpointProbe::GetStatementLocation(StatementLocation * statement)
- {
- statement->bytecodeSpan.begin = this->byteOffset;
- statement->function = this->functionBody;
- statement->statement.begin = this->characterOffset;
- }
- }
- #endif
|