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

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

Issue 269004: X64: Convert doubles to int32 inline (without calling runtime).
Patch Set: Created 11 years, 2 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
OLDNEW
1 // Copyright 2009 the V8 project authors. All rights reserved. 1 // Copyright 2009 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 502 matching lines...) Expand 10 before | Expand all | Expand 10 after
513 // function register will be untouched; the other register may be 513 // function register will be untouched; the other register may be
514 // clobbered. 514 // clobbered.
515 void TryGetFunctionPrototype(Register function, 515 void TryGetFunctionPrototype(Register function,
516 Register result, 516 Register result,
517 Label* miss); 517 Label* miss);
518 518
519 // Generates code for reporting that an illegal operation has 519 // Generates code for reporting that an illegal operation has
520 // occurred. 520 // occurred.
521 void IllegalOperation(int num_arguments); 521 void IllegalOperation(int num_arguments);
522 522
523
524 // Converts a double precission floating point number to a 32-bit
525 // integer. It is equivalent to first converting the double to an
526 // integer by truncation (dropping decimals) and then finding the
527 // remainder modulo 2^32 of the result. Non-numbers like infinites
528 // and NaN are converted to zero.
529 // Uses rcx register as well, and dst can be same register as scratch,
530 // or same register as src, but src and scracth cannot be the same.
531 void DoubleToInteger32(Register dst, Register src, Register scratch);
532
523 // --------------------------------------------------------------------------- 533 // ---------------------------------------------------------------------------
524 // Runtime calls 534 // Runtime calls
525 535
526 // Call a code stub. 536 // Call a code stub.
527 void CallStub(CodeStub* stub); 537 void CallStub(CodeStub* stub);
528 538
529 // Return from a code stub after popping its arguments. 539 // Return from a code stub after popping its arguments.
530 void StubReturn(int argc); 540 void StubReturn(int argc);
531 541
532 // Call a runtime routine. 542 // Call a runtime routine.
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
685 } \ 695 } \
686 masm-> 696 masm->
687 #else 697 #else
688 #define ACCESS_MASM(masm) masm-> 698 #define ACCESS_MASM(masm) masm->
689 #endif 699 #endif
690 700
691 701
692 } } // namespace v8::internal 702 } } // namespace v8::internal
693 703
694 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_ 704 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698