Revision f230a1cf deps/v8/src/mips/macro-assembler-mips.h

View differences:

deps/v8/src/mips/macro-assembler-mips.h
51 51
// MIPS generated code calls C code, it must be via t9 register.
52 52

  
53 53

  
54
// Flags used for LeaveExitFrame function.
55
enum LeaveExitFrameMode {
56
  EMIT_RETURN = true,
57
  NO_EMIT_RETURN = false
58
};
59

  
54 60
// Flags used for AllocateHeapNumber
55 61
enum TaggingMode {
56 62
  // Tag the result.
......
848 854
  // Leave the current exit frame.
849 855
  void LeaveExitFrame(bool save_doubles,
850 856
                      Register arg_count,
851
                      bool do_return = false);
857
                      bool restore_context,
858
                      bool do_return = NO_EMIT_RETURN);
852 859

  
853 860
  // Get the actual activation frame alignment for target environment.
854 861
  static int ActivationFrameAlignment();
......
1194 1201
  void CallJSExitStub(CodeStub* stub);
1195 1202

  
1196 1203
  // Call a runtime routine.
1197
  void CallRuntime(const Runtime::Function* f, int num_arguments);
1198
  void CallRuntimeSaveDoubles(Runtime::FunctionId id);
1204
  void CallRuntime(const Runtime::Function* f,
1205
                   int num_arguments,
1206
                   SaveFPRegsMode save_doubles = kDontSaveFPRegs);
1207
  void CallRuntimeSaveDoubles(Runtime::FunctionId id) {
1208
    const Runtime::Function* function = Runtime::FunctionForId(id);
1209
    CallRuntime(function, function->nargs, kSaveFPRegs);
1210
  }
1199 1211

  
1200 1212
  // Convenience function: Same as above, but takes the fid instead.
1201
  void CallRuntime(Runtime::FunctionId fid, int num_arguments);
1213
  void CallRuntime(Runtime::FunctionId id, int num_arguments) {
1214
    CallRuntime(Runtime::FunctionForId(id), num_arguments);
1215
  }
1202 1216

  
1203 1217
  // Convenience function: call an external reference.
1204 1218
  void CallExternalReference(const ExternalReference& ext,
......
1271 1285
                                ExternalReference thunk_ref,
1272 1286
                                Register thunk_last_arg,
1273 1287
                                int stack_space,
1274
                                int return_value_offset_from_fp);
1288
                                MemOperand return_value_operand,
1289
                                MemOperand* context_restore_operand);
1275 1290

  
1276 1291
  // Jump to the builtin routine.
1277 1292
  void JumpToExternalReference(const ExternalReference& builtin,
......
1419 1434
  // -------------------------------------------------------------------------
1420 1435
  // String utilities.
1421 1436

  
1437
  // Generate code to do a lookup in the number string cache. If the number in
1438
  // the register object is found in the cache the generated code falls through
1439
  // with the result in the result register. The object and the result register
1440
  // can be the same. If the number is not found in the cache the code jumps to
1441
  // the label not_found with only the content of register object unchanged.
1442
  void LookupNumberStringCache(Register object,
1443
                               Register result,
1444
                               Register scratch1,
1445
                               Register scratch2,
1446
                               Register scratch3,
1447
                               Label* not_found);
1448

  
1422 1449
  // Checks if both instance types are sequential ASCII strings and jumps to
1423 1450
  // label if either is not.
1424 1451
  void JumpIfBothInstanceTypesAreNotSequentialAscii(
......
1471 1498
    And(reg, reg, Operand(mask));
1472 1499
  }
1473 1500

  
1501
  // Generates function and stub prologue code.
1502
  void Prologue(PrologueFrameMode frame_mode);
1503

  
1474 1504
  // Activation support.
1475 1505
  void EnterFrame(StackFrame::Type type);
1476 1506
  void LeaveFrame(StackFrame::Type type);
......
1493 1523
  // to another type.
1494 1524
  // On entry, receiver_reg should point to the array object.
1495 1525
  // scratch_reg gets clobbered.
1496
  // If allocation info is present, jump to allocation_info_present
1497
  void TestJSArrayForAllocationMemento(Register receiver_reg,
1498
                                       Register scratch_reg,
1499
                                       Condition cond,
1500
                                       Label* allocation_memento_present);
1526
  // If allocation info is present, jump to allocation_memento_present.
1527
  void TestJSArrayForAllocationMemento(
1528
      Register receiver_reg,
1529
      Register scratch_reg,
1530
      Label* no_memento_found,
1531
      Condition cond = al,
1532
      Label* allocation_memento_present = NULL);
1533

  
1534
  void JumpIfJSArrayHasAllocationMemento(Register receiver_reg,
1535
                                         Register scratch_reg,
1536
                                         Label* memento_found) {
1537
    Label no_memento_found;
1538
    TestJSArrayForAllocationMemento(receiver_reg, scratch_reg,
1539
                                    &no_memento_found, eq, memento_found);
1540
    bind(&no_memento_found);
1541
  }
1501 1542

  
1502 1543
 private:
1503 1544
  void CallCFunctionHelper(Register function,

Also available in: Unified diff