Index: runtime/vm/stub_code_arm64.cc |
diff --git a/runtime/vm/stub_code_arm64.cc b/runtime/vm/stub_code_arm64.cc |
index fac4ef6be683ebee723a34bcc10a305c0fb1ba7e..bc582e5f9f349be4d416b2c63485bb9b580713c8 100644 |
--- a/runtime/vm/stub_code_arm64.cc |
+++ b/runtime/vm/stub_code_arm64.cc |
@@ -123,19 +123,16 @@ void StubCode::GenerateCallToRuntimeStub(Assembler* assembler) { |
__ ret(); |
} |
- |
// Print the stop message. |
DEFINE_LEAF_RUNTIME_ENTRY(void, PrintStopMessage, 1, const char* message) { |
OS::Print("Stop message: %s\n", message); |
} |
END_LEAF_RUNTIME_ENTRY |
- |
void StubCode::GeneratePrintStopMessageStub(Assembler* assembler) { |
__ Stop("GeneratePrintStopMessageStub"); |
} |
- |
// Input parameters: |
// LR : return address. |
// SP : address of return value. |
@@ -230,21 +227,18 @@ static void GenerateCallNativeWithWrapperStub(Assembler* assembler, |
__ ret(); |
} |
- |
void StubCode::GenerateCallNoScopeNativeStub(Assembler* assembler) { |
GenerateCallNativeWithWrapperStub( |
assembler, |
Address(THR, Thread::no_scope_native_wrapper_entry_point_offset())); |
} |
- |
void StubCode::GenerateCallAutoScopeNativeStub(Assembler* assembler) { |
GenerateCallNativeWithWrapperStub( |
assembler, |
Address(THR, Thread::auto_scope_native_wrapper_entry_point_offset())); |
} |
- |
// Input parameters: |
// LR : return address. |
// SP : address of return value. |
@@ -335,7 +329,6 @@ void StubCode::GenerateCallBootstrapNativeStub(Assembler* assembler) { |
__ ret(); |
} |
- |
// Input parameters: |
// R4: arguments descriptor array. |
void StubCode::GenerateCallStaticFunctionStub(Assembler* assembler) { |
@@ -356,7 +349,6 @@ void StubCode::GenerateCallStaticFunctionStub(Assembler* assembler) { |
__ br(R0); |
} |
- |
// Called from a static call only when an invalid code has been entered |
// (invalid because its function was optimized or deoptimized). |
// R4: arguments descriptor array. |
@@ -382,7 +374,6 @@ void StubCode::GenerateFixCallersTargetStub(Assembler* assembler) { |
__ br(R0); |
} |
- |
// Called from object allocate instruction when the allocation stub has been |
// disabled. |
void StubCode::GenerateFixAllocationStubTargetStub(Assembler* assembler) { |
@@ -403,7 +394,6 @@ void StubCode::GenerateFixAllocationStubTargetStub(Assembler* assembler) { |
__ br(R0); |
} |
- |
// Input parameters: |
// R2: smi-tagged argument count, may be zero. |
// FP[kParamEndSlotFromFp + 1]: last argument. |
@@ -435,7 +425,6 @@ static void PushArgumentsArray(Assembler* assembler) { |
__ Bind(&loop_exit); |
} |
- |
// Used by eager and lazy deoptimization. Preserve result in RAX if necessary. |
// This stub translates optimized frame into unoptimized frame. The optimized |
// frame can contain values in registers and on stack, the unoptimized |
@@ -576,7 +565,6 @@ static void GenerateDeoptimizationSequence(Assembler* assembler, |
// The caller is responsible for emitting the return instruction. |
} |
- |
// R0: result, must be preserved |
void StubCode::GenerateDeoptimizeLazyFromReturnStub(Assembler* assembler) { |
// Push zap value instead of CODE_REG for lazy deopt. |
@@ -589,7 +577,6 @@ void StubCode::GenerateDeoptimizeLazyFromReturnStub(Assembler* assembler) { |
__ ret(); |
} |
- |
// R0: exception, must be preserved |
// R1: stacktrace, must be preserved |
void StubCode::GenerateDeoptimizeLazyFromThrowStub(Assembler* assembler) { |
@@ -603,13 +590,11 @@ void StubCode::GenerateDeoptimizeLazyFromThrowStub(Assembler* assembler) { |
__ ret(); |
} |
- |
void StubCode::GenerateDeoptimizeStub(Assembler* assembler) { |
GenerateDeoptimizationSequence(assembler, kEagerDeopt); |
__ ret(); |
} |
- |
static void GenerateDispatcherCode(Assembler* assembler, |
Label* call_target_function) { |
__ Comment("NoSuchMethodDispatch"); |
@@ -644,7 +629,6 @@ static void GenerateDispatcherCode(Assembler* assembler, |
__ ret(); |
} |
- |
void StubCode::GenerateMegamorphicMissStub(Assembler* assembler) { |
__ EnterStubFrame(); |
@@ -689,7 +673,6 @@ void StubCode::GenerateMegamorphicMissStub(Assembler* assembler) { |
__ br(R2); |
} |
- |
// Called for inline allocation of arrays. |
// Input parameters: |
// LR: return address. |
@@ -834,7 +817,6 @@ void StubCode::GenerateAllocateArrayStub(Assembler* assembler) { |
__ ret(); |
} |
- |
// Called when invoking Dart code from C++ (VM code). |
// Input parameters: |
// LR : points to return address. |
@@ -967,7 +949,6 @@ void StubCode::GenerateInvokeDartCodeStub(Assembler* assembler) { |
__ ret(); |
} |
- |
// Called for inline allocation of contexts. |
// Input: |
// R1: number of context variables. |
@@ -1082,7 +1063,6 @@ void StubCode::GenerateAllocateContextStub(Assembler* assembler) { |
__ ret(); |
} |
- |
// Helper stub to implement Assembler::StoreIntoObject. |
// Input parameters: |
// R0: Address being stored |
@@ -1148,7 +1128,6 @@ void StubCode::GenerateUpdateStoreBufferStub(Assembler* assembler) { |
__ ret(); |
} |
- |
// Called for inline allocation of objects. |
// Input parameters: |
// LR : return address. |
@@ -1275,7 +1254,6 @@ void StubCode::GenerateAllocationStubForClass(Assembler* assembler, |
__ ret(); |
} |
- |
// Called for invoking "dynamic noSuchMethod(Invocation invocation)" function |
// from the entry code of a dart function after an error in passed argument |
// name or number is detected. |
@@ -1313,7 +1291,6 @@ void StubCode::GenerateCallClosureNoSuchMethodStub(Assembler* assembler) { |
__ brk(0); |
} |
- |
// R6: function object. |
// R5: inline cache data object. |
// Cannot use function object from ICData as it may be the inlined |
@@ -1338,7 +1315,6 @@ void StubCode::GenerateOptimizedUsageCounterIncrement(Assembler* assembler) { |
__ StoreFieldToOffset(R7, func_reg, Function::usage_counter_offset(), kWord); |
} |
- |
// Loads function into 'temp_reg'. |
void StubCode::GenerateUsageCounterIncrement(Assembler* assembler, |
Register temp_reg) { |
@@ -1356,7 +1332,6 @@ void StubCode::GenerateUsageCounterIncrement(Assembler* assembler, |
} |
} |
- |
// Note: R5 must be preserved. |
// Attempt a quick Smi operation for known operations ('kind'). The ICData |
// must have been primed with a Smi/Smi check that will be used for counting |
@@ -1423,7 +1398,6 @@ static void EmitFastSmiOp(Assembler* assembler, |
__ ret(); |
} |
- |
// Generate inline cache check for 'num_args'. |
// LR: return address. |
// R5: inline cache data object. |
@@ -1605,7 +1579,6 @@ void StubCode::GenerateNArgsCheckInlineCacheStub( |
} |
} |
- |
// Use inline cache data array to invoke the target or continue in inline |
// cache miss handler. Stub for 1-argument check (receiver class). |
// LR: return address. |
@@ -1622,7 +1595,6 @@ void StubCode::GenerateOneArgCheckInlineCacheStub(Assembler* assembler) { |
assembler, 1, kInlineCacheMissHandlerOneArgRuntimeEntry, Token::kILLEGAL); |
} |
- |
void StubCode::GenerateTwoArgsCheckInlineCacheStub(Assembler* assembler) { |
GenerateUsageCounterIncrement(assembler, R6); |
GenerateNArgsCheckInlineCacheStub(assembler, 2, |
@@ -1630,28 +1602,24 @@ void StubCode::GenerateTwoArgsCheckInlineCacheStub(Assembler* assembler) { |
Token::kILLEGAL); |
} |
- |
void StubCode::GenerateSmiAddInlineCacheStub(Assembler* assembler) { |
GenerateUsageCounterIncrement(assembler, R6); |
GenerateNArgsCheckInlineCacheStub( |
assembler, 2, kInlineCacheMissHandlerTwoArgsRuntimeEntry, Token::kADD); |
} |
- |
void StubCode::GenerateSmiSubInlineCacheStub(Assembler* assembler) { |
GenerateUsageCounterIncrement(assembler, R6); |
GenerateNArgsCheckInlineCacheStub( |
assembler, 2, kInlineCacheMissHandlerTwoArgsRuntimeEntry, Token::kSUB); |
} |
- |
void StubCode::GenerateSmiEqualInlineCacheStub(Assembler* assembler) { |
GenerateUsageCounterIncrement(assembler, R6); |
GenerateNArgsCheckInlineCacheStub( |
assembler, 2, kInlineCacheMissHandlerTwoArgsRuntimeEntry, Token::kEQ); |
} |
- |
void StubCode::GenerateOneArgOptimizedCheckInlineCacheStub( |
Assembler* assembler) { |
GenerateOptimizedUsageCounterIncrement(assembler); |
@@ -1660,7 +1628,6 @@ void StubCode::GenerateOneArgOptimizedCheckInlineCacheStub( |
Token::kILLEGAL, true /* optimized */); |
} |
- |
void StubCode::GenerateTwoArgsOptimizedCheckInlineCacheStub( |
Assembler* assembler) { |
GenerateOptimizedUsageCounterIncrement(assembler); |
@@ -1669,7 +1636,6 @@ void StubCode::GenerateTwoArgsOptimizedCheckInlineCacheStub( |
Token::kILLEGAL, true /* optimized */); |
} |
- |
void StubCode::GenerateZeroArgsUnoptimizedStaticCallStub(Assembler* assembler) { |
GenerateUsageCounterIncrement(assembler, R6); |
#if defined(DEBUG) |
@@ -1734,21 +1700,18 @@ void StubCode::GenerateZeroArgsUnoptimizedStaticCallStub(Assembler* assembler) { |
} |
} |
- |
void StubCode::GenerateOneArgUnoptimizedStaticCallStub(Assembler* assembler) { |
GenerateUsageCounterIncrement(assembler, R6); |
GenerateNArgsCheckInlineCacheStub( |
assembler, 1, kStaticCallMissHandlerOneArgRuntimeEntry, Token::kILLEGAL); |
} |
- |
void StubCode::GenerateTwoArgsUnoptimizedStaticCallStub(Assembler* assembler) { |
GenerateUsageCounterIncrement(assembler, R6); |
GenerateNArgsCheckInlineCacheStub( |
assembler, 2, kStaticCallMissHandlerTwoArgsRuntimeEntry, Token::kILLEGAL); |
} |
- |
// Stub for compiling a function and jumping to the compiled code. |
// R5: IC-Data (for methods). |
// R4: Arguments descriptor. |
@@ -1770,7 +1733,6 @@ void StubCode::GenerateLazyCompileStub(Assembler* assembler) { |
__ br(R2); |
} |
- |
// R5: Contains an ICData. |
void StubCode::GenerateICCallBreakpointStub(Assembler* assembler) { |
__ EnterStubFrame(); |
@@ -1784,7 +1746,6 @@ void StubCode::GenerateICCallBreakpointStub(Assembler* assembler) { |
__ br(R0); |
} |
- |
void StubCode::GenerateRuntimeCallBreakpointStub(Assembler* assembler) { |
__ EnterStubFrame(); |
__ Push(ZR); // Space for result. |
@@ -1814,7 +1775,6 @@ void StubCode::GenerateDebugStepCheckStub(Assembler* assembler) { |
__ b(&done_stepping); |
} |
- |
// Used to check class and type arguments. Arguments passed in registers: |
// LR: return address. |
// R0: instance (must be preserved). |
@@ -1900,7 +1860,6 @@ static void GenerateSubtypeNTestCacheStub(Assembler* assembler, int n) { |
__ ret(); |
} |
- |
// Used to check class and type arguments. Arguments passed on stack: |
// LR: return address. |
// R0: instance (must be preserved). |
@@ -1912,7 +1871,6 @@ void StubCode::GenerateSubtype1TestCacheStub(Assembler* assembler) { |
GenerateSubtypeNTestCacheStub(assembler, 1); |
} |
- |
// Used to check class and type arguments. Arguments passed in registers: |
// LR: return address. |
// R0: instance (must be preserved). |
@@ -1924,7 +1882,6 @@ void StubCode::GenerateSubtype2TestCacheStub(Assembler* assembler) { |
GenerateSubtypeNTestCacheStub(assembler, 2); |
} |
- |
// Used to check class and type arguments. Arguments passed on stack: |
// LR: return address. |
// R0: instance (must be preserved). |
@@ -1936,13 +1893,11 @@ void StubCode::GenerateSubtype4TestCacheStub(Assembler* assembler) { |
GenerateSubtypeNTestCacheStub(assembler, 4); |
} |
- |
void StubCode::GenerateGetCStackPointerStub(Assembler* assembler) { |
__ mov(R0, CSP); |
__ ret(); |
} |
- |
// Jump to a frame on the call stack. |
// LR: return address. |
// R0: program_counter. |
@@ -1968,7 +1923,6 @@ void StubCode::GenerateJumpToFrameStub(Assembler* assembler) { |
__ ret(); // Jump to continuation point. |
} |
- |
// Run an exception handler. Execution comes from JumpToFrame |
// stub or from the simulator. |
// |
@@ -1989,7 +1943,6 @@ void StubCode::GenerateRunExceptionHandlerStub(Assembler* assembler) { |
__ ret(); // Jump to the exception handler code. |
} |
- |
// Deoptimize a frame on the call stack before rewinding. |
// The arguments are stored in the Thread object. |
// No result. |
@@ -2009,7 +1962,6 @@ void StubCode::GenerateDeoptForRewindStub(Assembler* assembler) { |
__ brk(0); |
} |
- |
// Calls to the runtime to optimize the given function. |
// R6: function to be re-optimized. |
// R4: argument descriptor (preserved). |
@@ -2030,7 +1982,6 @@ void StubCode::GenerateOptimizeFunctionStub(Assembler* assembler) { |
__ brk(0); |
} |
- |
// Does identical check (object references are equal or not equal) with special |
// checks for boxed numbers. |
// Left and right are pushed on stack. |
@@ -2088,7 +2039,6 @@ static void GenerateIdenticalWithNumberCheckStub(Assembler* assembler, |
__ Bind(&done); |
} |
- |
// Called only from unoptimized code. All relevant registers have been saved. |
// LR: return address. |
// SP + 4: left operand. |
@@ -2123,7 +2073,6 @@ void StubCode::GenerateUnoptimizedIdenticalWithNumberCheckStub( |
} |
} |
- |
// Called from optimized code only. |
// LR: return address. |
// SP + 4: left operand. |
@@ -2139,7 +2088,6 @@ void StubCode::GenerateOptimizedIdenticalWithNumberCheckStub( |
__ ret(); |
} |
- |
// Called from megamorphic calls. |
// R0: receiver |
// R5: MegamorphicCache (preserved) |
@@ -2212,7 +2160,6 @@ void StubCode::GenerateMegamorphicCallStub(Assembler* assembler) { |
__ b(&cid_loaded); |
} |
- |
// Called from switchable IC calls. |
// R0: receiver |
// R5: ICData (preserved) |
@@ -2253,7 +2200,6 @@ void StubCode::GenerateICCallThroughFunctionStub(Assembler* assembler) { |
__ br(R1); |
} |
- |
void StubCode::GenerateICCallThroughCodeStub(Assembler* assembler) { |
Label loop, found, miss; |
__ ldr(R4, FieldAddress(R5, ICData::arguments_descriptor_offset())); |
@@ -2288,7 +2234,6 @@ void StubCode::GenerateICCallThroughCodeStub(Assembler* assembler) { |
__ br(R1); |
} |
- |
// Called from switchable IC calls. |
// R0: receiver |
// R5: SingleTargetCache |
@@ -2311,7 +2256,6 @@ void StubCode::GenerateUnlinkedCallStub(Assembler* assembler) { |
__ br(R1); |
} |
- |
// Called from switchable IC calls. |
// R0: receiver |
// R5: SingleTargetCache |
@@ -2352,7 +2296,6 @@ void StubCode::GenerateSingleTargetCallStub(Assembler* assembler) { |
__ br(R1); |
} |
- |
// Called from the monomorphic checked entry. |
// R0: receiver |
void StubCode::GenerateMonomorphicMissStub(Assembler* assembler) { |
@@ -2374,12 +2317,10 @@ void StubCode::GenerateMonomorphicMissStub(Assembler* assembler) { |
__ br(R1); |
} |
- |
void StubCode::GenerateFrameAwaitingMaterializationStub(Assembler* assembler) { |
__ brk(0); |
} |
- |
void StubCode::GenerateAsynchronousGapMarkerStub(Assembler* assembler) { |
__ brk(0); |
} |