OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <stdlib.h> | 5 #include <stdlib.h> |
6 | 6 |
7 #include "test/cctest/test-api.h" | 7 #include "test/cctest/test-api.h" |
8 | 8 |
9 #include "include/v8-util.h" | 9 #include "include/v8-util.h" |
10 #include "src/api.h" | 10 #include "src/api.h" |
(...skipping 2252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2263 " result.push(prop);" | 2263 " result.push(prop);" |
2264 "}" | 2264 "}" |
2265 "result")); | 2265 "result")); |
2266 // Check that we get all the property names returned including the | 2266 // Check that we get all the property names returned including the |
2267 // ones from the enumerators in the right order: indexed properties | 2267 // ones from the enumerators in the right order: indexed properties |
2268 // in numerical order, indexed interceptor properties, named | 2268 // in numerical order, indexed interceptor properties, named |
2269 // properties in insertion order, named interceptor properties. | 2269 // properties in insertion order, named interceptor properties. |
2270 // This order is not mandated by the spec, so this test is just | 2270 // This order is not mandated by the spec, so this test is just |
2271 // documenting our behavior. | 2271 // documenting our behavior. |
2272 CHECK_EQ(17u, result->Length()); | 2272 CHECK_EQ(17u, result->Length()); |
2273 // Indexed properties. | 2273 // Indexed properties + indexed interceptor properties in numerical order. |
2274 CHECK(v8_str("5") | 2274 CHECK(v8_str("0") |
2275 ->Equals(context.local(), | 2275 ->Equals(context.local(), |
2276 result->Get(context.local(), v8::Integer::New(isolate, 0)) | 2276 result->Get(context.local(), v8::Integer::New(isolate, 0)) |
2277 .ToLocalChecked()) | 2277 .ToLocalChecked()) |
2278 .FromJust()); | 2278 .FromJust()); |
2279 CHECK(v8_str("10") | 2279 CHECK(v8_str("1") |
2280 ->Equals(context.local(), | 2280 ->Equals(context.local(), |
2281 result->Get(context.local(), v8::Integer::New(isolate, 1)) | 2281 result->Get(context.local(), v8::Integer::New(isolate, 1)) |
2282 .ToLocalChecked()) | 2282 .ToLocalChecked()) |
2283 .FromJust()); | 2283 .FromJust()); |
2284 CHECK(v8_str("140000") | 2284 CHECK(v8_str("5") |
2285 ->Equals(context.local(), | 2285 ->Equals(context.local(), |
2286 result->Get(context.local(), v8::Integer::New(isolate, 2)) | 2286 result->Get(context.local(), v8::Integer::New(isolate, 2)) |
2287 .ToLocalChecked()) | 2287 .ToLocalChecked()) |
2288 .FromJust()); | 2288 .FromJust()); |
2289 CHECK(v8_str("4294967294") | 2289 CHECK(v8_str("10") |
2290 ->Equals(context.local(), | 2290 ->Equals(context.local(), |
2291 result->Get(context.local(), v8::Integer::New(isolate, 3)) | 2291 result->Get(context.local(), v8::Integer::New(isolate, 3)) |
2292 .ToLocalChecked()) | 2292 .ToLocalChecked()) |
2293 .FromJust()); | 2293 .FromJust()); |
2294 // Indexed Interceptor properties | 2294 CHECK(v8_str("140000") |
2295 CHECK(v8_str("0") | |
2296 ->Equals(context.local(), | 2295 ->Equals(context.local(), |
2297 result->Get(context.local(), v8::Integer::New(isolate, 4)) | 2296 result->Get(context.local(), v8::Integer::New(isolate, 4)) |
2298 .ToLocalChecked()) | 2297 .ToLocalChecked()) |
2299 .FromJust()); | 2298 .FromJust()); |
2300 CHECK(v8_str("1") | 2299 CHECK(v8_str("4294967294") |
2301 ->Equals(context.local(), | 2300 ->Equals(context.local(), |
2302 result->Get(context.local(), v8::Integer::New(isolate, 5)) | 2301 result->Get(context.local(), v8::Integer::New(isolate, 5)) |
2303 .ToLocalChecked()) | 2302 .ToLocalChecked()) |
2304 .FromJust()); | 2303 .FromJust()); |
2305 // Named properties in insertion order. | 2304 // Named properties in insertion order. |
2306 CHECK(v8_str("a") | 2305 CHECK(v8_str("a") |
2307 ->Equals(context.local(), | 2306 ->Equals(context.local(), |
2308 result->Get(context.local(), v8::Integer::New(isolate, 6)) | 2307 result->Get(context.local(), v8::Integer::New(isolate, 6)) |
2309 .ToLocalChecked()) | 2308 .ToLocalChecked()) |
2310 .FromJust()); | 2309 .FromJust()); |
(...skipping 1596 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3907 ->Set(env.local(), v8_str("Fun"), | 3906 ->Set(env.local(), v8_str("Fun"), |
3908 fun_templ->GetFunction(env.local()).ToLocalChecked()) | 3907 fun_templ->GetFunction(env.local()).ToLocalChecked()) |
3909 .FromJust()); | 3908 .FromJust()); |
3910 | 3909 |
3911 CompileRun( | 3910 CompileRun( |
3912 "var f = new Fun();" | 3911 "var f = new Fun();" |
3913 "Number.prototype.__proto__ = f;" | 3912 "Number.prototype.__proto__ = f;" |
3914 "var a = 42;" | 3913 "var a = 42;" |
3915 "for (var i = 0; i<3; i++) { a.foo; }"); | 3914 "for (var i = 0; i<3; i++) { a.foo; }"); |
3916 } | 3915 } |
OLD | NEW |