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

Side by Side Diff: test/cctest/test-api.cc

Issue 2170743003: [api] Introduce fast instantiations cache (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: fixing uint issue under windows Created 4 years, 4 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
OLDNEW
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 22789 matching lines...) Expand 10 before | Expand all | Expand 10 after
22800 Local<Value> result = CompileRun("func();"); 22800 Local<Value> result = CompileRun("func();");
22801 CHECK(v8::Integer::New(isolate, 17)->Equals(env.local(), result).FromJust()); 22801 CHECK(v8::Integer::New(isolate, 17)->Equals(env.local(), result).FromJust());
22802 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); 22802 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
22803 // Verify function not cached 22803 // Verify function not cached
22804 auto serial_number = handle( 22804 auto serial_number = handle(
22805 i::Smi::cast(i::Handle<i::JSFunction>::cast(v8::Utils::OpenHandle(*func)) 22805 i::Smi::cast(i::Handle<i::JSFunction>::cast(v8::Utils::OpenHandle(*func))
22806 ->shared() 22806 ->shared()
22807 ->get_api_func_data() 22807 ->get_api_func_data()
22808 ->serial_number()), 22808 ->serial_number()),
22809 i_isolate); 22809 i_isolate);
22810 auto cache = i_isolate->template_instantiations_cache(); 22810 auto slow_cache = i_isolate->slow_template_instantiations_cache();
22811 CHECK(cache->FindEntry(static_cast<uint32_t>(serial_number->value())) == 22811 CHECK(slow_cache->FindEntry(static_cast<uint32_t>(serial_number->value())) ==
22812 i::UnseededNumberDictionary::kNotFound); 22812 i::UnseededNumberDictionary::kNotFound);
22813 auto fast_cache = i_isolate->fast_template_instantiations_cache();
22814 CHECK(fast_cache->get(static_cast<uint32_t>(serial_number->value()))
22815 ->IsUndefined(i_isolate));
22813 // Verify that each Function::New creates a new function instance 22816 // Verify that each Function::New creates a new function instance
22814 Local<Object> data2 = v8::Object::New(isolate); 22817 Local<Object> data2 = v8::Object::New(isolate);
22815 function_new_expected_env = data2; 22818 function_new_expected_env = data2;
22816 Local<Function> func2 = 22819 Local<Function> func2 =
22817 Function::New(env.local(), FunctionNewCallback, data2).ToLocalChecked(); 22820 Function::New(env.local(), FunctionNewCallback, data2).ToLocalChecked();
22818 CHECK(!func2->IsNull()); 22821 CHECK(!func2->IsNull());
22819 CHECK(!func->Equals(env.local(), func2).FromJust()); 22822 CHECK(!func->Equals(env.local(), func2).FromJust());
22820 CHECK(env->Global()->Set(env.local(), v8_str("func2"), func2).FromJust()); 22823 CHECK(env->Global()->Set(env.local(), v8_str("func2"), func2).FromJust());
22821 Local<Value> result2 = CompileRun("func2();"); 22824 Local<Value> result2 = CompileRun("func2();");
22822 CHECK(v8::Integer::New(isolate, 17)->Equals(env.local(), result2).FromJust()); 22825 CHECK(v8::Integer::New(isolate, 17)->Equals(env.local(), result2).FromJust());
(...skipping 2630 matching lines...) Expand 10 before | Expand all | Expand 10 after
25453 25456
25454 // Put the function into context1 and call it. Since the access check 25457 // Put the function into context1 and call it. Since the access check
25455 // callback always returns true, the call succeeds even though the tokens 25458 // callback always returns true, the call succeeds even though the tokens
25456 // are different. 25459 // are different.
25457 context1->Enter(); 25460 context1->Enter();
25458 context1->Global()->Set(context1, v8_str("fun"), fun).FromJust(); 25461 context1->Global()->Set(context1, v8_str("fun"), fun).FromJust();
25459 v8::Local<v8::Value> x_value = CompileRun("fun('x')"); 25462 v8::Local<v8::Value> x_value = CompileRun("fun('x')");
25460 CHECK_EQ(42, x_value->Int32Value(context1).FromJust()); 25463 CHECK_EQ(42, x_value->Int32Value(context1).FromJust());
25461 context1->Exit(); 25464 context1->Exit();
25462 } 25465 }
OLDNEW
« src/objects.h ('K') | « test/cctest/interpreter/bytecode_expectations/CallRuntime.golden ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698