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

Unified Diff: runtime/vm/stub_code_arm.cc

Issue 1314883002: VM: Use constant pool also for leaf runtime calls on x64, arm, arm64 and mips. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: use StubEntry::label directly Created 5 years, 4 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_x64.cc ('k') | runtime/vm/stub_code_arm64.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/stub_code_arm.cc
diff --git a/runtime/vm/stub_code_arm.cc b/runtime/vm/stub_code_arm.cc
index 01f2e34542e441146b2b4ec6592cc9570ac24747..ab56734911c1f712c25c8e54825d3d953e6a9a22 100644
--- a/runtime/vm/stub_code_arm.cc
+++ b/runtime/vm/stub_code_arm.cc
@@ -200,7 +200,7 @@ void StubCode::GenerateCallNativeCFunctionStub(Assembler* assembler) {
__ LoadImmediate(R2, entry);
__ blx(R2);
#else
- __ BranchLink(&NativeEntry::NativeCallWrapperLabel());
+ __ BranchLink(&NativeEntry::NativeCallWrapperLabel(), kNotPatchable);
#endif
// Mark that the isolate is executing Dart code.
@@ -427,6 +427,8 @@ static void GenerateDeoptimizationSequence(Assembler* assembler,
__ mov(FP, Operand(SP));
__ Push(PP);
+ __ LoadPoolPointer();
+
// Now that IP holding the return address has been written to the stack,
// we can clobber it with 0 to write the null PC marker.
__ mov(IP, Operand(0));
@@ -469,9 +471,7 @@ static void GenerateDeoptimizationSequence(Assembler* assembler,
// DeoptimizeFillFrame expects a Dart frame, i.e. EnterDartFrame(0), but there
// is no need to set the correct PC marker or load PP, since they get patched.
- __ mov(IP, Operand(LR));
- __ mov(LR, Operand(0));
- __ EnterFrame((1 << PP) | (1 << FP) | (1 << IP) | (1 << LR), 0);
+ __ EnterStubFrame();
__ mov(R0, Operand(FP)); // Get last FP address.
if (preserve_result) {
__ Push(R1); // Preserve result as first local.
@@ -483,7 +483,7 @@ static void GenerateDeoptimizationSequence(Assembler* assembler,
__ ldr(R1, Address(FP, kFirstLocalSlotFromFp * kWordSize));
}
// Code above cannot cause GC.
- __ LeaveDartFrame();
+ __ LeaveStubFrame();
// Frame is fully rewritten at this point and it is safe to perform a GC.
// Materialize any objects that were deferred by FillFrame because they
« no previous file with comments | « runtime/vm/runtime_entry_x64.cc ('k') | runtime/vm/stub_code_arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698