blob: 8dfc745dfcfd13d6eb1699d0b47f5ff8797f1ee5 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @author Intel, Nikolay A. Sidelnikov
*/
#ifndef _IA32RUNTIMEINTERFACE_H_
#define _IA32RUNTIMEINTERFACE_H_
#include "RuntimeInterface.h"
namespace Jitrino
{
namespace Ia32{
//============================================================================================
// class RuntimeInterface
//============================================================================================
/** class RuntimeInterface is the Ia32 CG implementation of the
::RuntimeInterface interface
It is responsible for runtime operations the JIT (CG in particular) performs:
stack unwinding, root set enumeration, and code patching.
*/
class RuntimeInterface : public ::Jitrino::RuntimeInterface {
public:
virtual void unwindStack(MethodDesc* methodDesc, JitFrameContext* context, bool isFirst) ;
virtual void getGCRootSet(MethodDesc* methodDesc, GCInterface* gcInterface,
const JitFrameContext* context, bool isFirst);
virtual void fixHandlerContext(MethodDesc* methodDesc, JitFrameContext* context, bool isFirst);
virtual void* getAddressOfThis(MethodDesc* methodDesc, const JitFrameContext* context, bool isFirst);
virtual bool isSOEArea(MethodDesc* methodDesc, const ::JitFrameContext* context, bool isFirst);
virtual bool recompiledMethodEvent(MethodDesc * methodDesc, void * data);
virtual bool getBcLocationForNative(MethodDesc* method, POINTER_SIZE_INT native_pc, uint16 *bc_pc);
virtual bool getNativeLocationForBc(MethodDesc* method, uint16 bc_pc, POINTER_SIZE_INT *native_pc);
virtual U_32 getInlineDepth(InlineInfoPtr ptr, U_32 offset);
virtual Method_Handle getInlinedMethod(InlineInfoPtr ptr, U_32 offset, U_32 inline_depth);
virtual uint16 getInlinedBc(InlineInfoPtr ptr, U_32 offset, U_32 inline_depth);
};
}}; // namespace Ia32
#endif //_IA32RUNTIMEINTERFACE_H_