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

Side by Side Diff: runtime/vm/object_test.cc

Issue 264753002: Adds Simulator Longjmp and enables many tests for arm64. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 7 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
« no previous file with comments | « runtime/vm/object_id_ring_test.cc ('k') | runtime/vm/resolver_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 // TODO(zra): Remove when tests are ready to enable. 5 // TODO(zra): Remove when tests are ready to enable.
6 #include "platform/globals.h" 6 #include "platform/globals.h"
7 7
8 #include "vm/assembler.h" 8 #include "vm/assembler.h"
9 #include "vm/bigint_operations.h" 9 #include "vm/bigint_operations.h"
10 #include "vm/class_finalizer.h" 10 #include "vm/class_finalizer.h"
(...skipping 2974 matching lines...) Expand 10 before | Expand all | Expand 10 after
2985 EXPECT(!String::EqualsIgnoringPrivateKey(ext_mangled_name, 2985 EXPECT(!String::EqualsIgnoringPrivateKey(ext_mangled_name,
2986 ext_bad_bare_name)); 2986 ext_bad_bare_name));
2987 } 2987 }
2988 2988
2989 2989
2990 TEST_CASE(ArrayNew_Overflow_Crash) { 2990 TEST_CASE(ArrayNew_Overflow_Crash) {
2991 Array::Handle(Array::New(Array::kMaxElements + 1)); 2991 Array::Handle(Array::New(Array::kMaxElements + 1));
2992 } 2992 }
2993 2993
2994 2994
2995 // TODO(zra): Enable test when arm64 is ready.
2996 #if !defined(TARGET_ARCH_ARM64)
2997
2998 TEST_CASE(StackTraceFormat) { 2995 TEST_CASE(StackTraceFormat) {
2999 const char* kScriptChars = 2996 const char* kScriptChars =
3000 "void baz() {\n" 2997 "void baz() {\n"
3001 " throw 'MyException';\n" 2998 " throw 'MyException';\n"
3002 "}\n" 2999 "}\n"
3003 "\n" 3000 "\n"
3004 "class _OtherClass {\n" 3001 "class _OtherClass {\n"
3005 " _OtherClass._named() {\n" 3002 " _OtherClass._named() {\n"
3006 " baz();\n" 3003 " baz();\n"
3007 " }\n" 3004 " }\n"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
3047 "#2 _bar (dart:test-lib:16:3)\n" 3044 "#2 _bar (dart:test-lib:16:3)\n"
3048 "#3 MyClass.field (dart:test-lib:25:9)\n" 3045 "#3 MyClass.field (dart:test-lib:25:9)\n"
3049 "#4 MyClass.foo.fooHelper (dart:test-lib:30:7)\n" 3046 "#4 MyClass.foo.fooHelper (dart:test-lib:30:7)\n"
3050 "#5 MyClass.foo (dart:test-lib:32:14)\n" 3047 "#5 MyClass.foo (dart:test-lib:32:14)\n"
3051 "#6 MyClass.MyClass.<anonymous closure> (dart:test-lib:21:15)\n" 3048 "#6 MyClass.MyClass.<anonymous closure> (dart:test-lib:21:15)\n"
3052 "#7 MyClass.MyClass (dart:test-lib:21:18)\n" 3049 "#7 MyClass.MyClass (dart:test-lib:21:18)\n"
3053 "#8 main.<anonymous closure> (dart:test-lib:37:14)\n" 3050 "#8 main.<anonymous closure> (dart:test-lib:37:14)\n"
3054 "#9 main (dart:test-lib:37:24)"); 3051 "#9 main (dart:test-lib:37:24)");
3055 } 3052 }
3056 3053
3057 #endif // !defined(TARGET_ARCH_ARM64)
3058 3054
3059 TEST_CASE(WeakProperty_PreserveCrossGen) { 3055 TEST_CASE(WeakProperty_PreserveCrossGen) {
3060 Isolate* isolate = Isolate::Current(); 3056 Isolate* isolate = Isolate::Current();
3061 WeakProperty& weak = WeakProperty::Handle(); 3057 WeakProperty& weak = WeakProperty::Handle();
3062 { 3058 {
3063 // Weak property and value in new. Key in old. 3059 // Weak property and value in new. Key in old.
3064 HANDLESCOPE(isolate); 3060 HANDLESCOPE(isolate);
3065 String& key = String::Handle(); 3061 String& key = String::Handle();
3066 key ^= OneByteString::New("key", Heap::kOld); 3062 key ^= OneByteString::New("key", Heap::kOld);
3067 String& value = String::Handle(); 3063 String& value = String::Handle();
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after
3456 EXPECT_NE(reference.raw(), other_reference.raw()); 3452 EXPECT_NE(reference.raw(), other_reference.raw());
3457 other_reference.set_referent(library); 3453 other_reference.set_referent(library);
3458 EXPECT_NE(reference.raw(), other_reference.raw()); 3454 EXPECT_NE(reference.raw(), other_reference.raw());
3459 EXPECT_EQ(reference.referent(), other_reference.referent()); 3455 EXPECT_EQ(reference.referent(), other_reference.referent());
3460 3456
3461 Object& obj = Object::Handle(reference.raw()); 3457 Object& obj = Object::Handle(reference.raw());
3462 EXPECT(obj.IsMirrorReference()); 3458 EXPECT(obj.IsMirrorReference());
3463 } 3459 }
3464 3460
3465 3461
3466 // TODO(zra): Enable test when arm64 is ready.
3467 #if !defined(TARGET_ARCH_ARM64)
3468
3469 static RawFunction* GetFunction(const Class& cls, const char* name) { 3462 static RawFunction* GetFunction(const Class& cls, const char* name) {
3470 const Function& result = Function::Handle(cls.LookupDynamicFunction( 3463 const Function& result = Function::Handle(cls.LookupDynamicFunction(
3471 String::Handle(String::New(name)))); 3464 String::Handle(String::New(name))));
3472 EXPECT(!result.IsNull()); 3465 EXPECT(!result.IsNull());
3473 return result.raw(); 3466 return result.raw();
3474 } 3467 }
3475 3468
3476 3469
3477 static RawFunction* GetStaticFunction(const Class& cls, const char* name) { 3470 static RawFunction* GetStaticFunction(const Class& cls, const char* name) {
3478 const Function& result = Function::Handle(cls.LookupStaticFunction( 3471 const Function& result = Function::Handle(cls.LookupStaticFunction(
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
3598 func_b_from_index ^= class_a.FunctionFromIndex(func_b_index); 3591 func_b_from_index ^= class_a.FunctionFromIndex(func_b_index);
3599 EXPECT(!func_b_from_index.IsNull()); 3592 EXPECT(!func_b_from_index.IsNull());
3600 // Same function. 3593 // Same function.
3601 EXPECT_EQ(func_b.raw(), func_b_from_index.raw()); 3594 EXPECT_EQ(func_b.raw(), func_b_from_index.raw());
3602 // Retrieve implicit closure function. 3595 // Retrieve implicit closure function.
3603 Function& func_x_from_index = Function::Handle(); 3596 Function& func_x_from_index = Function::Handle();
3604 func_x_from_index ^= class_a.ImplicitClosureFunctionFromIndex(func_x_index); 3597 func_x_from_index ^= class_a.ImplicitClosureFunctionFromIndex(func_x_index);
3605 EXPECT_EQ(func_x.raw(), func_x_from_index.raw()); 3598 EXPECT_EQ(func_x.raw(), func_x_from_index.raw());
3606 } 3599 }
3607 3600
3608 #endif // !defined(TARGET_ARCH_ARM64)
3609
3610 3601
3611 TEST_CASE(FindClosureIndex) { 3602 TEST_CASE(FindClosureIndex) {
3612 // Allocate the class first. 3603 // Allocate the class first.
3613 const String& class_name = String::Handle(Symbols::New("MyClass")); 3604 const String& class_name = String::Handle(Symbols::New("MyClass"));
3614 const Script& script = Script::Handle(); 3605 const Script& script = Script::Handle();
3615 const Class& cls = Class::Handle(CreateDummyClass(class_name, script)); 3606 const Class& cls = Class::Handle(CreateDummyClass(class_name, script));
3616 const Array& functions = Array::Handle(Array::New(1)); 3607 const Array& functions = Array::Handle(Array::New(1));
3617 3608
3618 Function& parent = Function::Handle(); 3609 Function& parent = Function::Handle();
3619 const String& parent_name = String::Handle(Symbols::New("foo_papa")); 3610 const String& parent_name = String::Handle(Symbols::New("foo_papa"));
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
3680 EXPECT_EQ(invocation_dispatcher.raw(), 3671 EXPECT_EQ(invocation_dispatcher.raw(),
3681 invocation_dispatcher_from_index.raw()); 3672 invocation_dispatcher_from_index.raw());
3682 // Test function not found case. 3673 // Test function not found case.
3683 const Function& bad_function = Function::Handle(Function::null()); 3674 const Function& bad_function = Function::Handle(Function::null());
3684 intptr_t bad_invocation_dispatcher_index = 3675 intptr_t bad_invocation_dispatcher_index =
3685 cls.FindInvocationDispatcherFunctionIndex(bad_function); 3676 cls.FindInvocationDispatcherFunctionIndex(bad_function);
3686 EXPECT_EQ(bad_invocation_dispatcher_index, -1); 3677 EXPECT_EQ(bad_invocation_dispatcher_index, -1);
3687 } 3678 }
3688 3679
3689 3680
3690 // TODO(zra): Enable test when arm64 is ready.
3691 #if !defined(TARGET_ARCH_ARM64)
3692
3693 static void PrintMetadata(const char* name, const Object& data) { 3681 static void PrintMetadata(const char* name, const Object& data) {
3694 if (data.IsError()) { 3682 if (data.IsError()) {
3695 OS::Print("Error in metadata evaluation for %s: '%s'\n", 3683 OS::Print("Error in metadata evaluation for %s: '%s'\n",
3696 name, 3684 name,
3697 Error::Cast(data).ToErrorCString()); 3685 Error::Cast(data).ToErrorCString());
3698 } 3686 }
3699 EXPECT(data.IsArray()); 3687 EXPECT(data.IsArray());
3700 const Array& metadata = Array::Cast(data); 3688 const Array& metadata = Array::Cast(data);
3701 OS::Print("Metadata for %s has %" Pd " values:\n", name, metadata.Length()); 3689 OS::Print("Metadata for %s has %" Pd " values:\n", name, metadata.Length());
3702 Object& elem = Object::Handle(); 3690 Object& elem = Object::Handle();
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
3850 EXPECT_EQ(a_test1.SourceFingerprint(), b_test1.SourceFingerprint()); 3838 EXPECT_EQ(a_test1.SourceFingerprint(), b_test1.SourceFingerprint());
3851 EXPECT_NE(a_test1.SourceFingerprint(), a_test2.SourceFingerprint()); 3839 EXPECT_NE(a_test1.SourceFingerprint(), a_test2.SourceFingerprint());
3852 EXPECT_NE(a_test2.SourceFingerprint(), a_test3.SourceFingerprint()); 3840 EXPECT_NE(a_test2.SourceFingerprint(), a_test3.SourceFingerprint());
3853 EXPECT_NE(a_test3.SourceFingerprint(), a_test4.SourceFingerprint()); 3841 EXPECT_NE(a_test3.SourceFingerprint(), a_test4.SourceFingerprint());
3854 EXPECT_NE(a_test4.SourceFingerprint(), a_test5.SourceFingerprint()); 3842 EXPECT_NE(a_test4.SourceFingerprint(), a_test5.SourceFingerprint());
3855 EXPECT_EQ(a_test5.SourceFingerprint(), b_test5.SourceFingerprint()); 3843 EXPECT_EQ(a_test5.SourceFingerprint(), b_test5.SourceFingerprint());
3856 EXPECT_NE(a_test6.SourceFingerprint(), b_test6.SourceFingerprint()); 3844 EXPECT_NE(a_test6.SourceFingerprint(), b_test6.SourceFingerprint());
3857 } 3845 }
3858 3846
3859 3847
3848 // TODO(zra): Enable test when arm64 is ready.
3849 #if !defined(TARGET_ARCH_ARM64)
3850
3860 TEST_CASE(FunctionWithBreakpointNotInlined) { 3851 TEST_CASE(FunctionWithBreakpointNotInlined) {
3861 const char* kScriptChars = 3852 const char* kScriptChars =
3862 "class A {\n" 3853 "class A {\n"
3863 " a() {\n" 3854 " a() {\n"
3864 " }\n" 3855 " }\n"
3865 " b() {\n" 3856 " b() {\n"
3866 " a();\n" // This is line 5. 3857 " a();\n" // This is line 5.
3867 " }\n" 3858 " }\n"
3868 "}\n" 3859 "}\n"
3869 "test() {\n" 3860 "test() {\n"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
3922 cls = Object::dynamic_class(); 3913 cls = Object::dynamic_class();
3923 array = cls.fields(); 3914 array = cls.fields();
3924 EXPECT(!array.IsNull()); 3915 EXPECT(!array.IsNull());
3925 EXPECT(array.IsArray()); 3916 EXPECT(array.IsArray());
3926 array = cls.functions(); 3917 array = cls.functions();
3927 EXPECT(!array.IsNull()); 3918 EXPECT(!array.IsNull());
3928 EXPECT(array.IsArray()); 3919 EXPECT(array.IsArray());
3929 } 3920 }
3930 3921
3931 3922
3932 // TODO(zra): Enable test when arm64 is ready.
3933 #if !defined(TARGET_ARCH_ARM64)
3934
3935 TEST_CASE(ToUserCString) { 3923 TEST_CASE(ToUserCString) {
3936 const char* kScriptChars = 3924 const char* kScriptChars =
3937 "var simple = 'simple';\n" 3925 "var simple = 'simple';\n"
3938 "var escapes = 'stuff\\n\\r\\f\\b\\t\\v\\'\"\\$stuff';\n" 3926 "var escapes = 'stuff\\n\\r\\f\\b\\t\\v\\'\"\\$stuff';\n"
3939 "var uescapes = 'stuff\\u0001\\u0002stuff';\n" 3927 "var uescapes = 'stuff\\u0001\\u0002stuff';\n"
3940 "var toolong = " 3928 "var toolong = "
3941 "'01234567890123456789012345678901234567890123456789howdy';\n" 3929 "'01234567890123456789012345678901234567890123456789howdy';\n"
3942 "var toolong2 = " 3930 "var toolong2 = "
3943 "'0123456789012345678901234567890123\\t567890123456789howdy';\n" 3931 "'0123456789012345678901234567890123\\t567890123456789howdy';\n"
3944 "var toolong3 = " 3932 "var toolong3 = "
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
4020 }; 4008 };
4021 4009
4022 4010
4023 TEST_CASE(PrintJSON) { 4011 TEST_CASE(PrintJSON) {
4024 Heap* heap = Isolate::Current()->heap(); 4012 Heap* heap = Isolate::Current()->heap();
4025 heap->CollectAllGarbage(); 4013 heap->CollectAllGarbage();
4026 JSONTypeVerifier verifier; 4014 JSONTypeVerifier verifier;
4027 heap->IterateObjects(&verifier); 4015 heap->IterateObjects(&verifier);
4028 } 4016 }
4029 4017
4030 #endif // !defined(TARGET_ARCH_ARM64)
4031
4032 } // namespace dart 4018 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/object_id_ring_test.cc ('k') | runtime/vm/resolver_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698