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

Unified Diff: runtime/vm/stub_code_arm.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_arm.cc
===================================================================
--- runtime/vm/stub_code_arm.cc (revision 40376)
+++ runtime/vm/stub_code_arm.cc (working copy)
@@ -765,8 +765,8 @@
// Cache the new Context pointer into CTX while executing Dart code.
__ ldr(CTX, Address(R3, VMHandles::kOffsetOfRawPtrInHandle));
- // Load Isolate pointer from Context structure into temporary register R8.
- __ ldr(R8, FieldAddress(CTX, Context::isolate_offset()));
+ // Load Isolate pointer into temporary register R8.
+ __ LoadImmediate(R8, Isolate::CurrentAddress());
Ivan Posva 2014/09/18 17:31:12 On second thought I will add a LoadIsolate() to th
// Save the current VMTag on the stack.
ASSERT(kSavedVMTagSlotFromEntryFp == -25);
@@ -832,8 +832,8 @@
// Get rid of arguments pushed on the stack.
__ AddImmediate(SP, FP, kSavedContextSlotFromEntryFp * kWordSize);
- // Load Isolate pointer from Context structure into CTX. Drop Context.
- __ ldr(CTX, FieldAddress(CTX, Context::isolate_offset()));
+ // Load Isolate pointer into CTX. Drop Context.
+ __ LoadImmediate(CTX, Isolate::CurrentAddress());
// Restore the saved Context pointer into the Isolate structure.
// Uses R4 as a temporary register for this.
@@ -933,10 +933,10 @@
__ str(R1, FieldAddress(R0, Context::num_variables_offset()));
// Setup isolate field.
- // Load Isolate pointer from Context structure into R2.
+ // Load Isolate pointer into R2.
// R0: new object.
// R1: number of context variables.
- __ ldr(R2, FieldAddress(CTX, Context::isolate_offset()));
+ __ LoadImmediate(R2, Isolate::CurrentAddress());
// R2: isolate, not an object.
__ str(R2, FieldAddress(R0, Context::isolate_offset()));
@@ -1004,10 +1004,10 @@
__ orr(R2, R2, Operand(1 << RawObject::kRememberedBit));
__ str(R2, FieldAddress(R0, Object::tags_offset()));
- // Load the isolate out of the context.
+ // Load the isolate.
// Spilled: R1, R2, R3.
// R0: address being stored.
- __ ldr(R1, FieldAddress(CTX, Context::isolate_offset()));
+ __ LoadImmediate(R1, Isolate::CurrentAddress());
// Load the StoreBuffer block out of the isolate. Then load top_ out of the
// StoreBufferBlock and add the address to the pointers_.
@@ -1034,7 +1034,7 @@
// Setup frame, push callee-saved registers.
__ EnterCallRuntimeFrame(0 * kWordSize);
- __ ldr(R0, FieldAddress(CTX, Context::isolate_offset()));
+ __ LoadImmediate(R0, Isolate::CurrentAddress());
__ CallRuntime(kStoreBufferBlockProcessRuntimeEntry, 1);
// Restore callee-saved registers, tear down frame.
__ LeaveCallRuntimeFrame();
@@ -1333,10 +1333,10 @@
}
#endif // DEBUG
- Label stepping, done_stepping;
// Check single stepping.
- __ ldr(R6, FieldAddress(CTX, Context::isolate_offset()));
+ Label stepping, done_stepping;
+ __ LoadImmediate(R6, Isolate::CurrentAddress());
__ ldrb(R6, Address(R6, Isolate::single_step_offset()));
__ CompareImmediate(R6, 0);
__ b(&stepping, NE);
@@ -1557,7 +1557,7 @@
// Check single stepping.
Label stepping, done_stepping;
- __ ldr(R6, FieldAddress(CTX, Context::isolate_offset()));
+ __ LoadImmediate(R6, Isolate::CurrentAddress());
__ ldrb(R6, Address(R6, Isolate::single_step_offset()));
__ CompareImmediate(R6, 0);
__ b(&stepping, NE);
« runtime/vm/isolate.h ('K') | « runtime/vm/isolate.h ('k') | runtime/vm/stub_code_arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698