Revision f230a1cf deps/v8/src/mips/macro-assembler-mips.h
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