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

Side by Side Diff: src/mips/macro-assembler-mips.h

Issue 7860035: Merge bleeding edge up to 9192 into the GC branch. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/gc
Patch Set: Created 9 years, 3 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/mips/ic-mips.cc ('k') | src/mips/macro-assembler-mips.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 void AllocateTwoByteConsString(Register result, 355 void AllocateTwoByteConsString(Register result,
356 Register length, 356 Register length,
357 Register scratch1, 357 Register scratch1,
358 Register scratch2, 358 Register scratch2,
359 Label* gc_required); 359 Label* gc_required);
360 void AllocateAsciiConsString(Register result, 360 void AllocateAsciiConsString(Register result,
361 Register length, 361 Register length,
362 Register scratch1, 362 Register scratch1,
363 Register scratch2, 363 Register scratch2,
364 Label* gc_required); 364 Label* gc_required);
365 void AllocateTwoByteSlicedString(Register result,
366 Register length,
367 Register scratch1,
368 Register scratch2,
369 Label* gc_required);
370 void AllocateAsciiSlicedString(Register result,
371 Register length,
372 Register scratch1,
373 Register scratch2,
374 Label* gc_required);
365 375
366 // Allocates a heap number or jumps to the gc_required label if the young 376 // Allocates a heap number or jumps to the gc_required label if the young
367 // space is full and a scavenge is needed. All registers are clobbered also 377 // space is full and a scavenge is needed. All registers are clobbered also
368 // when control continues at the gc_required label. 378 // when control continues at the gc_required label.
369 void AllocateHeapNumber(Register result, 379 void AllocateHeapNumber(Register result,
370 Register scratch1, 380 Register scratch1,
371 Register scratch2, 381 Register scratch2,
372 Register heap_number_map, 382 Register heap_number_map,
373 Label* gc_required); 383 Label* gc_required);
374 void AllocateHeapNumberWithValue(Register result, 384 void AllocateHeapNumberWithValue(Register result,
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 inline void li(Register dst, Handle<Object> value, bool gen2instr = false) { 445 inline void li(Register dst, Handle<Object> value, bool gen2instr = false) {
436 li(dst, Operand(value), gen2instr); 446 li(dst, Operand(value), gen2instr);
437 } 447 }
438 448
439 // Push multiple registers on the stack. 449 // Push multiple registers on the stack.
440 // Registers are saved in numerical order, with higher numbered registers 450 // Registers are saved in numerical order, with higher numbered registers
441 // saved in higher memory addresses. 451 // saved in higher memory addresses.
442 void MultiPush(RegList regs); 452 void MultiPush(RegList regs);
443 void MultiPushReversed(RegList regs); 453 void MultiPushReversed(RegList regs);
444 454
455 void MultiPushFPU(RegList regs);
456 void MultiPushReversedFPU(RegList regs);
457
445 // Lower case push() for compatibility with arch-independent code. 458 // Lower case push() for compatibility with arch-independent code.
446 void push(Register src) { 459 void push(Register src) {
447 Addu(sp, sp, Operand(-kPointerSize)); 460 Addu(sp, sp, Operand(-kPointerSize));
448 sw(src, MemOperand(sp, 0)); 461 sw(src, MemOperand(sp, 0));
449 } 462 }
450 463
451 // Push a handle. 464 // Push a handle.
452 void Push(Handle<Object> handle); 465 void Push(Handle<Object> handle);
453 466
454 // Push two registers. Pushes leftmost register first (to highest address). 467 // Push two registers. Pushes leftmost register first (to highest address).
(...skipping 25 matching lines...) Expand all
480 Branch(3, cond, tst1, Operand(tst2)); 493 Branch(3, cond, tst1, Operand(tst2));
481 Subu(sp, sp, Operand(kPointerSize)); 494 Subu(sp, sp, Operand(kPointerSize));
482 sw(src, MemOperand(sp, 0)); 495 sw(src, MemOperand(sp, 0));
483 } 496 }
484 497
485 // Pops multiple values from the stack and load them in the 498 // Pops multiple values from the stack and load them in the
486 // registers specified in regs. Pop order is the opposite as in MultiPush. 499 // registers specified in regs. Pop order is the opposite as in MultiPush.
487 void MultiPop(RegList regs); 500 void MultiPop(RegList regs);
488 void MultiPopReversed(RegList regs); 501 void MultiPopReversed(RegList regs);
489 502
503 void MultiPopFPU(RegList regs);
504 void MultiPopReversedFPU(RegList regs);
505
490 // Lower case pop() for compatibility with arch-independent code. 506 // Lower case pop() for compatibility with arch-independent code.
491 void pop(Register dst) { 507 void pop(Register dst) {
492 lw(dst, MemOperand(sp, 0)); 508 lw(dst, MemOperand(sp, 0));
493 Addu(sp, sp, Operand(kPointerSize)); 509 Addu(sp, sp, Operand(kPointerSize));
494 } 510 }
495 511
496 // Pop two registers. Pops rightmost register first (from lower address). 512 // Pop two registers. Pops rightmost register first (from lower address).
497 void Pop(Register src1, Register src2) { 513 void Pop(Register src1, Register src2) {
498 ASSERT(!src1.is(src2)); 514 ASSERT(!src1.is(src2));
499 lw(src2, MemOperand(sp, 0 * kPointerSize)); 515 lw(src2, MemOperand(sp, 0 * kPointerSize));
(...skipping 690 matching lines...) Expand 10 before | Expand all | Expand 10 after
1190 1206
1191 // Generate a MemOperand for loading a field from an object. 1207 // Generate a MemOperand for loading a field from an object.
1192 static inline MemOperand FieldMemOperand(Register object, int offset) { 1208 static inline MemOperand FieldMemOperand(Register object, int offset) {
1193 return MemOperand(object, offset - kHeapObjectTag); 1209 return MemOperand(object, offset - kHeapObjectTag);
1194 } 1210 }
1195 1211
1196 1212
1197 // Generate a MemOperand for storing arguments 5..N on the stack 1213 // Generate a MemOperand for storing arguments 5..N on the stack
1198 // when calling CallCFunction(). 1214 // when calling CallCFunction().
1199 static inline MemOperand CFunctionArgumentOperand(int index) { 1215 static inline MemOperand CFunctionArgumentOperand(int index) {
1200 ASSERT(index > StandardFrameConstants::kCArgSlotCount); 1216 ASSERT(index > kCArgSlotCount);
1201 // Argument 5 takes the slot just past the four Arg-slots. 1217 // Argument 5 takes the slot just past the four Arg-slots.
1202 int offset = 1218 int offset = (index - 5) * kPointerSize + kCArgsSlotsSize;
1203 (index - 5) * kPointerSize + StandardFrameConstants::kCArgsSlotsSize;
1204 return MemOperand(sp, offset); 1219 return MemOperand(sp, offset);
1205 } 1220 }
1206 1221
1207 1222
1208 #ifdef GENERATED_CODE_COVERAGE 1223 #ifdef GENERATED_CODE_COVERAGE
1209 #define CODE_COVERAGE_STRINGIFY(x) #x 1224 #define CODE_COVERAGE_STRINGIFY(x) #x
1210 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) 1225 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x)
1211 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 1226 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
1212 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 1227 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
1213 #else 1228 #else
1214 #define ACCESS_MASM(masm) masm-> 1229 #define ACCESS_MASM(masm) masm->
1215 #endif 1230 #endif
1216 1231
1217 } } // namespace v8::internal 1232 } } // namespace v8::internal
1218 1233
1219 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ 1234 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_
OLDNEW
« no previous file with comments | « src/mips/ic-mips.cc ('k') | src/mips/macro-assembler-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698