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" |
11 #include "src/arguments.h" | 11 #include "src/arguments.h" |
12 #include "src/base/platform/platform.h" | 12 #include "src/base/platform/platform.h" |
13 #include "src/compilation-cache.h" | 13 #include "src/compilation-cache.h" |
14 #include "src/execution.h" | 14 #include "src/execution.h" |
15 #include "src/objects.h" | 15 #include "src/objects.h" |
| 16 #include "src/runtime/runtime.h" |
16 #include "src/unicode-inl.h" | 17 #include "src/unicode-inl.h" |
17 #include "src/utils.h" | 18 #include "src/utils.h" |
18 | 19 |
19 using ::v8::Boolean; | 20 using ::v8::Boolean; |
20 using ::v8::BooleanObject; | 21 using ::v8::BooleanObject; |
21 using ::v8::Context; | 22 using ::v8::Context; |
22 using ::v8::Extension; | 23 using ::v8::Extension; |
23 using ::v8::Function; | 24 using ::v8::Function; |
24 using ::v8::FunctionTemplate; | 25 using ::v8::FunctionTemplate; |
25 using ::v8::HandleScope; | 26 using ::v8::HandleScope; |
(...skipping 4075 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4101 context->Global() | 4102 context->Global() |
4102 ->Set(context.local(), v8_str("Bug"), | 4103 ->Set(context.local(), v8_str("Bug"), |
4103 templ->GetFunction(context.local()).ToLocalChecked()) | 4104 templ->GetFunction(context.local()).ToLocalChecked()) |
4104 .FromJust(); | 4105 .FromJust(); |
4105 CompileRun( | 4106 CompileRun( |
4106 "\"use strict\"; var o = new Bug;" | 4107 "\"use strict\"; var o = new Bug;" |
4107 "function f(o) { o.x = 10; };" | 4108 "function f(o) { o.x = 10; };" |
4108 "f(o); f(o); f(o);" | 4109 "f(o); f(o); f(o);" |
4109 "%OptimizeFunctionOnNextCall(f);" | 4110 "%OptimizeFunctionOnNextCall(f);" |
4110 "f(o);"); | 4111 "f(o);"); |
4111 ExpectBoolean("%GetOptimizationStatus(f) != 2", true); | 4112 int status = v8_run_int32value(v8_compile("%GetOptimizationStatus(f)")); |
| 4113 int mask = static_cast<int>(i::OptimizationStatus::kIsOptmimizedFunctionMask); |
| 4114 CHECK_EQ(mask, status & mask); |
4112 } | 4115 } |
4113 | 4116 |
4114 | 4117 |
4115 THREADED_TEST(CrankshaftInterceptorSetter) { | 4118 THREADED_TEST(CrankshaftInterceptorSetter) { |
4116 i::FLAG_allow_natives_syntax = true; | 4119 i::FLAG_allow_natives_syntax = true; |
4117 v8::HandleScope scope(CcTest::isolate()); | 4120 v8::HandleScope scope(CcTest::isolate()); |
4118 Local<FunctionTemplate> templ = FunctionTemplate::New(CcTest::isolate()); | 4121 Local<FunctionTemplate> templ = FunctionTemplate::New(CcTest::isolate()); |
4119 AddInterceptor(templ, InterceptorGetter, InterceptorSetter); | 4122 AddInterceptor(templ, InterceptorGetter, InterceptorSetter); |
4120 LocalContext env; | 4123 LocalContext env; |
4121 env->Global() | 4124 env->Global() |
(...skipping 790 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4912 ->Set(env.local(), v8_str("Fun"), | 4915 ->Set(env.local(), v8_str("Fun"), |
4913 fun_templ->GetFunction(env.local()).ToLocalChecked()) | 4916 fun_templ->GetFunction(env.local()).ToLocalChecked()) |
4914 .FromJust()); | 4917 .FromJust()); |
4915 | 4918 |
4916 CompileRun( | 4919 CompileRun( |
4917 "var f = new Fun();" | 4920 "var f = new Fun();" |
4918 "Number.prototype.__proto__ = f;" | 4921 "Number.prototype.__proto__ = f;" |
4919 "var a = 42;" | 4922 "var a = 42;" |
4920 "for (var i = 0; i<3; i++) { a.foo; }"); | 4923 "for (var i = 0; i<3; i++) { a.foo; }"); |
4921 } | 4924 } |
OLD | NEW |