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

Unified Diff: runtime/vm/stub_code_mips.cc

Issue 581703003: VM: Use current isolate as immediate in per-isolate stubs. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: fixed arm64 bug Created 6 years, 3 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/stub_code_mips.cc
===================================================================
--- runtime/vm/stub_code_mips.cc (revision 40376)
+++ runtime/vm/stub_code_mips.cc (working copy)
@@ -874,8 +874,7 @@
// Cache the new Context pointer into CTX while executing Dart code.
__ lw(CTX, Address(A3, VMHandles::kOffsetOfRawPtrInHandle));
- // Load Isolate pointer from Context structure into temporary register R8.
- __ lw(T2, FieldAddress(CTX, Context::isolate_offset()));
+ __ LoadImmediate(T2, Isolate::CurrentAddress());
// Save the current VMTag on the stack.
ASSERT(kSavedVMTagSlotFromEntryFp == -22);
@@ -947,8 +946,8 @@
// Get rid of arguments pushed on the stack.
__ AddImmediate(SP, FP, kSavedContextSlotFromEntryFp * kWordSize);
- // Load Isolate pointer from Context structure into CTX. Drop Context.
- __ lw(CTX, FieldAddress(CTX, Context::isolate_offset()));
+ // Load Isolate pointer into CTX. Drop Context.
+ __ LoadImmediate(CTX, Isolate::CurrentAddress());
// Restore the current VMTag from the stack.
__ lw(T1, Address(SP, 2 * kWordSize));
@@ -1061,11 +1060,10 @@
__ sw(T1, FieldAddress(V0, Context::num_variables_offset()));
// Setup isolate field.
- // Load Isolate pointer from Context structure into R2.
// V0: new object.
// T1: number of context variables.
- __ lw(T2, FieldAddress(CTX, Context::isolate_offset()));
// T2: isolate, not an object.
+ __ LoadImmediate(T2, Isolate::CurrentAddress());
__ sw(T2, FieldAddress(V0, Context::isolate_offset()));
__ LoadImmediate(T7, reinterpret_cast<intptr_t>(Object::null()));
@@ -1143,10 +1141,10 @@
__ ori(T2, T2, Immediate(1 << RawObject::kRememberedBit));
__ sw(T2, FieldAddress(T0, Object::tags_offset()));
- // Load the isolate out of the context.
+ // Load the isolate.
// Spilled: T1, T2, T3.
// T0: Address being stored.
- __ lw(T1, FieldAddress(CTX, Context::isolate_offset()));
+ __ LoadImmediate(T1, Isolate::CurrentAddress());
// Load the StoreBuffer block out of the isolate. Then load top_ out of the
// StoreBufferBlock and add the address to the pointers_.
@@ -1177,7 +1175,7 @@
// Setup frame, push callee-saved registers.
__ EnterCallRuntimeFrame(1 * kWordSize);
- __ lw(A0, FieldAddress(CTX, Context::isolate_offset()));
+ __ LoadImmediate(A0, Isolate::CurrentAddress());
__ CallRuntime(kStoreBufferBlockProcessRuntimeEntry, 1);
__ TraceSimMsg("UpdateStoreBufferStub return");
// Restore callee-saved registers, tear down frame.
@@ -1497,9 +1495,9 @@
#endif // DEBUG
- Label stepping, done_stepping;
// Check single stepping.
- __ lw(T0, FieldAddress(CTX, Context::isolate_offset()));
+ Label stepping, done_stepping;
+ __ LoadImmediate(T0, Isolate::CurrentAddress());
__ lbu(T0, Address(T0, Isolate::single_step_offset()));
__ BranchNotEqual(T0, 0, &stepping);
__ Bind(&done_stepping);
@@ -1755,7 +1753,7 @@
// Check single stepping.
Label stepping, done_stepping;
- __ lw(T0, FieldAddress(CTX, Context::isolate_offset()));
+ __ LoadImmediate(T0, Isolate::CurrentAddress());
__ lbu(T0, Address(T0, Isolate::single_step_offset()));
__ BranchNotEqual(T0, 0, &stepping);
__ Bind(&done_stepping);

Powered by Google App Engine
This is Rietveld 408576698