aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/test
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2016-09-15 21:21:10 +0200
committerSverker Eriksson <[email protected]>2016-10-10 11:35:53 +0200
commit099c60de4033d7b397d4b3fb47f183b52fcba855 (patch)
tree3941d78ed1b13fe1f69e804251329bdbdb8456c2 /erts/emulator/test
parent16d295c98f46e468ab1f7f4b3e6bfeb8f0f5749e (diff)
downloadotp-099c60de4033d7b397d4b3fb47f183b52fcba855.tar.gz
otp-099c60de4033d7b397d4b3fb47f183b52fcba855.tar.bz2
otp-099c60de4033d7b397d4b3fb47f183b52fcba855.zip
erts: Improve hipe load/upgrade/purge machinery
A step toward better integration of hipe load and purge Highlights: * code_server no longer needs to call hipe_unified_loader:post_beam_load/1 Instead new internal function hipe_redirect_to_module() is called by loading BIFs to patch native call sites if needed. * hipe_purge_module() is called by erts_internal:purge_module/2 to purge any native code. * struct hipe_mfa_info redesigned and only used for exported functions that are called from or implemented by native code. A list of native call sites (struct hipe_ref) are kept for each hipe_mfa_info. * struct hipe_sdesc used by hipe_find_mfa_from_ra() to build native stack traces.
Diffstat (limited to 'erts/emulator/test')
-rw-r--r--erts/emulator/test/code_SUITE.erl22
1 files changed, 12 insertions, 10 deletions
diff --git a/erts/emulator/test/code_SUITE.erl b/erts/emulator/test/code_SUITE.erl
index 8427bb134d..b76ba6427f 100644
--- a/erts/emulator/test/code_SUITE.erl
+++ b/erts/emulator/test/code_SUITE.erl
@@ -445,62 +445,64 @@ module_md5_ok(Code) ->
make_stub(Config) when is_list(Config) ->
catch erlang:purge_module(my_code_test),
MD5 = erlang:md5(<<>>),
+ Arg3 = {[], [], MD5, 0, 0},
Data = proplists:get_value(data_dir, Config),
File = filename:join(Data, "my_code_test"),
{ok,my_code_test,Code} = compile:file(File, [binary]),
- my_code_test = code:make_stub_module(my_code_test, Code, {[],[],MD5}),
+ my_code_test = code:make_stub_module(my_code_test, Code, Arg3),
true = erlang:delete_module(my_code_test),
true = erlang:purge_module(my_code_test),
my_code_test = code:make_stub_module(my_code_test,
make_unaligned_sub_binary(Code),
- {[],[],MD5}),
+ Arg3),
true = erlang:delete_module(my_code_test),
true = erlang:purge_module(my_code_test),
my_code_test = code:make_stub_module(my_code_test, zlib:gzip(Code),
- {[],[],MD5}),
+ Arg3),
true = erlang:delete_module(my_code_test),
true = erlang:purge_module(my_code_test),
%% Should fail.
{'EXIT',{badarg,_}} =
- (catch code:make_stub_module(my_code_test, <<"bad">>, {[],[],MD5})),
+ (catch code:make_stub_module(my_code_test, <<"bad">>, Arg3)),
{'EXIT',{badarg,_}} =
(catch code:make_stub_module(my_code_test,
bit_sized_binary(Code),
- {[],[],MD5})),
+ Arg3)),
{'EXIT',{badarg,_}} =
(catch code:make_stub_module(my_code_test_with_wrong_name,
- Code, {[],[],MD5})),
+ Code, Arg3)),
ok.
make_stub_many_funs(Config) when is_list(Config) ->
catch erlang:purge_module(many_funs),
MD5 = erlang:md5(<<>>),
+ Arg3 = {[], [], MD5, 0, 0},
Data = proplists:get_value(data_dir, Config),
File = filename:join(Data, "many_funs"),
{ok,many_funs,Code} = compile:file(File, [binary]),
- many_funs = code:make_stub_module(many_funs, Code, {[],[],MD5}),
+ many_funs = code:make_stub_module(many_funs, Code, Arg3),
true = erlang:delete_module(many_funs),
true = erlang:purge_module(many_funs),
many_funs = code:make_stub_module(many_funs,
make_unaligned_sub_binary(Code),
- {[],[],MD5}),
+ Arg3),
true = erlang:delete_module(many_funs),
true = erlang:purge_module(many_funs),
%% Should fail.
{'EXIT',{badarg,_}} =
- (catch code:make_stub_module(many_funs, <<"bad">>, {[],[],MD5})),
+ (catch code:make_stub_module(many_funs, <<"bad">>, Arg3)),
{'EXIT',{badarg,_}} =
(catch code:make_stub_module(many_funs,
bit_sized_binary(Code),
- {[],[],MD5})),
+ Arg3)),
ok.
constant_pools(Config) when is_list(Config) ->