Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1059)

Unified Diff: runtime/vm/simulator_mips.h

Issue 13407003: Third codegen test passing for simulated MIPS. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/runtime_entry_mips.cc ('k') | runtime/vm/simulator_mips.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/simulator_mips.h
===================================================================
--- runtime/vm/simulator_mips.h (revision 20788)
+++ runtime/vm/simulator_mips.h (working copy)
@@ -20,6 +20,9 @@
namespace dart {
+class Isolate;
+class SimulatorSetjmpBuffer;
+
class Simulator {
public:
static const uword kSimulatorStackUnderflowSize = 64;
@@ -64,6 +67,14 @@
int32_t parameter2,
int32_t parameter3);
+ // Runtime and native call support.
+ enum CallKind {
+ kRuntimeCall,
+ kLeafRuntimeCall,
+ kNativeCall
+ };
+ static uword RedirectExternalReference(uword function, CallKind call_kind);
+
private:
// A pc value used to signal the simulator to stop execution. Generally
// the ra is set to this value on transition from native C code to
@@ -83,6 +94,7 @@
char* stack_;
int icount_;
bool delay_slot_;
+ SimulatorSetjmpBuffer* last_setjmp_buffer_;
// Registered breakpoints.
Instr* break_pc_;
@@ -120,6 +132,8 @@
inline void WriteW(uword addr, int value, Instr* instr);
void DoBranch(Instr* instr, bool taken, bool likely);
+ void DoBreak(Instr *instr);
+
void DecodeSpecial(Instr* instr);
void DecodeSpecial2(Instr* instr);
void DecodeRegImm(Instr* instr);
@@ -128,7 +142,16 @@
void Execute();
void ExecuteDelaySlot();
+ // Longjmp support for exceptions.
+ SimulatorSetjmpBuffer* last_setjmp_buffer() {
+ return last_setjmp_buffer_;
+ }
+ void set_last_setjmp_buffer(SimulatorSetjmpBuffer* buffer) {
+ last_setjmp_buffer_ = buffer;
+ }
+
friend class SimulatorDebugger;
+ friend class SimulatorSetjmpBuffer;
};
} // namespace dart
« no previous file with comments | « runtime/vm/runtime_entry_mips.cc ('k') | runtime/vm/simulator_mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698