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

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

Issue 23549011: remove Isolate::Current from most files starting with 's' through 'v' (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 3 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/v8threads.cc ('K') | « test/cctest/test-accessors.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 2007-2010 the V8 project authors. All rights reserved. 1 // Copyright 2007-2010 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 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 static int make_code(TypeCode type, int id) { 97 static int make_code(TypeCode type, int id) {
98 return static_cast<uint32_t>(type) << kReferenceTypeShift | id; 98 return static_cast<uint32_t>(type) << kReferenceTypeShift | id;
99 } 99 }
100 100
101 101
102 TEST(ExternalReferenceEncoder) { 102 TEST(ExternalReferenceEncoder) {
103 Isolate* isolate = i::Isolate::Current(); 103 Isolate* isolate = i::Isolate::Current();
104 isolate->stats_table()->SetCounterFunction(counter_function); 104 isolate->stats_table()->SetCounterFunction(counter_function);
105 v8::V8::Initialize(); 105 v8::V8::Initialize();
106 106
107 ExternalReferenceEncoder encoder; 107 ExternalReferenceEncoder encoder(isolate);
108 CHECK_EQ(make_code(BUILTIN, Builtins::kArrayCode), 108 CHECK_EQ(make_code(BUILTIN, Builtins::kArrayCode),
109 Encode(encoder, Builtins::kArrayCode)); 109 Encode(encoder, Builtins::kArrayCode));
110 CHECK_EQ(make_code(v8::internal::RUNTIME_FUNCTION, Runtime::kAbort), 110 CHECK_EQ(make_code(v8::internal::RUNTIME_FUNCTION, Runtime::kAbort),
111 Encode(encoder, Runtime::kAbort)); 111 Encode(encoder, Runtime::kAbort));
112 ExternalReference total_compile_size = 112 ExternalReference total_compile_size =
113 ExternalReference(isolate->counters()->total_compile_size()); 113 ExternalReference(isolate->counters()->total_compile_size());
114 CHECK_EQ(make_code(STATS_COUNTER, Counters::k_total_compile_size), 114 CHECK_EQ(make_code(STATS_COUNTER, Counters::k_total_compile_size),
115 encoder.Encode(total_compile_size.address())); 115 encoder.Encode(total_compile_size.address()));
116 ExternalReference stack_limit_address = 116 ExternalReference stack_limit_address =
117 ExternalReference::address_of_stack_limit(isolate); 117 ExternalReference::address_of_stack_limit(isolate);
(...skipping 16 matching lines...) Expand all
134 CHECK_EQ(make_code(UNCLASSIFIED, 52), 134 CHECK_EQ(make_code(UNCLASSIFIED, 52),
135 encoder.Encode(ExternalReference::cpu_features().address())); 135 encoder.Encode(ExternalReference::cpu_features().address()));
136 } 136 }
137 137
138 138
139 TEST(ExternalReferenceDecoder) { 139 TEST(ExternalReferenceDecoder) {
140 Isolate* isolate = i::Isolate::Current(); 140 Isolate* isolate = i::Isolate::Current();
141 isolate->stats_table()->SetCounterFunction(counter_function); 141 isolate->stats_table()->SetCounterFunction(counter_function);
142 v8::V8::Initialize(); 142 v8::V8::Initialize();
143 143
144 ExternalReferenceDecoder decoder; 144 ExternalReferenceDecoder decoder(isolate);
145 CHECK_EQ(AddressOf(Builtins::kArrayCode), 145 CHECK_EQ(AddressOf(Builtins::kArrayCode),
146 decoder.Decode(make_code(BUILTIN, Builtins::kArrayCode))); 146 decoder.Decode(make_code(BUILTIN, Builtins::kArrayCode)));
147 CHECK_EQ(AddressOf(Runtime::kAbort), 147 CHECK_EQ(AddressOf(Runtime::kAbort),
148 decoder.Decode(make_code(v8::internal::RUNTIME_FUNCTION, 148 decoder.Decode(make_code(v8::internal::RUNTIME_FUNCTION,
149 Runtime::kAbort))); 149 Runtime::kAbort)));
150 ExternalReference total_compile_size = 150 ExternalReference total_compile_size =
151 ExternalReference(isolate->counters()->total_compile_size()); 151 ExternalReference(isolate->counters()->total_compile_size());
152 CHECK_EQ(total_compile_size.address(), 152 CHECK_EQ(total_compile_size.address(),
153 decoder.Decode( 153 decoder.Decode(
154 make_code(STATS_COUNTER, 154 make_code(STATS_COUNTER,
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 fprintf(fp, "pointer %d\n", pointer_space_used); 221 fprintf(fp, "pointer %d\n", pointer_space_used);
222 fprintf(fp, "data %d\n", data_space_used); 222 fprintf(fp, "data %d\n", data_space_used);
223 fprintf(fp, "code %d\n", code_space_used); 223 fprintf(fp, "code %d\n", code_space_used);
224 fprintf(fp, "map %d\n", map_space_used); 224 fprintf(fp, "map %d\n", map_space_used);
225 fprintf(fp, "cell %d\n", cell_space_used); 225 fprintf(fp, "cell %d\n", cell_space_used);
226 fprintf(fp, "property cell %d\n", property_cell_space_used); 226 fprintf(fp, "property cell %d\n", property_cell_space_used);
227 fclose(fp); 227 fclose(fp);
228 } 228 }
229 229
230 230
231 static bool WriteToFile(const char* snapshot_file) { 231 static bool WriteToFile(Isolate* isolate, const char* snapshot_file) {
232 FileByteSink file(snapshot_file); 232 FileByteSink file(snapshot_file);
233 StartupSerializer ser(&file); 233 StartupSerializer ser(isolate, &file);
234 ser.Serialize(); 234 ser.Serialize();
235 235
236 file.WriteSpaceUsed( 236 file.WriteSpaceUsed(
237 ser.CurrentAllocationAddress(NEW_SPACE), 237 ser.CurrentAllocationAddress(NEW_SPACE),
238 ser.CurrentAllocationAddress(OLD_POINTER_SPACE), 238 ser.CurrentAllocationAddress(OLD_POINTER_SPACE),
239 ser.CurrentAllocationAddress(OLD_DATA_SPACE), 239 ser.CurrentAllocationAddress(OLD_DATA_SPACE),
240 ser.CurrentAllocationAddress(CODE_SPACE), 240 ser.CurrentAllocationAddress(CODE_SPACE),
241 ser.CurrentAllocationAddress(MAP_SPACE), 241 ser.CurrentAllocationAddress(MAP_SPACE),
242 ser.CurrentAllocationAddress(CELL_SPACE), 242 ser.CurrentAllocationAddress(CELL_SPACE),
243 ser.CurrentAllocationAddress(PROPERTY_CELL_SPACE)); 243 ser.CurrentAllocationAddress(PROPERTY_CELL_SPACE));
244 244
245 return true; 245 return true;
246 } 246 }
247 247
248 248
249 static void Serialize() { 249 static void Serialize() {
250 // We have to create one context. One reason for this is so that the builtins 250 // We have to create one context. One reason for this is so that the builtins
251 // can be loaded from v8natives.js and their addresses can be processed. This 251 // can be loaded from v8natives.js and their addresses can be processed. This
252 // will clear the pending fixups array, which would otherwise contain GC roots 252 // will clear the pending fixups array, which would otherwise contain GC roots
253 // that would confuse the serialization/deserialization process. 253 // that would confuse the serialization/deserialization process.
254 v8::Isolate* isolate = v8::Isolate::GetCurrent();
254 { 255 {
255 v8::Isolate* isolate = v8::Isolate::GetCurrent();
256 v8::HandleScope scope(isolate); 256 v8::HandleScope scope(isolate);
257 v8::Context::New(isolate); 257 v8::Context::New(isolate);
258 } 258 }
259 WriteToFile(FLAG_testing_serialization_file); 259 WriteToFile(reinterpret_cast<Isolate*>(isolate),
260 FLAG_testing_serialization_file);
260 } 261 }
261 262
262 263
263 // Test that the whole heap can be serialized. 264 // Test that the whole heap can be serialized.
264 TEST(Serialize) { 265 TEST(Serialize) {
265 if (!Snapshot::HaveASnapshotToStartFrom()) { 266 if (!Snapshot::HaveASnapshotToStartFrom()) {
266 Serializer::Enable(); 267 Serializer::Enable(Isolate::Current());
267 v8::V8::Initialize(); 268 v8::V8::Initialize();
268 Serialize(); 269 Serialize();
269 } 270 }
270 } 271 }
271 272
272 273
273 // Test that heap serialization is non-destructive. 274 // Test that heap serialization is non-destructive.
274 TEST(SerializeTwice) { 275 TEST(SerializeTwice) {
275 if (!Snapshot::HaveASnapshotToStartFrom()) { 276 if (!Snapshot::HaveASnapshotToStartFrom()) {
276 Serializer::Enable(); 277 Serializer::Enable(Isolate::Current());
277 v8::V8::Initialize(); 278 v8::V8::Initialize();
278 Serialize(); 279 Serialize();
279 Serialize(); 280 Serialize();
280 } 281 }
281 } 282 }
282 283
283 284
284 //---------------------------------------------------------------------------- 285 //----------------------------------------------------------------------------
285 // Tests that the heap can be deserialized. 286 // Tests that the heap can be deserialized.
286 287
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 const char* c_source = "\"1234\".length"; 365 const char* c_source = "\"1234\".length";
365 v8::Local<v8::String> source = v8::String::New(c_source); 366 v8::Local<v8::String> source = v8::String::New(c_source);
366 v8::Local<v8::Script> script = v8::Script::Compile(source); 367 v8::Local<v8::Script> script = v8::Script::Compile(source);
367 CHECK_EQ(4, script->Run()->Int32Value()); 368 CHECK_EQ(4, script->Run()->Int32Value());
368 } 369 }
369 } 370 }
370 371
371 372
372 TEST(PartialSerialization) { 373 TEST(PartialSerialization) {
373 if (!Snapshot::HaveASnapshotToStartFrom()) { 374 if (!Snapshot::HaveASnapshotToStartFrom()) {
374 Serializer::Enable(); 375 Isolate* isolate = Isolate::Current();
376 Serializer::Enable(isolate);
375 v8::V8::Initialize(); 377 v8::V8::Initialize();
376 Isolate* isolate = Isolate::Current();
377 v8::Isolate* v8_isolate = reinterpret_cast<v8::Isolate*>(isolate); 378 v8::Isolate* v8_isolate = reinterpret_cast<v8::Isolate*>(isolate);
378 Heap* heap = isolate->heap(); 379 Heap* heap = isolate->heap();
379 380
380 v8::Persistent<v8::Context> env; 381 v8::Persistent<v8::Context> env;
381 { 382 {
382 HandleScope scope(isolate); 383 HandleScope scope(isolate);
383 env.Reset(v8_isolate, v8::Context::New(v8_isolate)); 384 env.Reset(v8_isolate, v8::Context::New(v8_isolate));
384 } 385 }
385 ASSERT(!env.IsEmpty()); 386 ASSERT(!env.IsEmpty());
386 { 387 {
(...skipping 21 matching lines...) Expand all
408 Vector<char> startup_name = Vector<char>::New(file_name_length + 1); 409 Vector<char> startup_name = Vector<char>::New(file_name_length + 1);
409 OS::SNPrintF(startup_name, "%s.startup", FLAG_testing_serialization_file); 410 OS::SNPrintF(startup_name, "%s.startup", FLAG_testing_serialization_file);
410 411
411 { 412 {
412 v8::HandleScope handle_scope(v8_isolate); 413 v8::HandleScope handle_scope(v8_isolate);
413 v8::Local<v8::Context>::New(v8_isolate, env)->Exit(); 414 v8::Local<v8::Context>::New(v8_isolate, env)->Exit();
414 } 415 }
415 env.Dispose(); 416 env.Dispose();
416 417
417 FileByteSink startup_sink(startup_name.start()); 418 FileByteSink startup_sink(startup_name.start());
418 StartupSerializer startup_serializer(&startup_sink); 419 StartupSerializer startup_serializer(isolate, &startup_sink);
419 startup_serializer.SerializeStrongReferences(); 420 startup_serializer.SerializeStrongReferences();
420 421
421 FileByteSink partial_sink(FLAG_testing_serialization_file); 422 FileByteSink partial_sink(FLAG_testing_serialization_file);
422 PartialSerializer p_ser(&startup_serializer, &partial_sink); 423 PartialSerializer p_ser(isolate, &startup_serializer, &partial_sink);
423 p_ser.Serialize(&raw_foo); 424 p_ser.Serialize(&raw_foo);
424 startup_serializer.SerializeWeakReferences(); 425 startup_serializer.SerializeWeakReferences();
425 426
426 partial_sink.WriteSpaceUsed( 427 partial_sink.WriteSpaceUsed(
427 p_ser.CurrentAllocationAddress(NEW_SPACE), 428 p_ser.CurrentAllocationAddress(NEW_SPACE),
428 p_ser.CurrentAllocationAddress(OLD_POINTER_SPACE), 429 p_ser.CurrentAllocationAddress(OLD_POINTER_SPACE),
429 p_ser.CurrentAllocationAddress(OLD_DATA_SPACE), 430 p_ser.CurrentAllocationAddress(OLD_DATA_SPACE),
430 p_ser.CurrentAllocationAddress(CODE_SPACE), 431 p_ser.CurrentAllocationAddress(CODE_SPACE),
431 p_ser.CurrentAllocationAddress(MAP_SPACE), 432 p_ser.CurrentAllocationAddress(MAP_SPACE),
432 p_ser.CurrentAllocationAddress(CELL_SPACE), 433 p_ser.CurrentAllocationAddress(CELL_SPACE),
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
487 OS::SNPrintF(startup_name, "%s.startup", FLAG_testing_serialization_file); 488 OS::SNPrintF(startup_name, "%s.startup", FLAG_testing_serialization_file);
488 489
489 CHECK(Snapshot::Initialize(startup_name.start())); 490 CHECK(Snapshot::Initialize(startup_name.start()));
490 startup_name.Dispose(); 491 startup_name.Dispose();
491 492
492 const char* file_name = FLAG_testing_serialization_file; 493 const char* file_name = FLAG_testing_serialization_file;
493 494
494 int snapshot_size = 0; 495 int snapshot_size = 0;
495 byte* snapshot = ReadBytes(file_name, &snapshot_size); 496 byte* snapshot = ReadBytes(file_name, &snapshot_size);
496 497
498 Isolate* isolate = Isolate::Current();
497 Object* root; 499 Object* root;
498 { 500 {
499 SnapshotByteSource source(snapshot, snapshot_size); 501 SnapshotByteSource source(snapshot, snapshot_size);
500 Deserializer deserializer(&source); 502 Deserializer deserializer(&source);
501 ReserveSpaceForSnapshot(&deserializer, file_name); 503 ReserveSpaceForSnapshot(&deserializer, file_name);
502 deserializer.DeserializePartial(&root); 504 deserializer.DeserializePartial(isolate, &root);
503 CHECK(root->IsString()); 505 CHECK(root->IsString());
504 } 506 }
505 v8::HandleScope handle_scope(v8::Isolate::GetCurrent()); 507 HandleScope handle_scope(isolate);
506 Handle<Object> root_handle(root, Isolate::Current()); 508 Handle<Object> root_handle(root, isolate);
507 509
508 510
509 Object* root2; 511 Object* root2;
510 { 512 {
511 SnapshotByteSource source(snapshot, snapshot_size); 513 SnapshotByteSource source(snapshot, snapshot_size);
512 Deserializer deserializer(&source); 514 Deserializer deserializer(&source);
513 ReserveSpaceForSnapshot(&deserializer, file_name); 515 ReserveSpaceForSnapshot(&deserializer, file_name);
514 deserializer.DeserializePartial(&root2); 516 deserializer.DeserializePartial(isolate, &root2);
515 CHECK(root2->IsString()); 517 CHECK(root2->IsString());
516 CHECK(*root_handle == root2); 518 CHECK(*root_handle == root2);
517 } 519 }
518 } 520 }
519 } 521 }
520 522
521 523
522 TEST(ContextSerialization) { 524 TEST(ContextSerialization) {
523 if (!Snapshot::HaveASnapshotToStartFrom()) { 525 if (!Snapshot::HaveASnapshotToStartFrom()) {
524 Serializer::Enable();
525 v8::V8::Initialize(); 526 v8::V8::Initialize();
526 Isolate* isolate = Isolate::Current(); 527 Isolate* isolate = Isolate::Current();
528 Serializer::Enable(isolate);
527 v8::Isolate* v8_isolate = reinterpret_cast<v8::Isolate*>(isolate); 529 v8::Isolate* v8_isolate = reinterpret_cast<v8::Isolate*>(isolate);
528 Heap* heap = isolate->heap(); 530 Heap* heap = isolate->heap();
529 531
530 v8::Persistent<v8::Context> env; 532 v8::Persistent<v8::Context> env;
531 { 533 {
532 HandleScope scope(isolate); 534 HandleScope scope(isolate);
533 env.Reset(v8_isolate, v8::Context::New(v8_isolate)); 535 env.Reset(v8_isolate, v8::Context::New(v8_isolate));
534 } 536 }
535 ASSERT(!env.IsEmpty()); 537 ASSERT(!env.IsEmpty());
536 { 538 {
(...skipping 17 matching lines...) Expand all
554 { 556 {
555 v8::HandleScope handle_scope(v8_isolate); 557 v8::HandleScope handle_scope(v8_isolate);
556 v8::Local<v8::Context>::New(v8_isolate, env)->Exit(); 558 v8::Local<v8::Context>::New(v8_isolate, env)->Exit();
557 } 559 }
558 560
559 i::Object* raw_context = *v8::Utils::OpenPersistent(env); 561 i::Object* raw_context = *v8::Utils::OpenPersistent(env);
560 562
561 env.Dispose(); 563 env.Dispose();
562 564
563 FileByteSink startup_sink(startup_name.start()); 565 FileByteSink startup_sink(startup_name.start());
564 StartupSerializer startup_serializer(&startup_sink); 566 StartupSerializer startup_serializer(isolate, &startup_sink);
565 startup_serializer.SerializeStrongReferences(); 567 startup_serializer.SerializeStrongReferences();
566 568
567 FileByteSink partial_sink(FLAG_testing_serialization_file); 569 FileByteSink partial_sink(FLAG_testing_serialization_file);
568 PartialSerializer p_ser(&startup_serializer, &partial_sink); 570 PartialSerializer p_ser(isolate, &startup_serializer, &partial_sink);
569 p_ser.Serialize(&raw_context); 571 p_ser.Serialize(&raw_context);
570 startup_serializer.SerializeWeakReferences(); 572 startup_serializer.SerializeWeakReferences();
571 573
572 partial_sink.WriteSpaceUsed( 574 partial_sink.WriteSpaceUsed(
573 p_ser.CurrentAllocationAddress(NEW_SPACE), 575 p_ser.CurrentAllocationAddress(NEW_SPACE),
574 p_ser.CurrentAllocationAddress(OLD_POINTER_SPACE), 576 p_ser.CurrentAllocationAddress(OLD_POINTER_SPACE),
575 p_ser.CurrentAllocationAddress(OLD_DATA_SPACE), 577 p_ser.CurrentAllocationAddress(OLD_DATA_SPACE),
576 p_ser.CurrentAllocationAddress(CODE_SPACE), 578 p_ser.CurrentAllocationAddress(CODE_SPACE),
577 p_ser.CurrentAllocationAddress(MAP_SPACE), 579 p_ser.CurrentAllocationAddress(MAP_SPACE),
578 p_ser.CurrentAllocationAddress(CELL_SPACE), 580 p_ser.CurrentAllocationAddress(CELL_SPACE),
(...skipping 19 matching lines...) Expand all
598 OS::SNPrintF(startup_name, "%s.startup", FLAG_testing_serialization_file); 600 OS::SNPrintF(startup_name, "%s.startup", FLAG_testing_serialization_file);
599 601
600 CHECK(Snapshot::Initialize(startup_name.start())); 602 CHECK(Snapshot::Initialize(startup_name.start()));
601 startup_name.Dispose(); 603 startup_name.Dispose();
602 604
603 const char* file_name = FLAG_testing_serialization_file; 605 const char* file_name = FLAG_testing_serialization_file;
604 606
605 int snapshot_size = 0; 607 int snapshot_size = 0;
606 byte* snapshot = ReadBytes(file_name, &snapshot_size); 608 byte* snapshot = ReadBytes(file_name, &snapshot_size);
607 609
610 Isolate* isolate = Isolate::Current();
608 Object* root; 611 Object* root;
609 { 612 {
610 SnapshotByteSource source(snapshot, snapshot_size); 613 SnapshotByteSource source(snapshot, snapshot_size);
611 Deserializer deserializer(&source); 614 Deserializer deserializer(&source);
612 ReserveSpaceForSnapshot(&deserializer, file_name); 615 ReserveSpaceForSnapshot(&deserializer, file_name);
613 deserializer.DeserializePartial(&root); 616 deserializer.DeserializePartial(isolate, &root);
614 CHECK(root->IsContext()); 617 CHECK(root->IsContext());
615 } 618 }
616 v8::HandleScope handle_scope(v8::Isolate::GetCurrent()); 619 HandleScope handle_scope(isolate);
617 Handle<Object> root_handle(root, Isolate::Current()); 620 Handle<Object> root_handle(root, isolate);
618 621
619 622
620 Object* root2; 623 Object* root2;
621 { 624 {
622 SnapshotByteSource source(snapshot, snapshot_size); 625 SnapshotByteSource source(snapshot, snapshot_size);
623 Deserializer deserializer(&source); 626 Deserializer deserializer(&source);
624 ReserveSpaceForSnapshot(&deserializer, file_name); 627 ReserveSpaceForSnapshot(&deserializer, file_name);
625 deserializer.DeserializePartial(&root2); 628 deserializer.DeserializePartial(isolate, &root2);
626 CHECK(root2->IsContext()); 629 CHECK(root2->IsContext());
627 CHECK(*root_handle != root2); 630 CHECK(*root_handle != root2);
628 } 631 }
629 } 632 }
630 } 633 }
631 634
632 635
633 TEST(TestThatAlwaysSucceeds) { 636 TEST(TestThatAlwaysSucceeds) {
634 } 637 }
635 638
636 639
637 TEST(TestThatAlwaysFails) { 640 TEST(TestThatAlwaysFails) {
638 bool ArtificialFailure = false; 641 bool ArtificialFailure = false;
639 CHECK(ArtificialFailure); 642 CHECK(ArtificialFailure);
640 } 643 }
641 644
642 645
643 DEPENDENT_TEST(DependentTestThatAlwaysFails, TestThatAlwaysSucceeds) { 646 DEPENDENT_TEST(DependentTestThatAlwaysFails, TestThatAlwaysSucceeds) {
644 bool ArtificialFailure2 = false; 647 bool ArtificialFailure2 = false;
645 CHECK(ArtificialFailure2); 648 CHECK(ArtificialFailure2);
646 } 649 }
OLDNEW
« src/v8threads.cc ('K') | « test/cctest/test-accessors.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698