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

Side by Side Diff: test/cctest/test-api.cc

Issue 14195034: First cut at API for native Typed Arrays. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Self-review Created 7 years, 8 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
« src/api.cc ('K') | « src/objects.cc ('k') | no next file » | 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 2297 matching lines...) Expand 10 before | Expand all | Expand 10 after
2308 "u8_b[1] = 0xCC;" 2308 "u8_b[1] = 0xCC;"
2309 "u8_b.length"); 2309 "u8_b.length");
2310 CHECK_EQ(100, result->Int32Value()); 2310 CHECK_EQ(100, result->Int32Value());
2311 CHECK_EQ(0xBB, my_data[0]); 2311 CHECK_EQ(0xBB, my_data[0]);
2312 CHECK_EQ(0xCC, my_data[1]); 2312 CHECK_EQ(0xCC, my_data[1]);
2313 my_data[0] = 0xCC; 2313 my_data[0] = 0xCC;
2314 my_data[1] = 0x11; 2314 my_data[1] = 0x11;
2315 result = CompileRun("u8_b[0] + u8_b[1]"); 2315 result = CompileRun("u8_b[0] + u8_b[1]");
2316 CHECK_EQ(0xDD, result->Int32Value()); 2316 CHECK_EQ(0xDD, result->Int32Value());
2317 2317
2318
2319 delete[] my_data; 2318 delete[] my_data;
2320 } 2319 }
2321 2320
2322 2321
2323 THREADED_TEST(HiddenProperties) { 2322 THREADED_TEST(HiddenProperties) {
2324 LocalContext env; 2323 LocalContext env;
2325 v8::HandleScope scope(env->GetIsolate()); 2324 v8::HandleScope scope(env->GetIsolate());
2326 2325
2327 v8::Local<v8::Object> obj = v8::Object::New(); 2326 v8::Local<v8::Object> obj = v8::Object::New();
2328 v8::Local<v8::String> key = v8_str("api-test::hidden-key"); 2327 v8::Local<v8::String> key = v8_str("api-test::hidden-key");
(...skipping 9959 matching lines...) Expand 10 before | Expand all | Expand 10 after
12288 12287
12289 static int64_t cast(intptr_t x) { return static_cast<int64_t>(x); } 12288 static int64_t cast(intptr_t x) { return static_cast<int64_t>(x); }
12290 12289
12291 12290
12292 THREADED_TEST(ExternalAllocatedMemory) { 12291 THREADED_TEST(ExternalAllocatedMemory) {
12293 v8::HandleScope outer(v8::Isolate::GetCurrent()); 12292 v8::HandleScope outer(v8::Isolate::GetCurrent());
12294 v8::Persistent<Context> env(Context::New()); 12293 v8::Persistent<Context> env(Context::New());
12295 CHECK(!env.IsEmpty()); 12294 CHECK(!env.IsEmpty());
12296 const intptr_t kSize = 1024*1024; 12295 const intptr_t kSize = 1024*1024;
12297 v8::Isolate* isolate = env->GetIsolate(); 12296 v8::Isolate* isolate = env->GetIsolate();
12298 CHECK_EQ(cast(isolate->AdjustAmountOfExternalAllocatedMemory(kSize)), 12297 int64_t baseline = cast(isolate->AdjustAmountOfExternalAllocatedMemory(0));
12299 cast(kSize)); 12298 CHECK_EQ(baseline + cast(kSize),
12300 CHECK_EQ(cast(isolate->AdjustAmountOfExternalAllocatedMemory(-kSize)), 12299 cast(isolate->AdjustAmountOfExternalAllocatedMemory(kSize)));
rossberg 2013/04/29 10:50:27 Nit: indentation
Dmitry Lomov (no reviews) 2013/04/29 11:08:53 Done.
12301 cast(0)); 12300 CHECK_EQ(baseline,
12301 cast(isolate->AdjustAmountOfExternalAllocatedMemory(-kSize)));
12302 } 12302 }
12303 12303
12304 12304
12305 THREADED_TEST(DisposeEnteredContext) { 12305 THREADED_TEST(DisposeEnteredContext) {
12306 LocalContext outer; 12306 LocalContext outer;
12307 v8::HandleScope scope(outer->GetIsolate()); 12307 v8::HandleScope scope(outer->GetIsolate());
12308 { v8::Persistent<v8::Context> inner = v8::Context::New(); 12308 { v8::Persistent<v8::Context> inner = v8::Context::New();
12309 inner->Enter(); 12309 inner->Enter();
12310 inner.Dispose(inner->GetIsolate()); 12310 inner.Dispose(inner->GetIsolate());
12311 inner.Clear(); 12311 inner.Clear();
(...skipping 2116 matching lines...) Expand 10 before | Expand all | Expand 10 after
14428 default: 14428 default:
14429 UNREACHABLE(); 14429 UNREACHABLE();
14430 return -1; 14430 return -1;
14431 } 14431 }
14432 UNREACHABLE(); 14432 UNREACHABLE();
14433 return -1; 14433 return -1;
14434 } 14434 }
14435 14435
14436 14436
14437 template <class ExternalArrayClass, class ElementType> 14437 template <class ExternalArrayClass, class ElementType>
14438 static void ExternalArrayTestHelper(v8::ExternalArrayType array_type, 14438 static void ObjectWithExternalArrayTestHelper(
14439 int64_t low, 14439 Handle<Context> context,
14440 int64_t high) { 14440 v8::Handle<Object> obj,
14441 LocalContext context; 14441 int elementCount,
rossberg 2013/04/29 10:50:27 Nit: element_count
Dmitry Lomov (no reviews) 2013/04/29 11:08:53 Done.
14442 v8::HandleScope scope(context->GetIsolate()); 14442 v8::ExternalArrayType array_type,
14443 const int kElementCount = 40; 14443 int64_t low, int64_t high) {
14444 int element_size = ExternalArrayElementSize(array_type);
14445 ElementType* array_data =
14446 static_cast<ElementType*>(malloc(kElementCount * element_size));
14447 i::Handle<ExternalArrayClass> array =
14448 i::Handle<ExternalArrayClass>::cast(
14449 FACTORY->NewExternalArray(kElementCount, array_type, array_data));
14450 // Force GC to trigger verification.
14451 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags);
14452 for (int i = 0; i < kElementCount; i++) {
14453 array->set(i, static_cast<ElementType>(i));
14454 }
14455 // Force GC to trigger verification.
14456 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags);
14457 for (int i = 0; i < kElementCount; i++) {
14458 CHECK_EQ(static_cast<int64_t>(i),
14459 static_cast<int64_t>(array->get_scalar(i)));
14460 CHECK_EQ(static_cast<int64_t>(i), static_cast<int64_t>(array_data[i]));
14461 }
14462
14463 v8::Handle<v8::Object> obj = v8::Object::New();
14464 i::Handle<i::JSObject> jsobj = v8::Utils::OpenHandle(*obj); 14444 i::Handle<i::JSObject> jsobj = v8::Utils::OpenHandle(*obj);
14465 // Set the elements to be the external array.
14466 obj->SetIndexedPropertiesToExternalArrayData(array_data,
14467 array_type,
14468 kElementCount);
14469 CHECK_EQ(
14470 1, static_cast<int>(jsobj->GetElement(1)->ToObjectChecked()->Number()));
14471 obj->Set(v8_str("field"), v8::Int32::New(1503)); 14445 obj->Set(v8_str("field"), v8::Int32::New(1503));
14472 context->Global()->Set(v8_str("ext_array"), obj); 14446 context->Global()->Set(v8_str("ext_array"), obj);
14473 v8::Handle<v8::Value> result = CompileRun("ext_array.field"); 14447 v8::Handle<v8::Value> result = CompileRun("ext_array.field");
14474 CHECK_EQ(1503, result->Int32Value()); 14448 CHECK_EQ(1503, result->Int32Value());
14475 result = CompileRun("ext_array[1]"); 14449 result = CompileRun("ext_array[1]");
14476 CHECK_EQ(1, result->Int32Value()); 14450 CHECK_EQ(1, result->Int32Value());
14477 14451
14478 // Check pass through of assigned smis 14452 // Check pass through of assigned smis
14479 result = CompileRun("var sum = 0;" 14453 result = CompileRun("var sum = 0;"
14480 "for (var i = 0; i < 8; i++) {" 14454 "for (var i = 0; i < 8; i++) {"
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
14577 14551
14578 // Make sure out-of-range loads do not throw. 14552 // Make sure out-of-range loads do not throw.
14579 i::OS::SNPrintF(test_buf, 14553 i::OS::SNPrintF(test_buf,
14580 "var caught_exception = false;" 14554 "var caught_exception = false;"
14581 "try {" 14555 "try {"
14582 " ext_array[%d];" 14556 " ext_array[%d];"
14583 "} catch (e) {" 14557 "} catch (e) {"
14584 " caught_exception = true;" 14558 " caught_exception = true;"
14585 "}" 14559 "}"
14586 "caught_exception;", 14560 "caught_exception;",
14587 kElementCount); 14561 elementCount);
14588 result = CompileRun(test_buf.start()); 14562 result = CompileRun(test_buf.start());
14589 CHECK_EQ(false, result->BooleanValue()); 14563 CHECK_EQ(false, result->BooleanValue());
14590 14564
14591 // Make sure out-of-range stores do not throw. 14565 // Make sure out-of-range stores do not throw.
14592 i::OS::SNPrintF(test_buf, 14566 i::OS::SNPrintF(test_buf,
14593 "var caught_exception = false;" 14567 "var caught_exception = false;"
14594 "try {" 14568 "try {"
14595 " ext_array[%d] = 1;" 14569 " ext_array[%d] = 1;"
14596 "} catch (e) {" 14570 "} catch (e) {"
14597 " caught_exception = true;" 14571 " caught_exception = true;"
14598 "}" 14572 "}"
14599 "caught_exception;", 14573 "caught_exception;",
14600 kElementCount); 14574 elementCount);
14601 result = CompileRun(test_buf.start()); 14575 result = CompileRun(test_buf.start());
14602 CHECK_EQ(false, result->BooleanValue()); 14576 CHECK_EQ(false, result->BooleanValue());
14603 14577
14604 // Check other boundary conditions, values and operations. 14578 // Check other boundary conditions, values and operations.
14605 result = CompileRun("for (var i = 0; i < 8; i++) {" 14579 result = CompileRun("for (var i = 0; i < 8; i++) {"
14606 " ext_array[7] = undefined;" 14580 " ext_array[7] = undefined;"
14607 "}" 14581 "}"
14608 "ext_array[7];"); 14582 "ext_array[7];");
14609 CHECK_EQ(0, result->Int32Value()); 14583 CHECK_EQ(0, result->Int32Value());
14610 if (array_type == v8::kExternalDoubleArray || 14584 if (array_type == v8::kExternalDoubleArray ||
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
14691 " (ext_array[5] == expected_results[i]);" 14665 " (ext_array[5] == expected_results[i]);"
14692 "}" 14666 "}"
14693 "all_passed;", 14667 "all_passed;",
14694 (is_unsigned ? 14668 (is_unsigned ?
14695 unsigned_data : 14669 unsigned_data :
14696 (is_pixel_data ? pixel_data : signed_data))); 14670 (is_pixel_data ? pixel_data : signed_data)));
14697 result = CompileRun(test_buf.start()); 14671 result = CompileRun(test_buf.start());
14698 CHECK_EQ(true, result->BooleanValue()); 14672 CHECK_EQ(true, result->BooleanValue());
14699 } 14673 }
14700 14674
14701 for (int i = 0; i < kElementCount; i++) { 14675 i::Handle<ExternalArrayClass> array(
14676 ExternalArrayClass::cast(jsobj->elements()));
14677 for (int i = 0; i < elementCount; i++) {
14702 array->set(i, static_cast<ElementType>(i)); 14678 array->set(i, static_cast<ElementType>(i));
14703 } 14679 }
14680
14704 // Test complex assignments 14681 // Test complex assignments
14705 result = CompileRun("function ee_op_test_complex_func(sum) {" 14682 result = CompileRun("function ee_op_test_complex_func(sum) {"
14706 " for (var i = 0; i < 40; ++i) {" 14683 " for (var i = 0; i < 40; ++i) {"
14707 " sum += (ext_array[i] += 1);" 14684 " sum += (ext_array[i] += 1);"
14708 " sum += (ext_array[i] -= 1);" 14685 " sum += (ext_array[i] -= 1);"
14709 " } " 14686 " } "
14710 " return sum;" 14687 " return sum;"
14711 "}" 14688 "}"
14712 "sum=0;" 14689 "sum=0;"
14713 "for (var i=0;i<10000;++i) {" 14690 "for (var i=0;i<10000;++i) {"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
14750 14727
14751 result = CompileRun("ext_array[1] = 23;" 14728 result = CompileRun("ext_array[1] = 23;"
14752 "ext_array.__proto__ = [];" 14729 "ext_array.__proto__ = [];"
14753 "js_array.__proto__ = ext_array;" 14730 "js_array.__proto__ = ext_array;"
14754 "js_array.concat(ext_array);"); 14731 "js_array.concat(ext_array);");
14755 CHECK_EQ(77, v8::Object::Cast(*result)->Get(v8_str("0"))->Int32Value()); 14732 CHECK_EQ(77, v8::Object::Cast(*result)->Get(v8_str("0"))->Int32Value());
14756 CHECK_EQ(23, v8::Object::Cast(*result)->Get(v8_str("1"))->Int32Value()); 14733 CHECK_EQ(23, v8::Object::Cast(*result)->Get(v8_str("1"))->Int32Value());
14757 14734
14758 result = CompileRun("ext_array[1] = 23;"); 14735 result = CompileRun("ext_array[1] = 23;");
14759 CHECK_EQ(23, result->Int32Value()); 14736 CHECK_EQ(23, result->Int32Value());
14737 }
14738
14739
14740 template <class ExternalArrayClass, class ElementType>
14741 static void ExternalArrayTestHelper(v8::ExternalArrayType array_type,
14742 int64_t low,
14743 int64_t high) {
14744 LocalContext context;
14745 v8::HandleScope scope(context->GetIsolate());
14746 const int kElementCount = 40;
14747 int element_size = ExternalArrayElementSize(array_type);
14748 ElementType* array_data =
14749 static_cast<ElementType*>(malloc(kElementCount * element_size));
14750 i::Handle<ExternalArrayClass> array =
14751 i::Handle<ExternalArrayClass>::cast(
14752 FACTORY->NewExternalArray(kElementCount, array_type, array_data));
14753 // Force GC to trigger verification.
14754 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags);
14755 for (int i = 0; i < kElementCount; i++) {
14756 array->set(i, static_cast<ElementType>(i));
14757 }
14758 // Force GC to trigger verification.
14759 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags);
14760 for (int i = 0; i < kElementCount; i++) {
14761 CHECK_EQ(static_cast<int64_t>(i),
14762 static_cast<int64_t>(array->get_scalar(i)));
14763 CHECK_EQ(static_cast<int64_t>(i), static_cast<int64_t>(array_data[i]));
14764 }
14765
14766 v8::Handle<v8::Object> obj = v8::Object::New();
14767 i::Handle<i::JSObject> jsobj = v8::Utils::OpenHandle(*obj);
14768 // Set the elements to be the external array.
14769 obj->SetIndexedPropertiesToExternalArrayData(array_data,
14770 array_type,
14771 kElementCount);
14772 CHECK_EQ(
14773 1, static_cast<int>(jsobj->GetElement(1)->ToObjectChecked()->Number()));
14774
14775 ObjectWithExternalArrayTestHelper<ExternalArrayClass, ElementType>(
14776 context.local(), obj, kElementCount, array_type, low, high);
14777
14778 v8::Handle<v8::Value> result;
14760 14779
14761 // Test more complex manipulations which cause eax to contain values 14780 // Test more complex manipulations which cause eax to contain values
14762 // that won't be completely overwritten by loads from the arrays. 14781 // that won't be completely overwritten by loads from the arrays.
14763 // This catches bugs in the instructions used for the KeyedLoadIC 14782 // This catches bugs in the instructions used for the KeyedLoadIC
14764 // for byte and word types. 14783 // for byte and word types.
14765 { 14784 {
14766 const int kXSize = 300; 14785 const int kXSize = 300;
14767 const int kYSize = 300; 14786 const int kYSize = 300;
14768 const int kLargeElementCount = kXSize * kYSize * 4; 14787 const int kLargeElementCount = kXSize * kYSize * 4;
14769 ElementType* large_array_data = 14788 ElementType* large_array_data =
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
15067 ExternalArrayLimitTestHelper(v8::kExternalUnsignedIntArray, 0xffffffff); 15086 ExternalArrayLimitTestHelper(v8::kExternalUnsignedIntArray, 0xffffffff);
15068 ExternalArrayLimitTestHelper(v8::kExternalFloatArray, 0x40000000); 15087 ExternalArrayLimitTestHelper(v8::kExternalFloatArray, 0x40000000);
15069 ExternalArrayLimitTestHelper(v8::kExternalFloatArray, 0xffffffff); 15088 ExternalArrayLimitTestHelper(v8::kExternalFloatArray, 0xffffffff);
15070 ExternalArrayLimitTestHelper(v8::kExternalDoubleArray, 0x40000000); 15089 ExternalArrayLimitTestHelper(v8::kExternalDoubleArray, 0x40000000);
15071 ExternalArrayLimitTestHelper(v8::kExternalDoubleArray, 0xffffffff); 15090 ExternalArrayLimitTestHelper(v8::kExternalDoubleArray, 0xffffffff);
15072 ExternalArrayLimitTestHelper(v8::kExternalPixelArray, 0x40000000); 15091 ExternalArrayLimitTestHelper(v8::kExternalPixelArray, 0x40000000);
15073 ExternalArrayLimitTestHelper(v8::kExternalPixelArray, 0xffffffff); 15092 ExternalArrayLimitTestHelper(v8::kExternalPixelArray, 0xffffffff);
15074 } 15093 }
15075 15094
15076 15095
15096 template <typename ElementType, class TypedArray,
rossberg 2013/04/29 10:50:27 Nit: use either 'typename' or 'class' consistently
Dmitry Lomov (no reviews) 2013/04/29 11:08:53 Done.
15097 class ExternalArrayClass>
15098 void TypedArrayTestHelper(v8::ExternalArrayType array_type,
15099 int64_t low, int64_t high) {
15100 const int kElementCount = 50;
15101 i::FLAG_harmony_typed_arrays = true;
15102
15103 LocalContext env;
15104 v8::Isolate* isolate = env->GetIsolate();
15105 v8::HandleScope handle_scope(isolate);
15106
15107 Local<v8::ArrayBuffer> ab =
15108 v8::ArrayBuffer::New((kElementCount+2)*sizeof(ElementType));
15109 Local<TypedArray> ta =
15110 TypedArray::New(ab, 2*sizeof(ElementType), kElementCount);
15111 CHECK_EQ(kElementCount, static_cast<int>(ta->Length()));
15112 CHECK_EQ(2*sizeof(ElementType), static_cast<int>(ta->ByteOffset()));
15113 CHECK_EQ(kElementCount*sizeof(ElementType),
15114 static_cast<int>(ta->ByteLength()));
15115 CHECK_EQ(ab, ta->Buffer());
15116
15117 ElementType* data = static_cast<ElementType*>(ab->Data()) + 2;
15118 for (int i = 0; i < kElementCount; i++) {
15119 data[i] = static_cast<ElementType>(i);
15120 }
15121
15122 ObjectWithExternalArrayTestHelper<ExternalArrayClass, ElementType>(
15123 env.local(), ta, kElementCount, array_type, low, high);
15124 }
15125
15126
15127 THREADED_TEST(Uint8Array) {
15128 TypedArrayTestHelper<uint8_t, v8::Uint8Array, i::ExternalUnsignedByteArray>(
15129 v8::kExternalUnsignedByteArray, 0, 0xFF);
15130 }
15131
15132
15133 THREADED_TEST(Int8Array) {
15134 TypedArrayTestHelper<int8_t, v8::Int8Array, i::ExternalByteArray>(
15135 v8::kExternalByteArray, -0x80, 0x7F);
15136 }
15137
15138
15139 THREADED_TEST(Uint16Array) {
15140 TypedArrayTestHelper<uint16_t,
15141 v8::Uint16Array,
15142 i::ExternalUnsignedShortArray>(
15143 v8::kExternalUnsignedShortArray, 0, 0xFFFF);
15144 }
15145
15146
15147 THREADED_TEST(Int16Array) {
15148 TypedArrayTestHelper<int16_t, v8::Int16Array, i::ExternalShortArray>(
15149 v8::kExternalShortArray, -0x8000, 0x7FFF);
15150 }
15151
15152
15153 THREADED_TEST(Uint32Array) {
15154 TypedArrayTestHelper<uint32_t, v8::Uint32Array, i::ExternalUnsignedIntArray>(
15155 v8::kExternalUnsignedIntArray, 0, UINT_MAX);
15156 }
15157
15158
15159 THREADED_TEST(Int32Array) {
15160 TypedArrayTestHelper<int32_t, v8::Int32Array, i::ExternalIntArray>(
15161 v8::kExternalIntArray, INT_MIN, INT_MAX);
15162 }
15163
15164
15165 THREADED_TEST(Float32Array) {
15166 TypedArrayTestHelper<float, v8::Float32Array, i::ExternalFloatArray>(
15167 v8::kExternalFloatArray, -500, 500);
15168 }
15169
15170
15171 THREADED_TEST(Float64Array) {
15172 TypedArrayTestHelper<double, v8::Float64Array, i::ExternalDoubleArray>(
15173 v8::kExternalDoubleArray, -500, 500);
15174 }
15175
15176
15077 THREADED_TEST(ScriptContextDependence) { 15177 THREADED_TEST(ScriptContextDependence) {
15078 LocalContext c1; 15178 LocalContext c1;
15079 v8::HandleScope scope(c1->GetIsolate()); 15179 v8::HandleScope scope(c1->GetIsolate());
15080 const char *source = "foo"; 15180 const char *source = "foo";
15081 v8::Handle<v8::Script> dep = v8::Script::Compile(v8::String::New(source)); 15181 v8::Handle<v8::Script> dep = v8::Script::Compile(v8::String::New(source));
15082 v8::Handle<v8::Script> indep = v8::Script::New(v8::String::New(source)); 15182 v8::Handle<v8::Script> indep = v8::Script::New(v8::String::New(source));
15083 c1->Global()->Set(v8::String::New("foo"), v8::Integer::New(100)); 15183 c1->Global()->Set(v8::String::New("foo"), v8::Integer::New(100));
15084 CHECK_EQ(dep->Run()->Int32Value(), 100); 15184 CHECK_EQ(dep->Run()->Int32Value(), 100);
15085 CHECK_EQ(indep->Run()->Int32Value(), 100); 15185 CHECK_EQ(indep->Run()->Int32Value(), 100);
15086 LocalContext c2; 15186 LocalContext c2;
(...skipping 3670 matching lines...) Expand 10 before | Expand all | Expand 10 after
18757 i::Semaphore* sem_; 18857 i::Semaphore* sem_;
18758 volatile int sem_value_; 18858 volatile int sem_value_;
18759 }; 18859 };
18760 18860
18761 18861
18762 THREADED_TEST(SemaphoreInterruption) { 18862 THREADED_TEST(SemaphoreInterruption) {
18763 ThreadInterruptTest().RunTest(); 18863 ThreadInterruptTest().RunTest();
18764 } 18864 }
18765 18865
18766 #endif // WIN32 18866 #endif // WIN32
OLDNEW
« src/api.cc ('K') | « src/objects.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698