-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCertainMode.h
47 lines (32 loc) · 1.44 KB
/
CertainMode.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#ifndef CERTAINMODE_H
#define CERTAINMODE_H
#include "Mode.h"
class Message;
class CertainMode : public Mode {
typedef Mode Base;
public:
CertainMode();
const char* tag() override;
void step() override;
void before_signal_exception(Class *exception_class) override;
void* do_execute_method(Object* target_object, MethodBlock *mb, std::vector<uintptr_t>& jargs, DummyFrame* dummy) override;
void send_msg(Message* msg) override;
Frame* push_frame(Object* object, MethodBlock* new_mb, uintptr_t* args,
SpmtThread* caller, CodePntr caller_pc, Frame* caller_frame, uintptr_t* caller_sp,
bool is_top) override;
void pop_frame(Frame* frame) override;
private:
void do_invoke_method(Object* target_object, MethodBlock* new_mb) override;
void do_method_return(int len) override;
void do_get_field(Object* obj, FieldBlock* fb, uintptr_t* addr, int size, bool is_static = false) override;
void do_put_field(Object* obj, FieldBlock* fb, uintptr_t* addr, int size, bool is_static = false) override;
void do_array_load(Object* array, int index, int type_size) override;
void do_array_store(Object* array, int index, int type_size) override;
uint32_t mode_read(uint32_t* addr) override;
void mode_write(uint32_t* addr, uint32_t value) override;
void do_spec_barrier() override;
};
inline
const char*
CertainMode::tag() { return "(C)"; }
#endif // CERTAINMODE_H