| 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 4204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4215 indexed->NewInstance()); | 4215 indexed->NewInstance()); |
| 4216 | 4216 |
| 4217 // Create object with both named and indexed interceptor. | 4217 // Create object with both named and indexed interceptor. |
| 4218 v8::Handle<v8::ObjectTemplate> both = v8::ObjectTemplate::New(); | 4218 v8::Handle<v8::ObjectTemplate> both = v8::ObjectTemplate::New(); |
| 4219 both->SetNamedPropertyHandler(NamedGetter, NULL, NULL, NULL, NamedEnum); | 4219 both->SetNamedPropertyHandler(NamedGetter, NULL, NULL, NULL, NamedEnum); |
| 4220 both->SetIndexedPropertyHandler(IndexedGetter, NULL, NULL, NULL, IndexedEnum); | 4220 both->SetIndexedPropertyHandler(IndexedGetter, NULL, NULL, NULL, IndexedEnum); |
| 4221 env->Global()->Set(v8::String::New("intercepted_both"), both->NewInstance()); | 4221 env->Global()->Set(v8::String::New("intercepted_both"), both->NewInstance()); |
| 4222 | 4222 |
| 4223 // Get mirrors for the three objects with interceptor. | 4223 // Get mirrors for the three objects with interceptor. |
| 4224 CompileRun( | 4224 CompileRun( |
| 4225 "named_mirror = debug.MakeMirror(intercepted_named);" | 4225 "var named_mirror = debug.MakeMirror(intercepted_named);" |
| 4226 "indexed_mirror = debug.MakeMirror(intercepted_indexed);" | 4226 "var indexed_mirror = debug.MakeMirror(intercepted_indexed);" |
| 4227 "both_mirror = debug.MakeMirror(intercepted_both)"); | 4227 "var both_mirror = debug.MakeMirror(intercepted_both)"); |
| 4228 CHECK(CompileRun( | 4228 CHECK(CompileRun( |
| 4229 "named_mirror instanceof debug.ObjectMirror")->BooleanValue()); | 4229 "named_mirror instanceof debug.ObjectMirror")->BooleanValue()); |
| 4230 CHECK(CompileRun( | 4230 CHECK(CompileRun( |
| 4231 "indexed_mirror instanceof debug.ObjectMirror")->BooleanValue()); | 4231 "indexed_mirror instanceof debug.ObjectMirror")->BooleanValue()); |
| 4232 CHECK(CompileRun( | 4232 CHECK(CompileRun( |
| 4233 "both_mirror instanceof debug.ObjectMirror")->BooleanValue()); | 4233 "both_mirror instanceof debug.ObjectMirror")->BooleanValue()); |
| 4234 | 4234 |
| 4235 // Get the property names from the interceptors | 4235 // Get the property names from the interceptors |
| 4236 CompileRun( | 4236 CompileRun( |
| 4237 "named_names = named_mirror.propertyNames();" | 4237 "named_names = named_mirror.propertyNames();" |
| (...skipping 20 matching lines...) Expand all Loading... |
| 4258 | 4258 |
| 4259 // 2 is PropertyKind.Indexed; | 4259 // 2 is PropertyKind.Indexed; |
| 4260 source = "both_mirror.properties(2).length"; | 4260 source = "both_mirror.properties(2).length"; |
| 4261 CHECK_EQ(2, CompileRun(source)->Int32Value()); | 4261 CHECK_EQ(2, CompileRun(source)->Int32Value()); |
| 4262 | 4262 |
| 4263 // 3 is PropertyKind.Named | PropertyKind.Indexed; | 4263 // 3 is PropertyKind.Named | PropertyKind.Indexed; |
| 4264 source = "both_mirror.properties(3).length"; | 4264 source = "both_mirror.properties(3).length"; |
| 4265 CHECK_EQ(5, CompileRun(source)->Int32Value()); | 4265 CHECK_EQ(5, CompileRun(source)->Int32Value()); |
| 4266 | 4266 |
| 4267 // Get the interceptor properties for the object with only named interceptor. | 4267 // Get the interceptor properties for the object with only named interceptor. |
| 4268 CompileRun("named_values = named_mirror.properties()"); | 4268 CompileRun("var named_values = named_mirror.properties()"); |
| 4269 | 4269 |
| 4270 // Check that the properties are interceptor properties. | 4270 // Check that the properties are interceptor properties. |
| 4271 for (int i = 0; i < 3; i++) { | 4271 for (int i = 0; i < 3; i++) { |
| 4272 EmbeddedVector<char, SMALL_STRING_BUFFER_SIZE> buffer; | 4272 EmbeddedVector<char, SMALL_STRING_BUFFER_SIZE> buffer; |
| 4273 OS::SNPrintF(buffer, | 4273 OS::SNPrintF(buffer, |
| 4274 "named_values[%d] instanceof debug.PropertyMirror", i); | 4274 "named_values[%d] instanceof debug.PropertyMirror", i); |
| 4275 CHECK(CompileRun(buffer.start())->BooleanValue()); | 4275 CHECK(CompileRun(buffer.start())->BooleanValue()); |
| 4276 | 4276 |
| 4277 // 5 is PropertyType.Interceptor | 4277 // 5 is PropertyType.Interceptor |
| 4278 OS::SNPrintF(buffer, "named_values[%d].propertyType()", i); | 4278 OS::SNPrintF(buffer, "named_values[%d].propertyType()", i); |
| 4279 CHECK_EQ(5, CompileRun(buffer.start())->Int32Value()); | 4279 CHECK_EQ(5, CompileRun(buffer.start())->Int32Value()); |
| 4280 | 4280 |
| 4281 OS::SNPrintF(buffer, "named_values[%d].isNative()", i); | 4281 OS::SNPrintF(buffer, "named_values[%d].isNative()", i); |
| 4282 CHECK(CompileRun(buffer.start())->BooleanValue()); | 4282 CHECK(CompileRun(buffer.start())->BooleanValue()); |
| 4283 } | 4283 } |
| 4284 | 4284 |
| 4285 // Get the interceptor properties for the object with only indexed | 4285 // Get the interceptor properties for the object with only indexed |
| 4286 // interceptor. | 4286 // interceptor. |
| 4287 CompileRun("indexed_values = indexed_mirror.properties()"); | 4287 CompileRun("var indexed_values = indexed_mirror.properties()"); |
| 4288 | 4288 |
| 4289 // Check that the properties are interceptor properties. | 4289 // Check that the properties are interceptor properties. |
| 4290 for (int i = 0; i < 2; i++) { | 4290 for (int i = 0; i < 2; i++) { |
| 4291 EmbeddedVector<char, SMALL_STRING_BUFFER_SIZE> buffer; | 4291 EmbeddedVector<char, SMALL_STRING_BUFFER_SIZE> buffer; |
| 4292 OS::SNPrintF(buffer, | 4292 OS::SNPrintF(buffer, |
| 4293 "indexed_values[%d] instanceof debug.PropertyMirror", i); | 4293 "indexed_values[%d] instanceof debug.PropertyMirror", i); |
| 4294 CHECK(CompileRun(buffer.start())->BooleanValue()); | 4294 CHECK(CompileRun(buffer.start())->BooleanValue()); |
| 4295 } | 4295 } |
| 4296 | 4296 |
| 4297 // Get the interceptor properties for the object with both types of | 4297 // Get the interceptor properties for the object with both types of |
| 4298 // interceptors. | 4298 // interceptors. |
| 4299 CompileRun("both_values = both_mirror.properties()"); | 4299 CompileRun("var both_values = both_mirror.properties()"); |
| 4300 | 4300 |
| 4301 // Check that the properties are interceptor properties. | 4301 // Check that the properties are interceptor properties. |
| 4302 for (int i = 0; i < 5; i++) { | 4302 for (int i = 0; i < 5; i++) { |
| 4303 EmbeddedVector<char, SMALL_STRING_BUFFER_SIZE> buffer; | 4303 EmbeddedVector<char, SMALL_STRING_BUFFER_SIZE> buffer; |
| 4304 OS::SNPrintF(buffer, "both_values[%d] instanceof debug.PropertyMirror", i); | 4304 OS::SNPrintF(buffer, "both_values[%d] instanceof debug.PropertyMirror", i); |
| 4305 CHECK(CompileRun(buffer.start())->BooleanValue()); | 4305 CHECK(CompileRun(buffer.start())->BooleanValue()); |
| 4306 } | 4306 } |
| 4307 | 4307 |
| 4308 // Check the property names. | 4308 // Check the property names. |
| 4309 source = "both_values[0].name() == 'a'"; | 4309 source = "both_values[0].name() == 'a'"; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4345 env->Global()->Set(v8::String::New("o0"), o0); | 4345 env->Global()->Set(v8::String::New("o0"), o0); |
| 4346 v8::Handle<v8::Object> o1 = t1->GetFunction()->NewInstance(); | 4346 v8::Handle<v8::Object> o1 = t1->GetFunction()->NewInstance(); |
| 4347 env->Global()->Set(v8::String::New("o1"), o1); | 4347 env->Global()->Set(v8::String::New("o1"), o1); |
| 4348 v8::Handle<v8::Object> o2 = t2->GetFunction()->NewInstance(); | 4348 v8::Handle<v8::Object> o2 = t2->GetFunction()->NewInstance(); |
| 4349 env->Global()->Set(v8::String::New("o2"), o2); | 4349 env->Global()->Set(v8::String::New("o2"), o2); |
| 4350 v8::Handle<v8::Object> o3 = t3->GetFunction()->NewInstance(); | 4350 v8::Handle<v8::Object> o3 = t3->GetFunction()->NewInstance(); |
| 4351 env->Global()->Set(v8::String::New("o3"), o3); | 4351 env->Global()->Set(v8::String::New("o3"), o3); |
| 4352 | 4352 |
| 4353 // Get mirrors for the four objects. | 4353 // Get mirrors for the four objects. |
| 4354 CompileRun( | 4354 CompileRun( |
| 4355 "o0_mirror = debug.MakeMirror(o0);" | 4355 "var o0_mirror = debug.MakeMirror(o0);" |
| 4356 "o1_mirror = debug.MakeMirror(o1);" | 4356 "var o1_mirror = debug.MakeMirror(o1);" |
| 4357 "o2_mirror = debug.MakeMirror(o2);" | 4357 "var o2_mirror = debug.MakeMirror(o2);" |
| 4358 "o3_mirror = debug.MakeMirror(o3)"); | 4358 "var o3_mirror = debug.MakeMirror(o3)"); |
| 4359 CHECK(CompileRun("o0_mirror instanceof debug.ObjectMirror")->BooleanValue()); | 4359 CHECK(CompileRun("o0_mirror instanceof debug.ObjectMirror")->BooleanValue()); |
| 4360 CHECK(CompileRun("o1_mirror instanceof debug.ObjectMirror")->BooleanValue()); | 4360 CHECK(CompileRun("o1_mirror instanceof debug.ObjectMirror")->BooleanValue()); |
| 4361 CHECK(CompileRun("o2_mirror instanceof debug.ObjectMirror")->BooleanValue()); | 4361 CHECK(CompileRun("o2_mirror instanceof debug.ObjectMirror")->BooleanValue()); |
| 4362 CHECK(CompileRun("o3_mirror instanceof debug.ObjectMirror")->BooleanValue()); | 4362 CHECK(CompileRun("o3_mirror instanceof debug.ObjectMirror")->BooleanValue()); |
| 4363 | 4363 |
| 4364 // Check that each object has one property. | 4364 // Check that each object has one property. |
| 4365 CHECK_EQ(1, CompileRun( | 4365 CHECK_EQ(1, CompileRun( |
| 4366 "o0_mirror.propertyNames().length")->Int32Value()); | 4366 "o0_mirror.propertyNames().length")->Int32Value()); |
| 4367 CHECK_EQ(1, CompileRun( | 4367 CHECK_EQ(1, CompileRun( |
| 4368 "o1_mirror.propertyNames().length")->Int32Value()); | 4368 "o1_mirror.propertyNames().length")->Int32Value()); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4434 // Create object with named accessor. | 4434 // Create object with named accessor. |
| 4435 v8::Handle<v8::ObjectTemplate> named = v8::ObjectTemplate::New(); | 4435 v8::Handle<v8::ObjectTemplate> named = v8::ObjectTemplate::New(); |
| 4436 named->SetAccessor(name, &ProtperyXNativeGetter, NULL, | 4436 named->SetAccessor(name, &ProtperyXNativeGetter, NULL, |
| 4437 v8::Handle<v8::Value>(), v8::DEFAULT, v8::None); | 4437 v8::Handle<v8::Value>(), v8::DEFAULT, v8::None); |
| 4438 | 4438 |
| 4439 // Create object with named property getter. | 4439 // Create object with named property getter. |
| 4440 env->Global()->Set(v8::String::New("instance"), named->NewInstance()); | 4440 env->Global()->Set(v8::String::New("instance"), named->NewInstance()); |
| 4441 CHECK_EQ(10, CompileRun("instance.x")->Int32Value()); | 4441 CHECK_EQ(10, CompileRun("instance.x")->Int32Value()); |
| 4442 | 4442 |
| 4443 // Get mirror for the object with property getter. | 4443 // Get mirror for the object with property getter. |
| 4444 CompileRun("instance_mirror = debug.MakeMirror(instance);"); | 4444 CompileRun("var instance_mirror = debug.MakeMirror(instance);"); |
| 4445 CHECK(CompileRun( | 4445 CHECK(CompileRun( |
| 4446 "instance_mirror instanceof debug.ObjectMirror")->BooleanValue()); | 4446 "instance_mirror instanceof debug.ObjectMirror")->BooleanValue()); |
| 4447 | 4447 |
| 4448 CompileRun("named_names = instance_mirror.propertyNames();"); | 4448 CompileRun("var named_names = instance_mirror.propertyNames();"); |
| 4449 CHECK_EQ(1, CompileRun("named_names.length")->Int32Value()); | 4449 CHECK_EQ(1, CompileRun("named_names.length")->Int32Value()); |
| 4450 CHECK(CompileRun("named_names[0] == 'x'")->BooleanValue()); | 4450 CHECK(CompileRun("named_names[0] == 'x'")->BooleanValue()); |
| 4451 CHECK(CompileRun( | 4451 CHECK(CompileRun( |
| 4452 "instance_mirror.property('x').value().isNumber()")->BooleanValue()); | 4452 "instance_mirror.property('x').value().isNumber()")->BooleanValue()); |
| 4453 CHECK(CompileRun( | 4453 CHECK(CompileRun( |
| 4454 "instance_mirror.property('x').value().value() == 10")->BooleanValue()); | 4454 "instance_mirror.property('x').value().value() == 10")->BooleanValue()); |
| 4455 } | 4455 } |
| 4456 | 4456 |
| 4457 | 4457 |
| 4458 static v8::Handle<v8::Value> ProtperyXNativeGetterThrowingError( | 4458 static v8::Handle<v8::Value> ProtperyXNativeGetterThrowingError( |
| (...skipping 11 matching lines...) Expand all Loading... |
| 4470 v8::Handle<v8::String> name = v8::String::New("x"); | 4470 v8::Handle<v8::String> name = v8::String::New("x"); |
| 4471 // Create object with named accessor. | 4471 // Create object with named accessor. |
| 4472 v8::Handle<v8::ObjectTemplate> named = v8::ObjectTemplate::New(); | 4472 v8::Handle<v8::ObjectTemplate> named = v8::ObjectTemplate::New(); |
| 4473 named->SetAccessor(name, &ProtperyXNativeGetterThrowingError, NULL, | 4473 named->SetAccessor(name, &ProtperyXNativeGetterThrowingError, NULL, |
| 4474 v8::Handle<v8::Value>(), v8::DEFAULT, v8::None); | 4474 v8::Handle<v8::Value>(), v8::DEFAULT, v8::None); |
| 4475 | 4475 |
| 4476 // Create object with named property getter. | 4476 // Create object with named property getter. |
| 4477 env->Global()->Set(v8::String::New("instance"), named->NewInstance()); | 4477 env->Global()->Set(v8::String::New("instance"), named->NewInstance()); |
| 4478 | 4478 |
| 4479 // Get mirror for the object with property getter. | 4479 // Get mirror for the object with property getter. |
| 4480 CompileRun("instance_mirror = debug.MakeMirror(instance);"); | 4480 CompileRun("var instance_mirror = debug.MakeMirror(instance);"); |
| 4481 CHECK(CompileRun( | 4481 CHECK(CompileRun( |
| 4482 "instance_mirror instanceof debug.ObjectMirror")->BooleanValue()); | 4482 "instance_mirror instanceof debug.ObjectMirror")->BooleanValue()); |
| 4483 CompileRun("named_names = instance_mirror.propertyNames();"); | 4483 CompileRun("named_names = instance_mirror.propertyNames();"); |
| 4484 CHECK_EQ(1, CompileRun("named_names.length")->Int32Value()); | 4484 CHECK_EQ(1, CompileRun("named_names.length")->Int32Value()); |
| 4485 CHECK(CompileRun("named_names[0] == 'x'")->BooleanValue()); | 4485 CHECK(CompileRun("named_names[0] == 'x'")->BooleanValue()); |
| 4486 CHECK(CompileRun( | 4486 CHECK(CompileRun( |
| 4487 "instance_mirror.property('x').value().isError()")->BooleanValue()); | 4487 "instance_mirror.property('x').value().isError()")->BooleanValue()); |
| 4488 | 4488 |
| 4489 // Check that the message is that passed to the Error constructor. | 4489 // Check that the message is that passed to the Error constructor. |
| 4490 CHECK(CompileRun( | 4490 CHECK(CompileRun( |
| (...skipping 2850 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7341 "g(false); \n" | 7341 "g(false); \n" |
| 7342 "%OptimizeFunctionOnNextCall(g); \n" | 7342 "%OptimizeFunctionOnNextCall(g); \n" |
| 7343 "g(true);"; | 7343 "g(true);"; |
| 7344 v8::Debug::SetDebugEventListener(DebugBreakInlineListener); | 7344 v8::Debug::SetDebugEventListener(DebugBreakInlineListener); |
| 7345 inline_script = v8::Script::Compile(v8::String::New(source)); | 7345 inline_script = v8::Script::Compile(v8::String::New(source)); |
| 7346 inline_script->Run(); | 7346 inline_script->Run(); |
| 7347 } | 7347 } |
| 7348 | 7348 |
| 7349 | 7349 |
| 7350 #endif // ENABLE_DEBUGGER_SUPPORT | 7350 #endif // ENABLE_DEBUGGER_SUPPORT |
| OLD | NEW |