void StubFailureTrampolineStub::Generate(MacroAssembler* masm) {
- // TODO(jbramley): The ARM code leaves the (shifted) offset in r1. Why?
- CEntryStub ces(1, kSaveFPRegs);
+ CEntryStub ces(1, fp_registers_ ? kSaveFPRegs : kDontSaveFPRegs);
__ Call(ces.GetCode(masm->isolate()), RelocInfo::CODE_TARGET);
int parameter_count_offset =
StubFailureTrampolineFrame::kCallerStackParameterCountFrameOffset;
__ IncrementCounter(isolate->counters()->load_miss(), 1, x3, x4);
- // TODO(jbramley): Does the target actually expect an argument in x3, or is
- // this inherited from ARM's push semantics?
- __ Mov(x3, x0);
- __ Push(x3, x2);
-
// Perform tail call to the entry.
+ __ Push(x0, x2);
ExternalReference ref =
ExternalReference(IC_Utility(kLoadIC_Miss), isolate);
__ TailCallExternalReference(ref, 2, 1);
// -- x0 : receiver
// -----------------------------------
- // TODO(jbramley): Does the target actually expect an argument in x3, or is
- // this inherited from ARM's push semantics?
- __ Mov(x3, x0);
- __ Push(x3, x2);
-
+ __ Push(x0, x2);
__ TailCallRuntime(Runtime::kGetProperty, 2, 1);
}
// We have to go to the runtime if the current value is the hole because there
// may be a callback on the element.
Label holecheck_passed;
- // TODO(all): This address calculation is repeated later (for the store
- // itself). We should keep the result to avoid doing the work twice.
__ Add(x10, elements, FixedArray::kHeaderSize - kHeapObjectTag);
__ Add(x10, x10, Operand::UntagSmiAndScale(key, kPointerSizeLog2));
__ Ldr(x11, MemOperand(x10));
// HOLECHECK: guards "A[i] double hole?"
// We have to see if the double version of the hole is present. If so go to
// the runtime.
- // TODO(all): This address calculation was done earlier. We should keep the
- // result to avoid doing the work twice.
__ Add(x10, elements, FixedDoubleArray::kHeaderSize - kHeapObjectTag);
__ Add(x10, x10, Operand::UntagSmiAndScale(key, kPointerSizeLog2));
__ Ldr(x11, MemOperand(x10));
void MacroAssembler::AssertName(Register object) {
if (emit_debug_code()) {
- STATIC_ASSERT(kSmiTag == 0);
- // TODO(jbramley): Add AbortIfSmi and related functions.
- Label not_smi;
- JumpIfNotSmi(object, ¬_smi);
- Abort(kOperandIsASmiAndNotAName);
- Bind(¬_smi);
+ AssertNotSmi(object, kOperandIsASmiAndNotAName);
UseScratchRegisterScope temps(this);
Register temp = temps.AcquireX();
ASSERT(StackPointer().Is(jssp));
UseScratchRegisterScope temps(this);
Register temp = temps.AcquireX();
- // TODO(jbramley): Does x1 contain a JSFunction here, or does it already
- // have the special STUB smi?
__ Mov(temp, Operand(Smi::FromInt(StackFrame::STUB)));
// Compiled stubs don't age, and so they don't need the predictable code
// ageing sequence.