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 18086 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
18097 global_template->Set(v8_str("proxy"), proxy_object); | 18097 global_template->Set(v8_str("proxy"), proxy_object); |
18098 global_template->Set(v8_str("hidden"), object_with_hidden); | 18098 global_template->Set(v8_str("hidden"), object_with_hidden); |
18099 global_template->Set(v8_str("phidden"), object_with_protected_hidden); | 18099 global_template->Set(v8_str("phidden"), object_with_protected_hidden); |
18100 | 18100 |
18101 LocalContext context2(NULL, global_template); | 18101 LocalContext context2(NULL, global_template); |
18102 | 18102 |
18103 Local<Value> result1 = CompileRun("Object.getPrototypeOf(simple)"); | 18103 Local<Value> result1 = CompileRun("Object.getPrototypeOf(simple)"); |
18104 CHECK(result1->Equals(simple_object->GetPrototype())); | 18104 CHECK(result1->Equals(simple_object->GetPrototype())); |
18105 | 18105 |
18106 Local<Value> result2 = CompileRun("Object.getPrototypeOf(protected)"); | 18106 Local<Value> result2 = CompileRun("Object.getPrototypeOf(protected)"); |
18107 CHECK(result2.IsEmpty()); | 18107 CHECK(result2->IsNull()); |
18108 | 18108 |
18109 Local<Value> result3 = CompileRun("Object.getPrototypeOf(global)"); | 18109 Local<Value> result3 = CompileRun("Object.getPrototypeOf(global)"); |
18110 CHECK(result3->Equals(global_object->GetPrototype())); | 18110 CHECK(result3->Equals(global_object->GetPrototype())); |
18111 | 18111 |
18112 Local<Value> result4 = CompileRun("Object.getPrototypeOf(proxy)"); | 18112 Local<Value> result4 = CompileRun("Object.getPrototypeOf(proxy)"); |
18113 CHECK(result4.IsEmpty()); | 18113 CHECK(result4->IsNull()); |
18114 | 18114 |
18115 Local<Value> result5 = CompileRun("Object.getPrototypeOf(hidden)"); | 18115 Local<Value> result5 = CompileRun("Object.getPrototypeOf(hidden)"); |
18116 CHECK(result5->Equals( | 18116 CHECK(result5->Equals( |
18117 object_with_hidden->GetPrototype()->ToObject(isolate)->GetPrototype())); | 18117 object_with_hidden->GetPrototype()->ToObject(isolate)->GetPrototype())); |
18118 | 18118 |
18119 Local<Value> result6 = CompileRun("Object.getPrototypeOf(phidden)"); | 18119 Local<Value> result6 = CompileRun("Object.getPrototypeOf(phidden)"); |
18120 CHECK(result6.IsEmpty()); | 18120 CHECK(result6->IsNull()); |
18121 } | 18121 } |
18122 | 18122 |
18123 | 18123 |
18124 static void TestReceiver(Local<Value> expected_result, | 18124 static void TestReceiver(Local<Value> expected_result, |
18125 Local<Value> expected_receiver, | 18125 Local<Value> expected_receiver, |
18126 const char* code) { | 18126 const char* code) { |
18127 Local<Value> result = CompileRun(code); | 18127 Local<Value> result = CompileRun(code); |
18128 CHECK(result->IsObject()); | 18128 CHECK(result->IsObject()); |
18129 CHECK(expected_receiver->Equals(result.As<v8::Object>()->Get(1))); | 18129 CHECK(expected_receiver->Equals(result.As<v8::Object>()->Get(1))); |
18130 CHECK(expected_result->Equals(result.As<v8::Object>()->Get(0))); | 18130 CHECK(expected_result->Equals(result.As<v8::Object>()->Get(0))); |
(...skipping 3147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
21278 v8::Isolate* isolate = CcTest::isolate(); | 21278 v8::Isolate* isolate = CcTest::isolate(); |
21279 v8::HandleScope handle_scope(isolate); | 21279 v8::HandleScope handle_scope(isolate); |
21280 LocalContext env; | 21280 LocalContext env; |
21281 | 21281 |
21282 v8::Handle<v8::ObjectTemplate> obj_template = | 21282 v8::Handle<v8::ObjectTemplate> obj_template = |
21283 v8::ObjectTemplate::New(isolate); | 21283 v8::ObjectTemplate::New(isolate); |
21284 obj_template->SetAccessCheckCallbacks(AccessAlwaysBlocked, NULL); | 21284 obj_template->SetAccessCheckCallbacks(AccessAlwaysBlocked, NULL); |
21285 | 21285 |
21286 env->Global()->Set(v8_str("prohibited"), obj_template->NewInstance()); | 21286 env->Global()->Set(v8_str("prohibited"), obj_template->NewInstance()); |
21287 | 21287 |
21288 { | 21288 CHECK(CompileRun( |
21289 v8::TryCatch try_catch(isolate); | 21289 "function f() { return %_GetPrototype(prohibited); }" |
21290 CompileRun( | 21290 "%OptimizeFunctionOnNextCall(f);" |
21291 "function f() { %_GetPrototype(prohibited); }" | 21291 "f();")->IsNull()); |
21292 "%OptimizeFunctionOnNextCall(f);" | |
21293 "f();"); | |
21294 CHECK(try_catch.HasCaught()); | |
21295 } | |
21296 } | 21292 } |
21297 | 21293 |
21298 | 21294 |
21299 TEST(GetPrototypeHidden) { | 21295 TEST(GetPrototypeHidden) { |
21300 i::FLAG_allow_natives_syntax = true; | 21296 i::FLAG_allow_natives_syntax = true; |
21301 v8::Isolate* isolate = CcTest::isolate(); | 21297 v8::Isolate* isolate = CcTest::isolate(); |
21302 v8::HandleScope handle_scope(isolate); | 21298 v8::HandleScope handle_scope(isolate); |
21303 LocalContext env; | 21299 LocalContext env; |
21304 | 21300 |
21305 Handle<FunctionTemplate> t = FunctionTemplate::New(isolate); | 21301 Handle<FunctionTemplate> t = FunctionTemplate::New(isolate); |
(...skipping 535 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
21841 " fake.age;\n" | 21837 " fake.age;\n" |
21842 " result = 1;\n" | 21838 " result = 1;\n" |
21843 " } catch (e) {\n" | 21839 " } catch (e) {\n" |
21844 " }\n" | 21840 " }\n" |
21845 " test(d+1);\n" | 21841 " test(d+1);\n" |
21846 "}\n" | 21842 "}\n" |
21847 "test(0);\n" | 21843 "test(0);\n" |
21848 "result;\n", | 21844 "result;\n", |
21849 0); | 21845 0); |
21850 } | 21846 } |
OLD | NEW |