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 1910 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1921 Local<Name> name, const v8::PropertyCallbackInfo<v8::Value>& info) { | 1921 Local<Name> name, const v8::PropertyCallbackInfo<v8::Value>& info) { |
1922 info.GetReturnValue().Set(info.GetIsolate()->ThrowException(name)); | 1922 info.GetReturnValue().Set(info.GetIsolate()->ThrowException(name)); |
1923 } | 1923 } |
1924 | 1924 |
1925 | 1925 |
1926 THREADED_TEST(ExecutableAccessorIsPreservedOnAttributeChange) { | 1926 THREADED_TEST(ExecutableAccessorIsPreservedOnAttributeChange) { |
1927 v8::Isolate* isolate = CcTest::isolate(); | 1927 v8::Isolate* isolate = CcTest::isolate(); |
1928 v8::HandleScope scope(isolate); | 1928 v8::HandleScope scope(isolate); |
1929 LocalContext env; | 1929 LocalContext env; |
1930 v8::Local<v8::Value> res = CompileRun("var a = []; a;"); | 1930 v8::Local<v8::Value> res = CompileRun("var a = []; a;"); |
1931 i::Handle<i::JSObject> a(v8::Utils::OpenHandle(v8::Object::Cast(*res))); | 1931 i::Handle<i::JSReceiver> a(v8::Utils::OpenHandle(v8::Object::Cast(*res))); |
1932 CHECK(a->map()->instance_descriptors()->IsFixedArray()); | 1932 CHECK(a->map()->instance_descriptors()->IsFixedArray()); |
1933 CHECK_GT(i::FixedArray::cast(a->map()->instance_descriptors())->length(), 0); | 1933 CHECK_GT(i::FixedArray::cast(a->map()->instance_descriptors())->length(), 0); |
1934 CompileRun("Object.defineProperty(a, 'length', { writable: false });"); | 1934 CompileRun("Object.defineProperty(a, 'length', { writable: false });"); |
1935 CHECK_EQ(i::FixedArray::cast(a->map()->instance_descriptors())->length(), 0); | 1935 CHECK_EQ(i::FixedArray::cast(a->map()->instance_descriptors())->length(), 0); |
1936 // But we should still have an ExecutableAccessorInfo. | 1936 // But we should still have an ExecutableAccessorInfo. |
1937 i::Handle<i::String> name(v8::Utils::OpenHandle(*v8_str("length"))); | 1937 i::Handle<i::String> name(v8::Utils::OpenHandle(*v8_str("length"))); |
1938 i::LookupIterator it(a, name, i::LookupIterator::OWN_SKIP_INTERCEPTOR); | 1938 i::LookupIterator it(a, name, i::LookupIterator::OWN_SKIP_INTERCEPTOR); |
1939 CHECK_EQ(i::LookupIterator::ACCESSOR, it.state()); | 1939 CHECK_EQ(i::LookupIterator::ACCESSOR, it.state()); |
1940 CHECK(it.GetAccessors()->IsExecutableAccessorInfo()); | 1940 CHECK(it.GetAccessors()->IsExecutableAccessorInfo()); |
1941 } | 1941 } |
(...skipping 7781 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9723 | 9723 |
9724 THREADED_TEST(Constructor) { | 9724 THREADED_TEST(Constructor) { |
9725 LocalContext context; | 9725 LocalContext context; |
9726 v8::Isolate* isolate = context->GetIsolate(); | 9726 v8::Isolate* isolate = context->GetIsolate(); |
9727 v8::HandleScope handle_scope(isolate); | 9727 v8::HandleScope handle_scope(isolate); |
9728 Local<v8::FunctionTemplate> templ = v8::FunctionTemplate::New(isolate); | 9728 Local<v8::FunctionTemplate> templ = v8::FunctionTemplate::New(isolate); |
9729 templ->SetClassName(v8_str("Fun")); | 9729 templ->SetClassName(v8_str("Fun")); |
9730 Local<Function> cons = templ->GetFunction(); | 9730 Local<Function> cons = templ->GetFunction(); |
9731 context->Global()->Set(v8_str("Fun"), cons); | 9731 context->Global()->Set(v8_str("Fun"), cons); |
9732 Local<v8::Object> inst = cons->NewInstance(); | 9732 Local<v8::Object> inst = cons->NewInstance(); |
9733 i::Handle<i::JSObject> obj(v8::Utils::OpenHandle(*inst)); | 9733 i::Handle<i::JSReceiver> obj(v8::Utils::OpenHandle(*inst)); |
9734 CHECK(obj->IsJSObject()); | 9734 CHECK(obj->IsJSObject()); |
9735 Local<Value> value = CompileRun("(new Fun()).constructor === Fun"); | 9735 Local<Value> value = CompileRun("(new Fun()).constructor === Fun"); |
9736 CHECK(value->BooleanValue()); | 9736 CHECK(value->BooleanValue()); |
9737 } | 9737 } |
9738 | 9738 |
9739 | 9739 |
9740 static void ConstructorCallback( | 9740 static void ConstructorCallback( |
9741 const v8::FunctionCallbackInfo<v8::Value>& args) { | 9741 const v8::FunctionCallbackInfo<v8::Value>& args) { |
9742 ApiTestFuzzer::Fuzz(); | 9742 ApiTestFuzzer::Fuzz(); |
9743 Local<Object> This; | 9743 Local<Object> This; |
(...skipping 3990 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13734 CHECK_EQ(expected, i::Smi::cast(element)->value()); | 13734 CHECK_EQ(expected, i::Smi::cast(element)->value()); |
13735 } | 13735 } |
13736 | 13736 |
13737 | 13737 |
13738 template <class ExternalArrayClass, class ElementType> | 13738 template <class ExternalArrayClass, class ElementType> |
13739 static void ObjectWithExternalArrayTestHelper(Handle<Context> context, | 13739 static void ObjectWithExternalArrayTestHelper(Handle<Context> context, |
13740 v8::Handle<Object> obj, | 13740 v8::Handle<Object> obj, |
13741 int element_count, | 13741 int element_count, |
13742 i::ExternalArrayType array_type, | 13742 i::ExternalArrayType array_type, |
13743 int64_t low, int64_t high) { | 13743 int64_t low, int64_t high) { |
13744 i::Handle<i::JSObject> jsobj = v8::Utils::OpenHandle(*obj); | 13744 i::Handle<i::JSReceiver> jsobj = v8::Utils::OpenHandle(*obj); |
13745 i::Isolate* isolate = jsobj->GetIsolate(); | 13745 i::Isolate* isolate = jsobj->GetIsolate(); |
13746 obj->Set(v8_str("field"), | 13746 obj->Set(v8_str("field"), |
13747 v8::Int32::New(reinterpret_cast<v8::Isolate*>(isolate), 1503)); | 13747 v8::Int32::New(reinterpret_cast<v8::Isolate*>(isolate), 1503)); |
13748 context->Global()->Set(v8_str("ext_array"), obj); | 13748 context->Global()->Set(v8_str("ext_array"), obj); |
13749 v8::Handle<v8::Value> result = CompileRun("ext_array.field"); | 13749 v8::Handle<v8::Value> result = CompileRun("ext_array.field"); |
13750 CHECK_EQ(1503, result->Int32Value()); | 13750 CHECK_EQ(1503, result->Int32Value()); |
13751 result = CompileRun("ext_array[1]"); | 13751 result = CompileRun("ext_array[1]"); |
13752 CHECK_EQ(1, result->Int32Value()); | 13752 CHECK_EQ(1, result->Int32Value()); |
13753 | 13753 |
13754 // Check assigned smis | 13754 // Check assigned smis |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13964 " (ext_array[5] == expected_results[i]);" | 13964 " (ext_array[5] == expected_results[i]);" |
13965 "}" | 13965 "}" |
13966 "all_passed;", | 13966 "all_passed;", |
13967 (is_unsigned ? | 13967 (is_unsigned ? |
13968 unsigned_data : | 13968 unsigned_data : |
13969 (is_pixel_data ? pixel_data : signed_data))); | 13969 (is_pixel_data ? pixel_data : signed_data))); |
13970 result = CompileRun(test_buf.start()); | 13970 result = CompileRun(test_buf.start()); |
13971 CHECK_EQ(true, result->BooleanValue()); | 13971 CHECK_EQ(true, result->BooleanValue()); |
13972 } | 13972 } |
13973 | 13973 |
13974 i::Handle<ExternalArrayClass> array( | 13974 i::Handle<ExternalArrayClass> array(ExternalArrayClass::cast( |
13975 ExternalArrayClass::cast(jsobj->elements())); | 13975 i::Handle<i::JSObject>::cast(jsobj)->elements())); |
13976 for (int i = 0; i < element_count; i++) { | 13976 for (int i = 0; i < element_count; i++) { |
13977 array->set(i, static_cast<ElementType>(i)); | 13977 array->set(i, static_cast<ElementType>(i)); |
13978 } | 13978 } |
13979 | 13979 |
13980 // Test complex assignments | 13980 // Test complex assignments |
13981 result = CompileRun("function ee_op_test_complex_func(sum) {" | 13981 result = CompileRun("function ee_op_test_complex_func(sum) {" |
13982 " for (var i = 0; i < 40; ++i) {" | 13982 " for (var i = 0; i < 40; ++i) {" |
13983 " sum += (ext_array[i] += 1);" | 13983 " sum += (ext_array[i] += 1);" |
13984 " sum += (ext_array[i] -= 1);" | 13984 " sum += (ext_array[i] -= 1);" |
13985 " } " | 13985 " } " |
(...skipping 8094 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
22080 env2->Global()->Set(v8_str("obj2"), object2); | 22080 env2->Global()->Set(v8_str("obj2"), object2); |
22081 ExpectString("typeof obj2.values", "function"); | 22081 ExpectString("typeof obj2.values", "function"); |
22082 CHECK_NE(*object->Get(v8_str("values")), *object2->Get(v8_str("values"))); | 22082 CHECK_NE(*object->Get(v8_str("values")), *object2->Get(v8_str("values"))); |
22083 | 22083 |
22084 auto values2 = Local<Function>::Cast(object2->Get(v8_str("values"))); | 22084 auto values2 = Local<Function>::Cast(object2->Get(v8_str("values"))); |
22085 auto fn2 = i::Handle<i::JSFunction>::cast(v8::Utils::OpenHandle(*values2)); | 22085 auto fn2 = i::Handle<i::JSFunction>::cast(v8::Utils::OpenHandle(*values2)); |
22086 auto ctx2 = v8::Utils::OpenHandle(*env2.local()); | 22086 auto ctx2 = v8::Utils::OpenHandle(*env2.local()); |
22087 CHECK_EQ(fn2->GetCreationContext(), *ctx2); | 22087 CHECK_EQ(fn2->GetCreationContext(), *ctx2); |
22088 } | 22088 } |
22089 } | 22089 } |
OLD | NEW |