//===-- Expression.h ---------------------------------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#include "lldb/Expression/Expression.h"
#include "lldb/Target/ExecutionContextScope.h"
#include "lldb/Target/Target.h"

using namespace lldb_private;

Expression::Expression (Target &target) :
    m_target_wp (target.shared_from_this()),
    m_jit_start_addr (LLDB_INVALID_ADDRESS),
    m_jit_end_addr (LLDB_INVALID_ADDRESS)
{
    // Can't make any kind of expression without a target.
    assert (m_target_wp.lock());
}

Expression::Expression (ExecutionContextScope &exe_scope) :
    m_target_wp (exe_scope.CalculateTarget()),
    m_jit_start_addr (LLDB_INVALID_ADDRESS),
    m_jit_end_addr (LLDB_INVALID_ADDRESS)
{
    assert (m_target_wp.lock());
}

