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

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

Issue 132623005: A64: Synchronize with r18642. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/a64
Patch Set: Created 6 years, 10 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/arm/lithium-codegen-arm.cc ('k') | src/arm/macro-assembler-arm.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 ASSERT(!src1.is(src3)); 382 ASSERT(!src1.is(src3));
383 if (src1.code() > src2.code()) { 383 if (src1.code() > src2.code()) {
384 if (src2.code() > src3.code()) { 384 if (src2.code() > src3.code()) {
385 ldm(ia_w, sp, src1.bit() | src2.bit() | src3.bit(), cond); 385 ldm(ia_w, sp, src1.bit() | src2.bit() | src3.bit(), cond);
386 } else { 386 } else {
387 ldr(src3, MemOperand(sp, 4, PostIndex), cond); 387 ldr(src3, MemOperand(sp, 4, PostIndex), cond);
388 ldm(ia_w, sp, src1.bit() | src2.bit(), cond); 388 ldm(ia_w, sp, src1.bit() | src2.bit(), cond);
389 } 389 }
390 } else { 390 } else {
391 Pop(src2, src3, cond); 391 Pop(src2, src3, cond);
392 str(src1, MemOperand(sp, 4, PostIndex), cond); 392 ldr(src1, MemOperand(sp, 4, PostIndex), cond);
393 } 393 }
394 } 394 }
395 395
396 // Pop four registers. Pops rightmost register first (from lower address). 396 // Pop four registers. Pops rightmost register first (from lower address).
397 void Pop(Register src1, 397 void Pop(Register src1,
398 Register src2, 398 Register src2,
399 Register src3, 399 Register src3,
400 Register src4, 400 Register src4,
401 Condition cond = al) { 401 Condition cond = al) {
402 ASSERT(!src1.is(src2)); 402 ASSERT(!src1.is(src2));
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 587
588 void InitializeRootRegister() { 588 void InitializeRootRegister() {
589 ExternalReference roots_array_start = 589 ExternalReference roots_array_start =
590 ExternalReference::roots_array_start(isolate()); 590 ExternalReference::roots_array_start(isolate());
591 mov(kRootRegister, Operand(roots_array_start)); 591 mov(kRootRegister, Operand(roots_array_start));
592 } 592 }
593 593
594 // --------------------------------------------------------------------------- 594 // ---------------------------------------------------------------------------
595 // JavaScript invokes 595 // JavaScript invokes
596 596
597 // Set up call kind marking in ecx. The method takes ecx as an
598 // explicit first parameter to make the code more readable at the
599 // call sites.
600 void SetCallKind(Register dst, CallKind kind);
601
602 // Invoke the JavaScript function code by either calling or jumping. 597 // Invoke the JavaScript function code by either calling or jumping.
603 void InvokeCode(Register code, 598 void InvokeCode(Register code,
604 const ParameterCount& expected, 599 const ParameterCount& expected,
605 const ParameterCount& actual, 600 const ParameterCount& actual,
606 InvokeFlag flag, 601 InvokeFlag flag,
607 const CallWrapper& call_wrapper, 602 const CallWrapper& call_wrapper);
608 CallKind call_kind);
609
610 void InvokeCode(Handle<Code> code,
611 const ParameterCount& expected,
612 const ParameterCount& actual,
613 RelocInfo::Mode rmode,
614 InvokeFlag flag,
615 CallKind call_kind);
616 603
617 // Invoke the JavaScript function in the given register. Changes the 604 // Invoke the JavaScript function in the given register. Changes the
618 // current context to the context in the function before invoking. 605 // current context to the context in the function before invoking.
619 void InvokeFunction(Register function, 606 void InvokeFunction(Register function,
620 const ParameterCount& actual, 607 const ParameterCount& actual,
621 InvokeFlag flag, 608 InvokeFlag flag,
622 const CallWrapper& call_wrapper, 609 const CallWrapper& call_wrapper);
623 CallKind call_kind);
624 610
625 void InvokeFunction(Register function, 611 void InvokeFunction(Register function,
626 const ParameterCount& expected, 612 const ParameterCount& expected,
627 const ParameterCount& actual, 613 const ParameterCount& actual,
628 InvokeFlag flag, 614 InvokeFlag flag,
629 const CallWrapper& call_wrapper, 615 const CallWrapper& call_wrapper);
630 CallKind call_kind);
631 616
632 void InvokeFunction(Handle<JSFunction> function, 617 void InvokeFunction(Handle<JSFunction> function,
633 const ParameterCount& expected, 618 const ParameterCount& expected,
634 const ParameterCount& actual, 619 const ParameterCount& actual,
635 InvokeFlag flag, 620 InvokeFlag flag,
636 const CallWrapper& call_wrapper, 621 const CallWrapper& call_wrapper);
637 CallKind call_kind);
638 622
639 void IsObjectJSObjectType(Register heap_object, 623 void IsObjectJSObjectType(Register heap_object,
640 Register map, 624 Register map,
641 Register scratch, 625 Register scratch,
642 Label* fail); 626 Label* fail);
643 627
644 void IsInstanceJSObjectType(Register map, 628 void IsInstanceJSObjectType(Register map,
645 Register scratch, 629 Register scratch,
646 Label* fail); 630 Label* fail);
647 631
(...skipping 800 matching lines...) Expand 10 before | Expand all | Expand 10 after
1448 void Jump(intptr_t target, RelocInfo::Mode rmode, Condition cond = al); 1432 void Jump(intptr_t target, RelocInfo::Mode rmode, Condition cond = al);
1449 1433
1450 // Helper functions for generating invokes. 1434 // Helper functions for generating invokes.
1451 void InvokePrologue(const ParameterCount& expected, 1435 void InvokePrologue(const ParameterCount& expected,
1452 const ParameterCount& actual, 1436 const ParameterCount& actual,
1453 Handle<Code> code_constant, 1437 Handle<Code> code_constant,
1454 Register code_reg, 1438 Register code_reg,
1455 Label* done, 1439 Label* done,
1456 bool* definitely_mismatches, 1440 bool* definitely_mismatches,
1457 InvokeFlag flag, 1441 InvokeFlag flag,
1458 const CallWrapper& call_wrapper, 1442 const CallWrapper& call_wrapper);
1459 CallKind call_kind);
1460 1443
1461 void InitializeNewString(Register string, 1444 void InitializeNewString(Register string,
1462 Register length, 1445 Register length,
1463 Heap::RootListIndex map_index, 1446 Heap::RootListIndex map_index,
1464 Register scratch1, 1447 Register scratch1,
1465 Register scratch2); 1448 Register scratch2);
1466 1449
1467 // Helper for implementing JumpIfNotInNewSpace and JumpIfInNewSpace. 1450 // Helper for implementing JumpIfNotInNewSpace and JumpIfInNewSpace.
1468 void InNewSpace(Register object, 1451 void InNewSpace(Register object,
1469 Register scratch, 1452 Register scratch,
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
1554 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 1537 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
1555 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 1538 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
1556 #else 1539 #else
1557 #define ACCESS_MASM(masm) masm-> 1540 #define ACCESS_MASM(masm) masm->
1558 #endif 1541 #endif
1559 1542
1560 1543
1561 } } // namespace v8::internal 1544 } } // namespace v8::internal
1562 1545
1563 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ 1546 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_
OLDNEW
« no previous file with comments | « src/arm/lithium-codegen-arm.cc ('k') | src/arm/macro-assembler-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698