신동진
가입: 2015년 9월 10일 올린 글: 8
|
올려짐: 2015년11월11일 11:57 주제: 5-2 테스트케이스 |
|
|
조교님이 올려주신 테스트케이스에 약간 추가했습니다.
gc_test.ml에 추가해서 실행하면 됩니다.
코드: | let cmds6 =
let cmds = [] in
let cmds = append 126 (fun i ->
let v = Printf.sprintf "x%d" i in [
MALLOC;
BIND v;
PUSH (Val (Z 5));
PUSH (Id v);
STORE;
]) cmds in
let cmds = cmds @ [
MALLOC;
BIND "TARGET";
PUSH (Val (Z 1234));
PUSH (Id "TARGET");
STORE;
UNBIND;
PUSH (Val (Z 10));
MALLOC;
STORE;
(* Trigger GC *)
PUSH (Val (Z 10));
MALLOC;
STORE;
BOX 1;
UNBOX "TARGET";
LOAD;
] in
(* Check if allocated memory location's values are not affected by GC() *)
let cmds =
append 126
(fun i ->
let v = Printf.sprintf "x%d" i in
[PUSH (Id v);
LOAD;
POP]
) (cmds) in
let cmds = cmds @ [PUT] in
cmds
let _ = run cmds6 (* 1234 *)
|
코드: | let cmds7 =
let cmds = [
MALLOC;
BIND "val";
PUSH (Val (Z 1234));
PUSH (Id "val");
STORE;
UNBIND;
] in
let cmds = append 126 (fun i ->
let v = Printf.sprintf "x%d" i in [
BOX 1;
MALLOC;
BIND v;
PUSH (Id v);
STORE;
UNBIND;
]) cmds in
let cmds = cmds @ [
BOX 1;
MALLOC;
POP;
(* Trigger GC *)
MALLOC;
POP;
] in
(* Check if allocated memory location's values are not affected by GC() *)
let cmds =
append 126
(fun i ->
let v = Printf.sprintf "x%d" (125 - i) in
[UNBOX v;
LOAD;]
) (cmds) in
let cmds = cmds @ [UNBOX "val"; LOAD; PUT] in
cmds
let _ = run cmds7 (* 1234 *)
|
|
|