Revision: 17138
Author: [email protected]
Date: Thu Oct 10 12:28:52 2013 UTC
Log: Revert "Load/Store cannot handle double representation."
This reverts r17135 -- test crashes on x64.
[email protected]
BUG=
Review URL: https://codereview.chromium.org/26653004
http://code.google.com/p/v8/source/detail?r=17138
Modified:
/branches/bleeding_edge/src/x64/macro-assembler-x64.cc
/branches/bleeding_edge/test/cctest/test-macro-assembler-x64.cc
=======================================
--- /branches/bleeding_edge/src/x64/macro-assembler-x64.cc Thu Oct 10
11:42:00 2013 UTC
+++ /branches/bleeding_edge/src/x64/macro-assembler-x64.cc Thu Oct 10
12:28:52 2013 UTC
@@ -948,7 +948,6 @@
void MacroAssembler::Load(Register dst, const Operand& src, Representation
r) {
- ASSERT(!r.IsDouble());
if (r.IsByte()) {
movzxbl(dst, src);
} else if (r.IsInteger32()) {
@@ -960,7 +959,6 @@
void MacroAssembler::Store(const Operand& dst, Register src,
Representation r) {
- ASSERT(!r.IsDouble());
if (r.IsByte()) {
movb(dst, src);
} else if (r.IsInteger32()) {
=======================================
--- /branches/bleeding_edge/test/cctest/test-macro-assembler-x64.cc Thu Oct
10 11:42:00 2013 UTC
+++ /branches/bleeding_edge/test/cctest/test-macro-assembler-x64.cc Thu Oct
10 12:28:52 2013 UTC
@@ -47,7 +47,6 @@
using v8::internal::OS;
using v8::internal::Operand;
using v8::internal::RelocInfo;
-using v8::internal::Representation;
using v8::internal::Smi;
using v8::internal::SmiIndex;
using v8::internal::byte;
@@ -2634,118 +2633,6 @@
CHECK_EQ(0, result);
}
-
-TEST(LoadAndStoreWithRepresentation) {
- v8::internal::V8::Initialize(NULL);
-
- // Allocate an executable page of memory.
- size_t actual_size;
- byte* buffer =
static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize,
- &actual_size,
- true));
- CHECK(buffer);
- Isolate* isolate = CcTest::i_isolate();
- HandleScope handles(isolate);
- MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size));
- MacroAssembler* masm = &assembler; // Create a pointer for the __ macro.
- masm->set_allow_stub_calls(false);
- __ push(rbp);
- __ movq(rbp, rsp);
- __ subq(rsp, Immediate(1 * kPointerSize));
- EntryCode(masm);
- Label exit;
-
- // Test 1.
- __ movq(rax, Immediate(1)); // Test number.
- __ movq(Operand(rsp, 0 * kPointerSize), Immediate(0));
- __ movq(rcx, Immediate(-1));
- __ Store(Operand(rsp, 0 * kPointerSize), rcx, Representation::Byte());
- __ movq(rcx, Operand(rsp, 0 * kPointerSize));
- __ movl(rdx, Immediate(255));
- __ cmpq(rcx, rdx);
- __ j(not_equal, &exit);
- __ Load(rdx, Operand(rsp, 0 * kPointerSize), Representation::Byte());
- __ cmpq(rcx, rdx);
- __ j(not_equal, &exit);
-
- // Test 2.
- __ movq(rax, Immediate(2)); // Test number.
- __ movq(Operand(rsp, 0 * kPointerSize), Immediate(0));
- __ Set(rcx, V8_2PART_UINT64_C(0xdeadbeaf, 12345678));
- __ Store(Operand(rsp, 0 * kPointerSize), rcx, Representation::Smi());
- __ movq(rcx, Operand(rsp, 0 * kPointerSize));
- __ Set(rdx, V8_2PART_UINT64_C(0xdeadbeaf, 12345678));
- __ cmpq(rcx, rdx);
- __ j(not_equal, &exit);
- __ Load(rdx, Operand(rsp, 0 * kPointerSize), Representation::Smi());
- __ cmpq(rcx, rdx);
- __ j(not_equal, &exit);
-
- // Test 3.
- __ movq(rax, Immediate(3)); // Test number.
- __ movq(Operand(rsp, 0 * kPointerSize), Immediate(0));
- __ movq(rcx, Immediate(-1));
- __ Store(Operand(rsp, 0 * kPointerSize), rcx,
Representation::Integer32());
- __ movq(rcx, Operand(rsp, 0 * kPointerSize));
- __ movl(rdx, Immediate(-1));
- __ cmpq(rcx, rdx);
- __ j(not_equal, &exit);
- __ Load(rdx, Operand(rsp, 0 * kPointerSize),
Representation::Integer32());
- __ cmpq(rcx, rdx);
- __ j(not_equal, &exit);
-
- // Test 4.
- __ movq(rax, Immediate(4)); // Test number.
- __ movq(Operand(rsp, 0 * kPointerSize), Immediate(0));
- __ movl(rcx, Immediate(0x44332211));
- __ Store(Operand(rsp, 0 * kPointerSize), rcx,
Representation::HeapObject());
- __ movq(rcx, Operand(rsp, 0 * kPointerSize));
- __ movl(rdx, Immediate(0x44332211));
- __ cmpq(rcx, rdx);
- __ j(not_equal, &exit);
- __ Load(rdx, Operand(rsp, 0 * kPointerSize),
Representation::HeapObject());
- __ cmpq(rcx, rdx);
- __ j(not_equal, &exit);
-
- // Test 5.
- __ movq(rax, Immediate(5)); // Test number.
- __ movq(Operand(rsp, 0 * kPointerSize), Immediate(0));
- __ Set(rcx, V8_2PART_UINT64_C(0x12345678, deadbeaf));
- __ Store(Operand(rsp, 0 * kPointerSize), rcx, Representation::Tagged());
- __ movq(rcx, Operand(rsp, 0 * kPointerSize));
- __ Set(rdx, V8_2PART_UINT64_C(0x12345678, deadbeaf));
- __ cmpq(rcx, rdx);
- __ j(not_equal, &exit);
- __ Load(rdx, Operand(rsp, 0 * kPointerSize), Representation::Tagged());
- __ cmpq(rcx, rdx);
- __ j(not_equal, &exit);
-
- // Test 6.
- __ movq(rax, Immediate(6)); // Test number.
- __ movq(Operand(rsp, 0 * kPointerSize), Immediate(0));
- __ Set(rcx, V8_2PART_UINT64_C(0x11223344, 55667788));
- __ Store(Operand(rsp, 0 * kPointerSize), rcx,
Representation::External());
- __ movq(rcx, Operand(rsp, 0 * kPointerSize));
- __ Set(rdx, V8_2PART_UINT64_C(0x11223344, 55667788));
- __ cmpq(rcx, rdx);
- __ j(not_equal, &exit);
- __ Load(rdx, Operand(rsp, 0 * kPointerSize), Representation::External());
- __ cmpq(rcx, rdx);
- __ j(not_equal, &exit);
-
- __ xor_(rax, rax); // Success.
- __ bind(&exit);
- ExitCode(masm);
- __ movq(rsp, rbp);
- __ pop(rbp);
- __ ret(0);
-
- CodeDesc desc;
- masm->GetCode(&desc);
- // Call the function from C++.A
- int result = FUNCTION_CAST<F0>(buffer)();
- CHECK_EQ(0, result);
-}
#undef __
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.