| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 | 2 |
| 3 #include <stdlib.h> | 3 #include <stdlib.h> |
| 4 | 4 |
| 5 #include "v8.h" | 5 #include "v8.h" |
| 6 | 6 |
| 7 #include "compilation-cache.h" | 7 #include "compilation-cache.h" |
| 8 #include "execution.h" | 8 #include "execution.h" |
| 9 #include "factory.h" | 9 #include "factory.h" |
| 10 #include "macro-assembler.h" | 10 #include "macro-assembler.h" |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 55 CheckMap(HEAP->heap_number_map(), HEAP_NUMBER_TYPE, HeapNumber::kSize); | 55 CheckMap(HEAP->heap_number_map(), HEAP_NUMBER_TYPE, HeapNumber::kSize); |
| 56 CheckMap(HEAP->fixed_array_map(), FIXED_ARRAY_TYPE, kVariableSizeSentinel); | 56 CheckMap(HEAP->fixed_array_map(), FIXED_ARRAY_TYPE, kVariableSizeSentinel); |
| 57 CheckMap(HEAP->string_map(), STRING_TYPE, kVariableSizeSentinel); | 57 CheckMap(HEAP->string_map(), STRING_TYPE, kVariableSizeSentinel); |
| 58 } | 58 } |
| 59 | 59 |
| 60 | 60 |
| 61 static void CheckOddball(Object* obj, const char* string) { | 61 static void CheckOddball(Object* obj, const char* string) { |
| 62 CHECK(obj->IsOddball()); | 62 CHECK(obj->IsOddball()); |
| 63 bool exc; | 63 bool exc; |
| 64 Object* print_string = *Execution::ToString(Handle<Object>(obj), &exc); | 64 Object* print_string = *Execution::ToString(Handle<Object>(obj), &exc); |
| 65 CHECK(String::cast(print_string)->IsEqualTo(CStrVector(string))); | 65 CHECK(String::cast(print_string)->IsUtf8EqualTo(CStrVector(string))); |
| 66 } | 66 } |
| 67 | 67 |
| 68 | 68 |
| 69 static void CheckSmi(int value, const char* string) { | 69 static void CheckSmi(int value, const char* string) { |
| 70 bool exc; | 70 bool exc; |
| 71 Object* print_string = | 71 Object* print_string = |
| 72 *Execution::ToString(Handle<Object>(Smi::FromInt(value)), &exc); | 72 *Execution::ToString(Handle<Object>(Smi::FromInt(value)), &exc); |
| 73 CHECK(String::cast(print_string)->IsEqualTo(CStrVector(string))); | 73 CHECK(String::cast(print_string)->IsUtf8EqualTo(CStrVector(string))); |
| 74 } | 74 } |
| 75 | 75 |
| 76 | 76 |
| 77 static void CheckNumber(double value, const char* string) { | 77 static void CheckNumber(double value, const char* string) { |
| 78 Object* obj = HEAP->NumberFromDouble(value)->ToObjectChecked(); | 78 Object* obj = HEAP->NumberFromDouble(value)->ToObjectChecked(); |
| 79 CHECK(obj->IsNumber()); | 79 CHECK(obj->IsNumber()); |
| 80 bool exc; | 80 bool exc; |
| 81 Object* print_string = *Execution::ToString(Handle<Object>(obj), &exc); | 81 Object* print_string = *Execution::ToString(Handle<Object>(obj), &exc); |
| 82 CHECK(String::cast(print_string)->IsEqualTo(CStrVector(string))); | 82 CHECK(String::cast(print_string)->IsUtf8EqualTo(CStrVector(string))); |
| 83 } | 83 } |
| 84 | 84 |
| 85 | 85 |
| 86 static void CheckFindCodeObject() { | 86 static void CheckFindCodeObject() { |
| 87 // Test FindCodeObject | 87 // Test FindCodeObject |
| 88 #define __ assm. | 88 #define __ assm. |
| 89 | 89 |
| 90 Assembler assm(Isolate::Current(), NULL, 0); | 90 Assembler assm(Isolate::Current(), NULL, 0); |
| 91 | 91 |
| 92 __ nop(); // supported on all architectures | 92 __ nop(); // supported on all architectures |
| (...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 537 for (const char* string = *strings; *strings != 0; string = *strings++) { | 537 for (const char* string = *strings; *strings != 0; string = *strings++) { |
| 538 Object* a; | 538 Object* a; |
| 539 MaybeObject* maybe_a = HEAP->LookupUtf8Symbol(string); | 539 MaybeObject* maybe_a = HEAP->LookupUtf8Symbol(string); |
| 540 // LookupUtf8Symbol may return a failure if a GC is needed. | 540 // LookupUtf8Symbol may return a failure if a GC is needed. |
| 541 if (!maybe_a->ToObject(&a)) continue; | 541 if (!maybe_a->ToObject(&a)) continue; |
| 542 CHECK(a->IsSymbol()); | 542 CHECK(a->IsSymbol()); |
| 543 Object* b; | 543 Object* b; |
| 544 MaybeObject* maybe_b = HEAP->LookupUtf8Symbol(string); | 544 MaybeObject* maybe_b = HEAP->LookupUtf8Symbol(string); |
| 545 if (!maybe_b->ToObject(&b)) continue; | 545 if (!maybe_b->ToObject(&b)) continue; |
| 546 CHECK_EQ(b, a); | 546 CHECK_EQ(b, a); |
| 547 CHECK(String::cast(b)->IsEqualTo(CStrVector(string))); | 547 CHECK(String::cast(b)->IsUtf8EqualTo(CStrVector(string))); |
| 548 } | 548 } |
| 549 } | 549 } |
| 550 | 550 |
| 551 | 551 |
| 552 TEST(SymbolTable) { | 552 TEST(SymbolTable) { |
| 553 InitializeVM(); | 553 InitializeVM(); |
| 554 | 554 |
| 555 CheckSymbols(not_so_random_string_table); | 555 CheckSymbols(not_so_random_string_table); |
| 556 CheckSymbols(not_so_random_string_table); | 556 CheckSymbols(not_so_random_string_table); |
| 557 } | 557 } |
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 786 for (int i = 0; i < length; i++) { | 786 for (int i = 0; i < length; i++) { |
| 787 ascii[i] = 'a'; | 787 ascii[i] = 'a'; |
| 788 non_ascii[3 * i] = chars[0]; | 788 non_ascii[3 * i] = chars[0]; |
| 789 non_ascii[3 * i + 1] = chars[1]; | 789 non_ascii[3 * i + 1] = chars[1]; |
| 790 non_ascii[3 * i + 2] = chars[2]; | 790 non_ascii[3 * i + 2] = chars[2]; |
| 791 } | 791 } |
| 792 Handle<String> non_ascii_sym = | 792 Handle<String> non_ascii_sym = |
| 793 FACTORY->LookupUtf8Symbol(Vector<const char>(non_ascii, 3 * length)); | 793 FACTORY->LookupUtf8Symbol(Vector<const char>(non_ascii, 3 * length)); |
| 794 CHECK_EQ(length, non_ascii_sym->length()); | 794 CHECK_EQ(length, non_ascii_sym->length()); |
| 795 Handle<String> ascii_sym = | 795 Handle<String> ascii_sym = |
| 796 FACTORY->LookupOneByteSymbol(Vector<const char>(ascii, length)); | 796 FACTORY->LookupOneByteSymbol(OneByteVector(ascii, length)); |
| 797 CHECK_EQ(length, ascii_sym->length()); | 797 CHECK_EQ(length, ascii_sym->length()); |
| 798 Handle<String> non_ascii_str = | 798 Handle<String> non_ascii_str = |
| 799 FACTORY->NewStringFromUtf8(Vector<const char>(non_ascii, 3 * length)); | 799 FACTORY->NewStringFromUtf8(Vector<const char>(non_ascii, 3 * length)); |
| 800 non_ascii_str->Hash(); | 800 non_ascii_str->Hash(); |
| 801 CHECK_EQ(length, non_ascii_str->length()); | 801 CHECK_EQ(length, non_ascii_str->length()); |
| 802 Handle<String> ascii_str = | 802 Handle<String> ascii_str = |
| 803 FACTORY->NewStringFromUtf8(Vector<const char>(ascii, length)); | 803 FACTORY->NewStringFromUtf8(Vector<const char>(ascii, length)); |
| 804 ascii_str->Hash(); | 804 ascii_str->Hash(); |
| 805 CHECK_EQ(length, ascii_str->length()); | 805 CHECK_EQ(length, ascii_str->length()); |
| 806 DeleteArray(non_ascii); | 806 DeleteArray(non_ascii); |
| (...skipping 1806 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2613 | 2613 |
| 2614 // Simulate incremental marking so that unoptimized code is flushed | 2614 // Simulate incremental marking so that unoptimized code is flushed |
| 2615 // even though it still is cached in the optimized code map. | 2615 // even though it still is cached in the optimized code map. |
| 2616 SimulateIncrementalMarking(); | 2616 SimulateIncrementalMarking(); |
| 2617 HEAP->CollectAllGarbage(Heap::kNoGCFlags); | 2617 HEAP->CollectAllGarbage(Heap::kNoGCFlags); |
| 2618 | 2618 |
| 2619 // Make a new closure that will get code installed from the code map. | 2619 // Make a new closure that will get code installed from the code map. |
| 2620 // Unoptimized code is missing and the deoptimizer will go ballistic. | 2620 // Unoptimized code is missing and the deoptimizer will go ballistic. |
| 2621 CompileRun("var g = mkClosure(); g('bozo');"); | 2621 CompileRun("var g = mkClosure(); g('bozo');"); |
| 2622 } | 2622 } |
| OLD | NEW |