OLD | NEW |
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 2664 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2675 template <typename T> | 2675 template <typename T> |
2676 static void CheckInternalFieldsAreZero(v8::Handle<T> value) { | 2676 static void CheckInternalFieldsAreZero(v8::Handle<T> value) { |
2677 CHECK_EQ(T::kInternalFieldCount, value->InternalFieldCount()); | 2677 CHECK_EQ(T::kInternalFieldCount, value->InternalFieldCount()); |
2678 for (int i = 0; i < value->InternalFieldCount(); i++) { | 2678 for (int i = 0; i < value->InternalFieldCount(); i++) { |
2679 CHECK_EQ(0, value->GetInternalField(i)->Int32Value()); | 2679 CHECK_EQ(0, value->GetInternalField(i)->Int32Value()); |
2680 } | 2680 } |
2681 } | 2681 } |
2682 | 2682 |
2683 | 2683 |
2684 THREADED_TEST(ArrayBuffer_ApiInternalToExternal) { | 2684 THREADED_TEST(ArrayBuffer_ApiInternalToExternal) { |
| 2685 i::FLAG_harmony_array_buffer = true; |
| 2686 i::FLAG_harmony_typed_arrays = true; |
| 2687 |
2685 LocalContext env; | 2688 LocalContext env; |
2686 v8::Isolate* isolate = env->GetIsolate(); | 2689 v8::Isolate* isolate = env->GetIsolate(); |
2687 v8::HandleScope handle_scope(isolate); | 2690 v8::HandleScope handle_scope(isolate); |
2688 | 2691 |
2689 Local<v8::ArrayBuffer> ab = v8::ArrayBuffer::New(1024); | 2692 Local<v8::ArrayBuffer> ab = v8::ArrayBuffer::New(1024); |
2690 CheckInternalFieldsAreZero(ab); | 2693 CheckInternalFieldsAreZero(ab); |
2691 CHECK_EQ(1024, static_cast<int>(ab->ByteLength())); | 2694 CHECK_EQ(1024, static_cast<int>(ab->ByteLength())); |
2692 CHECK(!ab->IsExternal()); | 2695 CHECK(!ab->IsExternal()); |
2693 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); | 2696 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); |
2694 | 2697 |
(...skipping 16 matching lines...) Expand all Loading... |
2711 CHECK_EQ(0xFF, data[0]); | 2714 CHECK_EQ(0xFF, data[0]); |
2712 CHECK_EQ(0xAA, data[1]); | 2715 CHECK_EQ(0xAA, data[1]); |
2713 data[0] = 0xCC; | 2716 data[0] = 0xCC; |
2714 data[1] = 0x11; | 2717 data[1] = 0x11; |
2715 result = CompileRun("u8[0] + u8[1]"); | 2718 result = CompileRun("u8[0] + u8[1]"); |
2716 CHECK_EQ(0xDD, result->Int32Value()); | 2719 CHECK_EQ(0xDD, result->Int32Value()); |
2717 } | 2720 } |
2718 | 2721 |
2719 | 2722 |
2720 THREADED_TEST(ArrayBuffer_JSInternalToExternal) { | 2723 THREADED_TEST(ArrayBuffer_JSInternalToExternal) { |
| 2724 i::FLAG_harmony_array_buffer = true; |
| 2725 i::FLAG_harmony_typed_arrays = true; |
| 2726 |
2721 LocalContext env; | 2727 LocalContext env; |
2722 v8::Isolate* isolate = env->GetIsolate(); | 2728 v8::Isolate* isolate = env->GetIsolate(); |
2723 v8::HandleScope handle_scope(isolate); | 2729 v8::HandleScope handle_scope(isolate); |
2724 | 2730 |
2725 | 2731 |
2726 v8::Local<v8::Value> result = | 2732 v8::Local<v8::Value> result = |
2727 CompileRun("var ab1 = new ArrayBuffer(2);" | 2733 CompileRun("var ab1 = new ArrayBuffer(2);" |
2728 "var u8_a = new Uint8Array(ab1);" | 2734 "var u8_a = new Uint8Array(ab1);" |
2729 "u8_a[0] = 0xAA;" | 2735 "u8_a[0] = 0xAA;" |
2730 "u8_a[1] = 0xFF; u8_a.buffer"); | 2736 "u8_a[1] = 0xFF; u8_a.buffer"); |
(...skipping 22 matching lines...) Expand all Loading... |
2753 CHECK_EQ(0xBB, ab1_data[0]); | 2759 CHECK_EQ(0xBB, ab1_data[0]); |
2754 CHECK_EQ(0xFF, ab1_data[1]); | 2760 CHECK_EQ(0xFF, ab1_data[1]); |
2755 ab1_data[0] = 0xCC; | 2761 ab1_data[0] = 0xCC; |
2756 ab1_data[1] = 0x11; | 2762 ab1_data[1] = 0x11; |
2757 result = CompileRun("u8_a[0] + u8_a[1]"); | 2763 result = CompileRun("u8_a[0] + u8_a[1]"); |
2758 CHECK_EQ(0xDD, result->Int32Value()); | 2764 CHECK_EQ(0xDD, result->Int32Value()); |
2759 } | 2765 } |
2760 | 2766 |
2761 | 2767 |
2762 THREADED_TEST(ArrayBuffer_External) { | 2768 THREADED_TEST(ArrayBuffer_External) { |
| 2769 i::FLAG_harmony_array_buffer = true; |
| 2770 i::FLAG_harmony_typed_arrays = true; |
| 2771 |
2763 LocalContext env; | 2772 LocalContext env; |
2764 v8::Isolate* isolate = env->GetIsolate(); | 2773 v8::Isolate* isolate = env->GetIsolate(); |
2765 v8::HandleScope handle_scope(isolate); | 2774 v8::HandleScope handle_scope(isolate); |
2766 | 2775 |
2767 i::ScopedVector<uint8_t> my_data(100); | 2776 i::ScopedVector<uint8_t> my_data(100); |
2768 memset(my_data.start(), 0, 100); | 2777 memset(my_data.start(), 0, 100); |
2769 Local<v8::ArrayBuffer> ab3 = v8::ArrayBuffer::New(my_data.start(), 100); | 2778 Local<v8::ArrayBuffer> ab3 = v8::ArrayBuffer::New(my_data.start(), 100); |
2770 CheckInternalFieldsAreZero(ab3); | 2779 CheckInternalFieldsAreZero(ab3); |
2771 CHECK_EQ(100, static_cast<int>(ab3->ByteLength())); | 2780 CHECK_EQ(100, static_cast<int>(ab3->ByteLength())); |
2772 CHECK(ab3->IsExternal()); | 2781 CHECK(ab3->IsExternal()); |
(...skipping 10169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12942 | 12951 |
12943 isolate->Dispose(); | 12952 isolate->Dispose(); |
12944 } | 12953 } |
12945 | 12954 |
12946 | 12955 |
12947 TEST(SetFunctionEntryHook) { | 12956 TEST(SetFunctionEntryHook) { |
12948 // FunctionEntryHook does not work well with experimental natives. | 12957 // FunctionEntryHook does not work well with experimental natives. |
12949 // Experimental natives are compiled during snapshot deserialization. | 12958 // Experimental natives are compiled during snapshot deserialization. |
12950 // This test breaks because InstallGetter (function from snapshot that | 12959 // This test breaks because InstallGetter (function from snapshot that |
12951 // only gets called from experimental natives) is compiled with entry hooks. | 12960 // only gets called from experimental natives) is compiled with entry hooks. |
| 12961 i::FLAG_harmony_typed_arrays = false; |
| 12962 i::FLAG_harmony_array_buffer = false; |
| 12963 |
12952 i::FLAG_allow_natives_syntax = true; | 12964 i::FLAG_allow_natives_syntax = true; |
12953 i::FLAG_use_inlining = false; | 12965 i::FLAG_use_inlining = false; |
12954 | 12966 |
12955 SetFunctionEntryHookTest test; | 12967 SetFunctionEntryHookTest test; |
12956 test.RunTest(); | 12968 test.RunTest(); |
12957 } | 12969 } |
12958 | 12970 |
12959 | 12971 |
12960 static i::HashMap* code_map = NULL; | 12972 static i::HashMap* code_map = NULL; |
12961 static i::HashMap* jitcode_line_info = NULL; | 12973 static i::HashMap* jitcode_line_info = NULL; |
(...skipping 3176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
16138 v8::DataView::New(ab, 2, kSize); | 16150 v8::DataView::New(ab, 2, kSize); |
16139 CheckInternalFieldsAreZero<v8::ArrayBufferView>(dv); | 16151 CheckInternalFieldsAreZero<v8::ArrayBufferView>(dv); |
16140 CHECK_EQ(2, static_cast<int>(dv->ByteOffset())); | 16152 CHECK_EQ(2, static_cast<int>(dv->ByteOffset())); |
16141 CHECK_EQ(kSize, static_cast<int>(dv->ByteLength())); | 16153 CHECK_EQ(kSize, static_cast<int>(dv->ByteLength())); |
16142 CHECK_EQ(ab, dv->Buffer()); | 16154 CHECK_EQ(ab, dv->Buffer()); |
16143 } | 16155 } |
16144 | 16156 |
16145 | 16157 |
16146 #define IS_ARRAY_BUFFER_VIEW_TEST(View) \ | 16158 #define IS_ARRAY_BUFFER_VIEW_TEST(View) \ |
16147 THREADED_TEST(Is##View) { \ | 16159 THREADED_TEST(Is##View) { \ |
| 16160 i::FLAG_harmony_array_buffer = true; \ |
| 16161 i::FLAG_harmony_typed_arrays = true; \ |
16148 LocalContext env; \ | 16162 LocalContext env; \ |
16149 v8::Isolate* isolate = env->GetIsolate(); \ | 16163 v8::Isolate* isolate = env->GetIsolate(); \ |
16150 v8::HandleScope handle_scope(isolate); \ | 16164 v8::HandleScope handle_scope(isolate); \ |
16151 \ | 16165 \ |
16152 Handle<Value> result = CompileRun( \ | 16166 Handle<Value> result = CompileRun( \ |
16153 "var ab = new ArrayBuffer(128);" \ | 16167 "var ab = new ArrayBuffer(128);" \ |
16154 "new " #View "(ab)"); \ | 16168 "new " #View "(ab)"); \ |
16155 CHECK(result->IsArrayBufferView()); \ | 16169 CHECK(result->IsArrayBufferView()); \ |
16156 CHECK(result->Is##View()); \ | 16170 CHECK(result->Is##View()); \ |
16157 CheckInternalFieldsAreZero<v8::ArrayBufferView>(result.As<v8::View>()); \ | 16171 CheckInternalFieldsAreZero<v8::ArrayBufferView>(result.As<v8::View>()); \ |
(...skipping 3995 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
20153 CheckCorrectThrow("%HasProperty(other, 'x')"); | 20167 CheckCorrectThrow("%HasProperty(other, 'x')"); |
20154 CheckCorrectThrow("%HasElement(other, 1)"); | 20168 CheckCorrectThrow("%HasElement(other, 1)"); |
20155 CheckCorrectThrow("%IsPropertyEnumerable(other, 'x')"); | 20169 CheckCorrectThrow("%IsPropertyEnumerable(other, 'x')"); |
20156 CheckCorrectThrow("%GetPropertyNames(other)"); | 20170 CheckCorrectThrow("%GetPropertyNames(other)"); |
20157 CheckCorrectThrow("%GetLocalPropertyNames(other, true)"); | 20171 CheckCorrectThrow("%GetLocalPropertyNames(other, true)"); |
20158 CheckCorrectThrow("%DefineOrRedefineAccessorProperty(" | 20172 CheckCorrectThrow("%DefineOrRedefineAccessorProperty(" |
20159 "other, 'x', null, null, 1)"); | 20173 "other, 'x', null, null, 1)"); |
20160 } | 20174 } |
20161 | 20175 |
20162 #endif // WIN32 | 20176 #endif // WIN32 |
OLD | NEW |