Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(77)

Side by Side Diff: test/cctest/compiler/test-run-jscalls.cc

Issue 2406803002: [turbofan] Enforce native context specialization. (Closed)
Patch Set: Remove unused variables Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/cctest/compiler/test-run-inlining.cc ('k') | test/mjsunit/regress/regress-568765.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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 "src/api.h" 5 #include "src/api.h"
6 #include "src/contexts.h" 6 #include "src/contexts.h"
7 #include "src/flags.h" 7 #include "src/flags.h"
8 #include "src/objects.h" 8 #include "src/objects.h"
9 #include "test/cctest/compiler/function-tester.h" 9 #include "test/cctest/compiler/function-tester.h"
10 10
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 FunctionTester T( 198 FunctionTester T(
199 "var x = 42;" 199 "var x = 42;"
200 "(function () {" 200 "(function () {"
201 "function bar() { return eval('x') };" 201 "function bar() { return eval('x') };"
202 "return bar;" 202 "return bar;"
203 "})();"); 203 "})();");
204 204
205 T.CheckCall(T.Val(42), T.Val("x"), T.undefined()); 205 T.CheckCall(T.Val(42), T.Val("x"), T.undefined());
206 } 206 }
207 207
208
209 TEST(ContextLoadedFromActivation) {
210 const char* script =
211 "var x = 42;"
212 "(function() {"
213 " return function () { return x };"
214 "})()";
215
216 // Disable context specialization.
217 FunctionTester T(script);
218 v8::Local<v8::Context> context = v8::Context::New(CcTest::isolate());
219 v8::Context::Scope scope(context);
220 v8::Local<v8::Value> value = CompileRun(script);
221 i::Handle<i::Object> ofun = v8::Utils::OpenHandle(*value);
222 i::Handle<i::JSFunction> jsfun = Handle<JSFunction>::cast(ofun);
223 jsfun->set_code(T.function->code());
224 jsfun->set_shared(T.function->shared());
225 jsfun->set_literals(T.function->literals());
226 CHECK(context->Global()
227 ->Set(context, v8_str("foo"), v8::Utils::CallableToLocal(jsfun))
228 .FromJust());
229 CompileRun("var x = 24;");
230 ExpectInt32("foo();", 24);
231 }
232
233
234 TEST(BuiltinLoadedFromActivation) {
235 const char* script =
236 "var x = 42;"
237 "(function() {"
238 " return function () { return this; };"
239 "})()";
240
241 // Disable context specialization.
242 FunctionTester T(script);
243 v8::Local<v8::Context> context = v8::Context::New(CcTest::isolate());
244 v8::Context::Scope scope(context);
245 v8::Local<v8::Value> value = CompileRun(script);
246 i::Handle<i::Object> ofun = v8::Utils::OpenHandle(*value);
247 i::Handle<i::JSFunction> jsfun = Handle<JSFunction>::cast(ofun);
248 jsfun->set_code(T.function->code());
249 jsfun->set_shared(T.function->shared());
250 jsfun->set_literals(T.function->literals());
251 CHECK(context->Global()
252 ->Set(context, v8_str("foo"), v8::Utils::CallableToLocal(jsfun))
253 .FromJust());
254 CompileRun("var x = 24;");
255 ExpectObject("foo()", context->Global());
256 }
257
258 } // namespace compiler 208 } // namespace compiler
259 } // namespace internal 209 } // namespace internal
260 } // namespace v8 210 } // namespace v8
OLDNEW
« no previous file with comments | « test/cctest/compiler/test-run-inlining.cc ('k') | test/mjsunit/regress/regress-568765.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698