// CodeCache.h: interface for the CCodeCache class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_CODECACHE_H__A8A9FA70_AC1C_49B4_8D42_E778D398DDB3__INCLUDED_)
#define AFX_CODECACHE_H__A8A9FA70_AC1C_49B4_8D42_E778D398DDB3__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "TarmacGlobals.h"

// disable warning about labels being too long in the debugger viewer, this
// doesn't affect the generated code
#pragma warning (disable : 4786)
#include <map>

class CCodeCache  
{
public:
	void invokeRecompiledCode(Context* aContext, uint32 address);
	BOOL recompiledCodeExists(uint32 address);
	void addCodeToCache(uint32 address, NativeChunk* aNativeChunk);
	void testInvoke();
	CCodeCache();
	virtual ~CCodeCache();

private:
	std::map<uint32, NativeChunk*> addressToNativeCode;
};

#endif // !defined(AFX_CODECACHE_H__A8A9FA70_AC1C_49B4_8D42_E778D398DDB3__INCLUDED_)
