aboutsummaryrefslogtreecommitdiffstats
path: root/erts
diff options
context:
space:
mode:
authorGuilherme Andrade <[email protected]>2017-03-22 23:56:56 +0000
committerGuilherme Andrade <[email protected]>2017-03-22 23:57:55 +0000
commit7cb2ca89f96d9724267b46d2f1eb52a2cbe7c06f (patch)
tree709f1123b5251886daed888cee5978d860045bde /erts
parent5e18e917f29ed46caffa1211eb52ade01d24366a (diff)
downloadotp-7cb2ca89f96d9724267b46d2f1eb52a2cbe7c06f.tar.gz
otp-7cb2ca89f96d9724267b46d2f1eb52a2cbe7c06f.tar.bz2
otp-7cb2ca89f96d9724267b46d2f1eb52a2cbe7c06f.zip
Use ETS table id references on select_replace
Diffstat (limited to 'erts')
-rw-r--r--erts/emulator/beam/erl_db.c2
-rw-r--r--erts/emulator/beam/erl_db_hash.c6
-rw-r--r--erts/emulator/beam/erl_db_tree.c5
-rw-r--r--erts/emulator/beam/erl_db_util.h1
4 files changed, 7 insertions, 7 deletions
diff --git a/erts/emulator/beam/erl_db.c b/erts/emulator/beam/erl_db.c
index d77c585628..378328856d 100644
--- a/erts/emulator/beam/erl_db.c
+++ b/erts/emulator/beam/erl_db.c
@@ -2994,7 +2994,7 @@ BIF_RETTYPE ets_select_replace_2(BIF_ALIST_2)
if (safety == ITER_UNSAFE) {
local_fix_table(tb);
}
- cret = tb->common.meth->db_select_replace(BIF_P, tb, BIF_ARG_2, &ret);
+ cret = tb->common.meth->db_select_replace(BIF_P, tb, BIF_ARG_1, BIF_ARG_2, &ret);
if (DID_TRAP(BIF_P,ret) && safety != ITER_SAFE) {
fix_table_locked(BIF_P,tb);
diff --git a/erts/emulator/beam/erl_db_hash.c b/erts/emulator/beam/erl_db_hash.c
index 92b833468d..297bef3023 100644
--- a/erts/emulator/beam/erl_db_hash.c
+++ b/erts/emulator/beam/erl_db_hash.c
@@ -416,7 +416,7 @@ static int db_select_delete_hash(Process *p, DbTable *tbl, Eterm tid,
static int db_select_delete_continue_hash(Process *p, DbTable *tbl,
Eterm continuation, Eterm *ret);
-static int db_select_replace_hash(Process *p, DbTable *tbl,
+static int db_select_replace_hash(Process *p, DbTable *tbl, Eterm tid,
Eterm pattern, Eterm *ret);
static int db_select_replace_continue_hash(Process *p, DbTable *tbl,
Eterm continuation, Eterm *ret);
@@ -2181,7 +2181,7 @@ static int mtraversal_select_replace_on_trap(void* context_ptr, Sint slot_ix, Si
slot_ix, got, mpp, ret);
}
-static int db_select_replace_hash(Process *p, DbTable *tbl, Eterm pattern, Eterm *ret)
+static int db_select_replace_hash(Process *p, DbTable *tbl, Eterm tid, Eterm pattern, Eterm *ret)
{
mtraversal_select_replace_context_t sr_context = {0};
Sint chunk_size = 0;
@@ -2193,7 +2193,7 @@ static int db_select_replace_hash(Process *p, DbTable *tbl, Eterm pattern, Eterm
sr_context.p = p;
sr_context.tb = &tbl->hash;
- sr_context.tid = NIL; // TODO
+ sr_context.tid = tid;
sr_context.hp = NULL;
sr_context.prev_continuation_tptr = NULL;
diff --git a/erts/emulator/beam/erl_db_tree.c b/erts/emulator/beam/erl_db_tree.c
index 60bf7fc979..6334723d39 100644
--- a/erts/emulator/beam/erl_db_tree.c
+++ b/erts/emulator/beam/erl_db_tree.c
@@ -424,7 +424,7 @@ static int db_select_delete_tree(Process *p, DbTable *tbl, Eterm tid,
Eterm pattern, Eterm *ret);
static int db_select_delete_continue_tree(Process *p, DbTable *tbl,
Eterm continuation, Eterm *ret);
-static int db_select_replace_tree(Process *p, DbTable *tbl,
+static int db_select_replace_tree(Process *p, DbTable *tbl, Eterm tid,
Eterm pattern, Eterm *ret);
static int db_select_replace_continue_tree(Process *p, DbTable *tbl,
Eterm continuation, Eterm *ret);
@@ -1839,11 +1839,10 @@ static int db_select_replace_continue_tree(Process *p,
#undef RET_TO_BIF
}
-static int db_select_replace_tree(Process *p, DbTable *tbl,
+static int db_select_replace_tree(Process *p, DbTable *tbl, Eterm tid,
Eterm pattern, Eterm *ret)
{
DbTableTree *tb = &tbl->tree;
- Eterm tid = NIL; // TODO
DbTreeStack* stack;
struct select_replace_context sc;
struct mp_info mpi;
diff --git a/erts/emulator/beam/erl_db_util.h b/erts/emulator/beam/erl_db_util.h
index 1a84f20e5d..9be77fcefa 100644
--- a/erts/emulator/beam/erl_db_util.h
+++ b/erts/emulator/beam/erl_db_util.h
@@ -171,6 +171,7 @@ typedef struct db_table_method
Eterm* ret);
int (*db_select_replace)(Process* p,
DbTable* tb, /* [in out] */
+ Eterm tid,
Eterm pattern,
Eterm* ret);
int (*db_select_replace_continue)(Process* p,