static String get_current_alias() { DECLARE_THREAD_INFO; FrameInjection *fi; for (fi = info->m_top; fi; fi= fi->getPrev()) { if (fi->isEvalFrame()) { break; } } EvalFrameInjection *efi = static_cast<EvalFrameInjection*>(fi); return (efi) ? efi->getEnv().getCalleeAlias() : String(); }
void eval_set_callee_alias(CStrRef alias) { DECLARE_THREAD_INFO; FrameInjection *fi; for (fi = info->m_top; fi; fi= fi->getPrev()) { if (fi->isEvalFrame()) { break; } } EvalFrameInjection *efi = static_cast<EvalFrameInjection*>(fi); if (efi) efi->getEnv().setCalleeAlias(alias); }
Array CmdVariable::GetLocalVariables(FrameInjection* frame, bool &global) { Array ret; if (!frame || FrameInjection::IsGlobalScope(frame)) { global = true; ret = GetGlobalVariables(); } else { global = false; if (frame->isEvalFrame()) { EvalFrameInjection *eframe = static_cast<EvalFrameInjection*>(frame); ret = eframe->getEnv().getDefinedVariables(); ret.remove("GLOBALS"); } } return ret; }
bool CmdVariable::onServer(DebuggerProxy *proxy) { FrameInjection *frame = ThreadInfo::s_threadInfo->m_top; for (int i = 0; i < m_frame && frame; i++) { frame = frame->getPrev(); } m_global = (!frame || !frame->getPrev()); if (frame) { EvalFrameInjection *eframe = dynamic_cast<EvalFrameInjection*>(frame); if (eframe) { m_variables = eframe->getEnv().getDefinedVariables(); m_variables.remove("GLOBALS"); } } return proxy->send(this); }
bool eval_get_call_info_hook(const CallInfo *&ci, void *&extra, const char *s, int64 hash /* = -1 */) { const Eval::Function *fs = Eval::RequestEvalState::findFunction(s); if (fs) { ci = fs->getCallInfo(); if (extra) { DECLARE_THREAD_INFO; EvalFrameInjection *efi = NULL; for (FrameInjection *fi = info->m_top; fi; fi= fi->getPrev()) { efi = dynamic_cast<EvalFrameInjection*>(fi); if (efi) break; } ASSERT(efi); efi->getEnv().setClosure(extra); } extra = (void*)fs; return true; } return false; }