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

Unified Diff: runtime/vm/assembler_mips.h

Issue 14076005: Supports FrameLookup vm test on MIPS (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 8 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
Index: runtime/vm/assembler_mips.h
===================================================================
--- runtime/vm/assembler_mips.h (revision 21219)
+++ runtime/vm/assembler_mips.h (working copy)
@@ -169,8 +169,8 @@
// Set up a stub frame so that the stack traversal code can easily identify
// a stub frame.
- void EnterStubFrame();
- void LeaveStubFrame();
+ void EnterStubFrame(bool uses_pp = false);
+ void LeaveStubFrame(bool uses_pp = false);
// Instruction pattern from entrypoint is used in dart frame prologs
// to set up the frame and save a PC which can be used to figure out the
@@ -565,6 +565,24 @@
}
}
+ void AddImmediate(Register rd, int32_t value) {
+ if (Utils::IsInt(kImmBits, value)) {
+ addiu(rd, rd, Immediate(value));
+ } else {
+ LoadImmediate(TMP1, value);
+ addu(rd, rd, TMP1);
+ }
regis 2013/04/10 20:53:00 You could forward to AddImmediate(rd, rd, value).
zra 2013/04/10 21:59:05 Done.
+ }
+
+ void AddImmediate(Register rd, Register rs, int32_t value) {
+ if (Utils::IsInt(kImmBits, value)) {
+ addiu(rd, rs, Immediate(value));
+ } else {
+ LoadImmediate(TMP1, value);
+ addu(rd, rs, TMP1);
+ }
+ }
+
void BranchEqual(Register rd, int32_t value, Label* l) {
LoadImmediate(TMP1, value);
beq(rd, TMP1, l);
@@ -677,8 +695,12 @@
void LoadObject(Register rd, const Object& object);
void PushObject(const Object& object);
+ // Branch if a comparison with a result already in rd satisfies the
+ // Condition c.
+ void BranchOnCondition(Register rd, Label* l, Condition c);
regis 2013/04/10 20:53:00 It would be more natural to have the condition as
+
// Sets register rd to zero if the object is equal to register rn,
- // set to non-zero otherwise.
+ // sets it to non-zero otherwise.
void CompareObject(Register rd, Register rn, const Object& object);
void LoadClassId(Register result, Register object);

Powered by Google App Engine
This is Rietveld 408576698