| 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 2529 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2540 CHECK(obj->Has(sym1)); | 2540 CHECK(obj->Has(sym1)); |
| 2541 CHECK(obj->Has(sym2)); | 2541 CHECK(obj->Has(sym2)); |
| 2542 CHECK(obj->Delete(sym2)); | 2542 CHECK(obj->Delete(sym2)); |
| 2543 CHECK(obj->Has(sym1)); | 2543 CHECK(obj->Has(sym1)); |
| 2544 CHECK(!obj->Has(sym2)); | 2544 CHECK(!obj->Has(sym2)); |
| 2545 CHECK_EQ(2002, obj->Get(sym1)->Int32Value()); | 2545 CHECK_EQ(2002, obj->Get(sym1)->Int32Value()); |
| 2546 CHECK_EQ(1, obj->GetOwnPropertyNames()->Length()); | 2546 CHECK_EQ(1, obj->GetOwnPropertyNames()->Length()); |
| 2547 } | 2547 } |
| 2548 | 2548 |
| 2549 | 2549 |
| 2550 class ScopedArrayBufferContents { |
| 2551 public: |
| 2552 explicit ScopedArrayBufferContents( |
| 2553 const v8::ArrayBuffer::Contents& contents) |
| 2554 : contents_(contents) {} |
| 2555 ~ScopedArrayBufferContents() { free(contents_.Data()); } |
| 2556 void* Data() const { return contents_.Data(); } |
| 2557 size_t ByteLength() const { return contents_.ByteLength(); } |
| 2558 private: |
| 2559 const v8::ArrayBuffer::Contents contents_; |
| 2560 }; |
| 2561 |
| 2562 |
| 2550 THREADED_TEST(ArrayBuffer_ApiInternalToExternal) { | 2563 THREADED_TEST(ArrayBuffer_ApiInternalToExternal) { |
| 2551 i::FLAG_harmony_array_buffer = true; | 2564 i::FLAG_harmony_array_buffer = true; |
| 2552 i::FLAG_harmony_typed_arrays = true; | 2565 i::FLAG_harmony_typed_arrays = true; |
| 2553 | 2566 |
| 2554 LocalContext env; | 2567 LocalContext env; |
| 2555 v8::Isolate* isolate = env->GetIsolate(); | 2568 v8::Isolate* isolate = env->GetIsolate(); |
| 2556 v8::HandleScope handle_scope(isolate); | 2569 v8::HandleScope handle_scope(isolate); |
| 2557 | 2570 |
| 2558 Local<v8::ArrayBuffer> ab = v8::ArrayBuffer::New(1024); | 2571 Local<v8::ArrayBuffer> ab = v8::ArrayBuffer::New(1024); |
| 2559 CHECK_EQ(1024, static_cast<int>(ab->ByteLength())); | 2572 CHECK_EQ(1024, static_cast<int>(ab->ByteLength())); |
| 2560 CHECK(!ab->IsExternal()); | 2573 CHECK(!ab->IsExternal()); |
| 2561 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); | 2574 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); |
| 2562 | 2575 |
| 2563 v8::ArrayBufferContents ab_contents; | 2576 ScopedArrayBufferContents ab_contents(ab->Externalize()); |
| 2564 ab->Externalize(&ab_contents); | |
| 2565 CHECK(ab->IsExternal()); | 2577 CHECK(ab->IsExternal()); |
| 2566 | 2578 |
| 2567 CHECK_EQ(1024, static_cast<int>(ab_contents.ByteLength())); | 2579 CHECK_EQ(1024, static_cast<int>(ab_contents.ByteLength())); |
| 2568 uint8_t* data = static_cast<uint8_t*>(ab_contents.Data()); | 2580 uint8_t* data = static_cast<uint8_t*>(ab_contents.Data()); |
| 2569 ASSERT(data != NULL); | 2581 ASSERT(data != NULL); |
| 2570 env->Global()->Set(v8_str("ab"), ab); | 2582 env->Global()->Set(v8_str("ab"), ab); |
| 2571 | 2583 |
| 2572 v8::Handle<v8::Value> result = CompileRun("ab.byteLength"); | 2584 v8::Handle<v8::Value> result = CompileRun("ab.byteLength"); |
| 2573 CHECK_EQ(1024, result->Int32Value()); | 2585 CHECK_EQ(1024, result->Int32Value()); |
| 2574 | 2586 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 2596 | 2608 |
| 2597 | 2609 |
| 2598 v8::Handle<v8::Value> result = | 2610 v8::Handle<v8::Value> result = |
| 2599 CompileRun("var ab1 = new ArrayBuffer(2);" | 2611 CompileRun("var ab1 = new ArrayBuffer(2);" |
| 2600 "var u8_a = new Uint8Array(ab1);" | 2612 "var u8_a = new Uint8Array(ab1);" |
| 2601 "u8_a[0] = 0xAA;" | 2613 "u8_a[0] = 0xAA;" |
| 2602 "u8_a[1] = 0xFF; u8_a.buffer"); | 2614 "u8_a[1] = 0xFF; u8_a.buffer"); |
| 2603 Local<v8::ArrayBuffer> ab1 = v8::ArrayBuffer::Cast(*result); | 2615 Local<v8::ArrayBuffer> ab1 = v8::ArrayBuffer::Cast(*result); |
| 2604 CHECK_EQ(2, static_cast<int>(ab1->ByteLength())); | 2616 CHECK_EQ(2, static_cast<int>(ab1->ByteLength())); |
| 2605 CHECK(!ab1->IsExternal()); | 2617 CHECK(!ab1->IsExternal()); |
| 2606 v8::ArrayBufferContents ab1_contents; | 2618 ScopedArrayBufferContents ab1_contents(ab1->Externalize()); |
| 2607 ab1->Externalize(&ab1_contents); | |
| 2608 CHECK(ab1->IsExternal()); | 2619 CHECK(ab1->IsExternal()); |
| 2609 | 2620 |
| 2610 result = CompileRun("ab1.byteLength"); | 2621 result = CompileRun("ab1.byteLength"); |
| 2611 CHECK_EQ(2, result->Int32Value()); | 2622 CHECK_EQ(2, result->Int32Value()); |
| 2612 result = CompileRun("u8_a[0]"); | 2623 result = CompileRun("u8_a[0]"); |
| 2613 CHECK_EQ(0xAA, result->Int32Value()); | 2624 CHECK_EQ(0xAA, result->Int32Value()); |
| 2614 result = CompileRun("u8_a[1]"); | 2625 result = CompileRun("u8_a[1]"); |
| 2615 CHECK_EQ(0xFF, result->Int32Value()); | 2626 CHECK_EQ(0xFF, result->Int32Value()); |
| 2616 result = CompileRun("var u8_b = new Uint8Array(ab1);" | 2627 result = CompileRun("var u8_b = new Uint8Array(ab1);" |
| 2617 "u8_b[0] = 0xBB;" | 2628 "u8_b[0] = 0xBB;" |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2704 v8::Handle<v8::Uint32Array> u32a = | 2715 v8::Handle<v8::Uint32Array> u32a = |
| 2705 CreateAndCheck<v8::Uint32Array, 4>(buffer, 4, 255); | 2716 CreateAndCheck<v8::Uint32Array, 4>(buffer, 4, 255); |
| 2706 v8::Handle<v8::Int32Array> i32a = | 2717 v8::Handle<v8::Int32Array> i32a = |
| 2707 CreateAndCheck<v8::Int32Array, 4>(buffer, 4, 255); | 2718 CreateAndCheck<v8::Int32Array, 4>(buffer, 4, 255); |
| 2708 | 2719 |
| 2709 v8::Handle<v8::Float32Array> f32a = | 2720 v8::Handle<v8::Float32Array> f32a = |
| 2710 CreateAndCheck<v8::Float32Array, 4>(buffer, 4, 255); | 2721 CreateAndCheck<v8::Float32Array, 4>(buffer, 4, 255); |
| 2711 v8::Handle<v8::Float64Array> f64a = | 2722 v8::Handle<v8::Float64Array> f64a = |
| 2712 CreateAndCheck<v8::Float64Array, 8>(buffer, 8, 127); | 2723 CreateAndCheck<v8::Float64Array, 8>(buffer, 8, 127); |
| 2713 | 2724 |
| 2714 v8::ArrayBufferContents contents; | 2725 ScopedArrayBufferContents contents(buffer->Externalize()); |
| 2715 buffer->Externalize(&contents); | |
| 2716 buffer->Neuter(); | 2726 buffer->Neuter(); |
| 2717 CHECK_EQ(0, static_cast<int>(buffer->ByteLength())); | 2727 CHECK_EQ(0, static_cast<int>(buffer->ByteLength())); |
| 2718 CheckIsNeutered(u8a); | 2728 CheckIsNeutered(u8a); |
| 2719 CheckIsNeutered(u8c); | 2729 CheckIsNeutered(u8c); |
| 2720 CheckIsNeutered(i8a); | 2730 CheckIsNeutered(i8a); |
| 2721 CheckIsNeutered(u16a); | 2731 CheckIsNeutered(u16a); |
| 2722 CheckIsNeutered(i16a); | 2732 CheckIsNeutered(i16a); |
| 2723 CheckIsNeutered(u32a); | 2733 CheckIsNeutered(u32a); |
| 2724 CheckIsNeutered(i32a); | 2734 CheckIsNeutered(i32a); |
| 2725 CheckIsNeutered(f32a); | 2735 CheckIsNeutered(f32a); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 2756 v8::Int16Array::Cast(*CompileRun("i16a"))); | 2766 v8::Int16Array::Cast(*CompileRun("i16a"))); |
| 2757 v8::Handle<v8::Uint32Array> u32a( | 2767 v8::Handle<v8::Uint32Array> u32a( |
| 2758 v8::Uint32Array::Cast(*CompileRun("u32a"))); | 2768 v8::Uint32Array::Cast(*CompileRun("u32a"))); |
| 2759 v8::Handle<v8::Int32Array> i32a( | 2769 v8::Handle<v8::Int32Array> i32a( |
| 2760 v8::Int32Array::Cast(*CompileRun("i32a"))); | 2770 v8::Int32Array::Cast(*CompileRun("i32a"))); |
| 2761 v8::Handle<v8::Float32Array> f32a( | 2771 v8::Handle<v8::Float32Array> f32a( |
| 2762 v8::Float32Array::Cast(*CompileRun("f32a"))); | 2772 v8::Float32Array::Cast(*CompileRun("f32a"))); |
| 2763 v8::Handle<v8::Float64Array> f64a( | 2773 v8::Handle<v8::Float64Array> f64a( |
| 2764 v8::Float64Array::Cast(*CompileRun("f64a"))); | 2774 v8::Float64Array::Cast(*CompileRun("f64a"))); |
| 2765 | 2775 |
| 2766 v8::ArrayBufferContents contents; | 2776 ScopedArrayBufferContents contents(ab->Externalize()); |
| 2767 ab->Externalize(&contents); | |
| 2768 ab->Neuter(); | 2777 ab->Neuter(); |
| 2769 CHECK_EQ(0, static_cast<int>(ab->ByteLength())); | 2778 CHECK_EQ(0, static_cast<int>(ab->ByteLength())); |
| 2770 CheckIsNeutered(u8a); | 2779 CheckIsNeutered(u8a); |
| 2771 CheckIsNeutered(u8c); | 2780 CheckIsNeutered(u8c); |
| 2772 CheckIsNeutered(i8a); | 2781 CheckIsNeutered(i8a); |
| 2773 CheckIsNeutered(u16a); | 2782 CheckIsNeutered(u16a); |
| 2774 CheckIsNeutered(i16a); | 2783 CheckIsNeutered(i16a); |
| 2775 CheckIsNeutered(u32a); | 2784 CheckIsNeutered(u32a); |
| 2776 CheckIsNeutered(i32a); | 2785 CheckIsNeutered(i32a); |
| 2777 CheckIsNeutered(f32a); | 2786 CheckIsNeutered(f32a); |
| (...skipping 16551 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 19329 i::Semaphore* sem_; | 19338 i::Semaphore* sem_; |
| 19330 volatile int sem_value_; | 19339 volatile int sem_value_; |
| 19331 }; | 19340 }; |
| 19332 | 19341 |
| 19333 | 19342 |
| 19334 THREADED_TEST(SemaphoreInterruption) { | 19343 THREADED_TEST(SemaphoreInterruption) { |
| 19335 ThreadInterruptTest().RunTest(); | 19344 ThreadInterruptTest().RunTest(); |
| 19336 } | 19345 } |
| 19337 | 19346 |
| 19338 #endif // WIN32 | 19347 #endif // WIN32 |
| OLD | NEW |