Linux vmi284606.contaboserver.net 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64
Apache/2.4.57 (Ubuntu)
: 167.86.127.34 | : 216.73.217.31
Cant Read [ /etc/named.conf ]
7.2.24-0ubuntu0.18.04.17
root
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
usr /
local /
go /
src /
cmd /
compile /
internal /
ssa /
[ HOME SHELL ]
Name
Size
Permission
Action
gen
[ DIR ]
drwxr-xr-x
testdata
[ DIR ]
drwxr-xr-x
README.md
7.76
KB
-rw-r--r--
TODO
950
B
-rw-r--r--
biasedsparsemap.go
2.71
KB
-rw-r--r--
block.go
8.64
KB
-rw-r--r--
branchelim.go
11.41
KB
-rw-r--r--
branchelim_test.go
5.21
KB
-rw-r--r--
cache.go
2.46
KB
-rw-r--r--
check.go
13.9
KB
-rw-r--r--
checkbce.go
956
B
-rw-r--r--
compile.go
16.22
KB
-rw-r--r--
config.go
11.39
KB
-rw-r--r--
copyelim.go
1.82
KB
-rw-r--r--
copyelim_test.go
1.29
KB
-rw-r--r--
critical.go
3.15
KB
-rw-r--r--
cse.go
10.62
KB
-rw-r--r--
cse_test.go
4.21
KB
-rw-r--r--
deadcode.go
9.73
KB
-rw-r--r--
deadcode_test.go
3.49
KB
-rw-r--r--
deadstore.go
8.98
KB
-rw-r--r--
deadstore_test.go
4.09
KB
-rw-r--r--
debug.go
33.92
KB
-rw-r--r--
debug_test.go
28.68
KB
-rw-r--r--
decompose.go
10.91
KB
-rw-r--r--
dom.go
7.98
KB
-rw-r--r--
dom_test.go
13.34
KB
-rw-r--r--
export_test.go
5.68
KB
-rw-r--r--
flagalloc.go
5.49
KB
-rw-r--r--
func.go
22.17
KB
-rw-r--r--
func_test.go
12.85
KB
-rw-r--r--
fuse.go
5.7
KB
-rw-r--r--
fuse_test.go
5.04
KB
-rw-r--r--
html.go
29.04
KB
-rw-r--r--
id.go
576
B
-rw-r--r--
layout.go
3.56
KB
-rw-r--r--
lca.go
3.71
KB
-rw-r--r--
lca_test.go
1.65
KB
-rw-r--r--
likelyadjust.go
15.23
KB
-rw-r--r--
location.go
2.8
KB
-rw-r--r--
loopbce.go
9.85
KB
-rw-r--r--
loopreschedchecks.go
15.36
KB
-rw-r--r--
looprotate.go
2.24
KB
-rw-r--r--
lower.go
1.24
KB
-rw-r--r--
magic.go
13.42
KB
-rw-r--r--
magic_test.go
9.1
KB
-rw-r--r--
nilcheck.go
11.11
KB
-rw-r--r--
nilcheck_test.go
12.07
KB
-rw-r--r--
numberlines.go
8.44
KB
-rw-r--r--
op.go
8.74
KB
-rw-r--r--
opGen.go
839.32
KB
-rw-r--r--
opt.go
290
B
-rw-r--r--
passbm_test.go
3.14
KB
-rw-r--r--
phielim.go
1.47
KB
-rw-r--r--
phiopt.go
3.96
KB
-rw-r--r--
poset.go
37.23
KB
-rw-r--r--
poset_test.go
18.14
KB
-rw-r--r--
print.go
2.98
KB
-rw-r--r--
prove.go
36.68
KB
-rw-r--r--
redblack32.go
8.9
KB
-rw-r--r--
redblack32_test.go
5.96
KB
-rw-r--r--
regalloc.go
76.36
KB
-rw-r--r--
regalloc_test.go
6.41
KB
-rw-r--r--
rewrite.go
33.06
KB
-rw-r--r--
rewrite386.go
514.14
KB
-rw-r--r--
rewrite386splitload.go
3.7
KB
-rw-r--r--
rewriteAMD64.go
1.31
MB
-rw-r--r--
rewriteAMD64splitload.go
4.95
KB
-rw-r--r--
rewriteARM.go
538.26
KB
-rw-r--r--
rewriteARM64.go
837.68
KB
-rw-r--r--
rewriteMIPS.go
203.31
KB
-rw-r--r--
rewriteMIPS64.go
227.84
KB
-rw-r--r--
rewritePPC64.go
661.88
KB
-rw-r--r--
rewriteRISCV64.go
123.11
KB
-rw-r--r--
rewriteS390X.go
904.36
KB
-rw-r--r--
rewriteWasm.go
136.86
KB
-rw-r--r--
rewrite_test.go
3.01
KB
-rw-r--r--
rewritedec.go
10.56
KB
-rw-r--r--
rewritedec64.go
64.01
KB
-rw-r--r--
rewritedecArgs.go
6.6
KB
-rw-r--r--
rewritegeneric.go
1.09
MB
-rw-r--r--
schedule.go
13.99
KB
-rw-r--r--
schedule_test.go
2.91
KB
-rw-r--r--
shift_test.go
4.05
KB
-rw-r--r--
shortcircuit.go
3.97
KB
-rw-r--r--
shortcircuit_test.go
1.31
KB
-rw-r--r--
sizeof_test.go
855
B
-rw-r--r--
softfloat.go
1.94
KB
-rw-r--r--
sparsemap.go
1.98
KB
-rw-r--r--
sparseset.go
1.54
KB
-rw-r--r--
sparsetree.go
7.88
KB
-rw-r--r--
sparsetreemap.go
7.67
KB
-rw-r--r--
stackalloc.go
10.95
KB
-rw-r--r--
stackframe.go
290
B
-rw-r--r--
stmtlines_test.go
2.75
KB
-rw-r--r--
tighten.go
4.21
KB
-rw-r--r--
trim.go
4.24
KB
-rw-r--r--
value.go
10.71
KB
-rw-r--r--
writebarrier.go
17.92
KB
-rw-r--r--
writebarrier_test.go
1.75
KB
-rw-r--r--
xposmap.go
3.29
KB
-rw-r--r--
zcse.go
2.12
KB
-rw-r--r--
zeroextension_test.go
1.66
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : regalloc_test.go
// Copyright 2015 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package ssa import ( "cmd/compile/internal/types" "cmd/internal/src" "testing" ) func TestLiveControlOps(t *testing.T) { c := testConfig(t) f := c.Fun("entry", Bloc("entry", Valu("mem", OpInitMem, types.TypeMem, 0, nil), Valu("x", OpAMD64MOVLconst, c.config.Types.Int8, 1, nil), Valu("y", OpAMD64MOVLconst, c.config.Types.Int8, 2, nil), Valu("a", OpAMD64TESTB, types.TypeFlags, 0, nil, "x", "y"), Valu("b", OpAMD64TESTB, types.TypeFlags, 0, nil, "y", "x"), Eq("a", "if", "exit"), ), Bloc("if", Eq("b", "plain", "exit"), ), Bloc("plain", Goto("exit"), ), Bloc("exit", Exit("mem"), ), ) flagalloc(f.f) regalloc(f.f) checkFunc(f.f) } // Test to make sure G register is never reloaded from spill (spill of G is okay) // See #25504 func TestNoGetgLoadReg(t *testing.T) { /* Original: func fff3(i int) *g { gee := getg() if i == 0 { fff() } return gee // here } */ c := testConfigARM64(t) f := c.Fun("b1", Bloc("b1", Valu("v1", OpInitMem, types.TypeMem, 0, nil), Valu("v6", OpArg, c.config.Types.Int64, 0, c.Frontend().Auto(src.NoXPos, c.config.Types.Int64)), Valu("v8", OpGetG, c.config.Types.Int64.PtrTo(), 0, nil, "v1"), Valu("v11", OpARM64CMPconst, types.TypeFlags, 0, nil, "v6"), Eq("v11", "b2", "b4"), ), Bloc("b4", Goto("b3"), ), Bloc("b3", Valu("v14", OpPhi, types.TypeMem, 0, nil, "v1", "v12"), Valu("sb", OpSB, c.config.Types.Uintptr, 0, nil), Valu("v16", OpARM64MOVDstore, types.TypeMem, 0, nil, "v8", "sb", "v14"), Exit("v16"), ), Bloc("b2", Valu("v12", OpARM64CALLstatic, types.TypeMem, 0, nil, "v1"), Goto("b3"), ), ) regalloc(f.f) checkFunc(f.f) // Double-check that we never restore to the G register. Regalloc should catch it, but check again anyway. r := f.f.RegAlloc for _, b := range f.blocks { for _, v := range b.Values { if v.Op == OpLoadReg && r[v.ID].String() == "g" { t.Errorf("Saw OpLoadReg targeting g register: %s", v.LongString()) } } } } // Test to make sure we don't push spills into loops. // See issue #19595. func TestSpillWithLoop(t *testing.T) { c := testConfig(t) f := c.Fun("entry", Bloc("entry", Valu("mem", OpInitMem, types.TypeMem, 0, nil), Valu("ptr", OpArg, c.config.Types.Int64.PtrTo(), 0, c.Frontend().Auto(src.NoXPos, c.config.Types.Int64)), Valu("cond", OpArg, c.config.Types.Bool, 0, c.Frontend().Auto(src.NoXPos, c.config.Types.Bool)), Valu("ld", OpAMD64MOVQload, c.config.Types.Int64, 0, nil, "ptr", "mem"), // this value needs a spill Goto("loop"), ), Bloc("loop", Valu("memphi", OpPhi, types.TypeMem, 0, nil, "mem", "call"), Valu("call", OpAMD64CALLstatic, types.TypeMem, 0, nil, "memphi"), Valu("test", OpAMD64CMPBconst, types.TypeFlags, 0, nil, "cond"), Eq("test", "next", "exit"), ), Bloc("next", Goto("loop"), ), Bloc("exit", Valu("store", OpAMD64MOVQstore, types.TypeMem, 0, nil, "ptr", "ld", "call"), Exit("store"), ), ) regalloc(f.f) checkFunc(f.f) for _, v := range f.blocks["loop"].Values { if v.Op == OpStoreReg { t.Errorf("spill inside loop %s", v.LongString()) } } } func TestSpillMove1(t *testing.T) { c := testConfig(t) f := c.Fun("entry", Bloc("entry", Valu("mem", OpInitMem, types.TypeMem, 0, nil), Valu("x", OpArg, c.config.Types.Int64, 0, c.Frontend().Auto(src.NoXPos, c.config.Types.Int64)), Valu("p", OpArg, c.config.Types.Int64.PtrTo(), 0, c.Frontend().Auto(src.NoXPos, c.config.Types.Int64.PtrTo())), Valu("a", OpAMD64TESTQ, types.TypeFlags, 0, nil, "x", "x"), Goto("loop1"), ), Bloc("loop1", Valu("y", OpAMD64MULQ, c.config.Types.Int64, 0, nil, "x", "x"), Eq("a", "loop2", "exit1"), ), Bloc("loop2", Eq("a", "loop1", "exit2"), ), Bloc("exit1", // store before call, y is available in a register Valu("mem2", OpAMD64MOVQstore, types.TypeMem, 0, nil, "p", "y", "mem"), Valu("mem3", OpAMD64CALLstatic, types.TypeMem, 0, nil, "mem2"), Exit("mem3"), ), Bloc("exit2", // store after call, y must be loaded from a spill location Valu("mem4", OpAMD64CALLstatic, types.TypeMem, 0, nil, "mem"), Valu("mem5", OpAMD64MOVQstore, types.TypeMem, 0, nil, "p", "y", "mem4"), Exit("mem5"), ), ) flagalloc(f.f) regalloc(f.f) checkFunc(f.f) // Spill should be moved to exit2. if numSpills(f.blocks["loop1"]) != 0 { t.Errorf("spill present from loop1") } if numSpills(f.blocks["loop2"]) != 0 { t.Errorf("spill present in loop2") } if numSpills(f.blocks["exit1"]) != 0 { t.Errorf("spill present in exit1") } if numSpills(f.blocks["exit2"]) != 1 { t.Errorf("spill missing in exit2") } } func TestSpillMove2(t *testing.T) { c := testConfig(t) f := c.Fun("entry", Bloc("entry", Valu("mem", OpInitMem, types.TypeMem, 0, nil), Valu("x", OpArg, c.config.Types.Int64, 0, c.Frontend().Auto(src.NoXPos, c.config.Types.Int64)), Valu("p", OpArg, c.config.Types.Int64.PtrTo(), 0, c.Frontend().Auto(src.NoXPos, c.config.Types.Int64.PtrTo())), Valu("a", OpAMD64TESTQ, types.TypeFlags, 0, nil, "x", "x"), Goto("loop1"), ), Bloc("loop1", Valu("y", OpAMD64MULQ, c.config.Types.Int64, 0, nil, "x", "x"), Eq("a", "loop2", "exit1"), ), Bloc("loop2", Eq("a", "loop1", "exit2"), ), Bloc("exit1", // store after call, y must be loaded from a spill location Valu("mem2", OpAMD64CALLstatic, types.TypeMem, 0, nil, "mem"), Valu("mem3", OpAMD64MOVQstore, types.TypeMem, 0, nil, "p", "y", "mem2"), Exit("mem3"), ), Bloc("exit2", // store after call, y must be loaded from a spill location Valu("mem4", OpAMD64CALLstatic, types.TypeMem, 0, nil, "mem"), Valu("mem5", OpAMD64MOVQstore, types.TypeMem, 0, nil, "p", "y", "mem4"), Exit("mem5"), ), ) flagalloc(f.f) regalloc(f.f) checkFunc(f.f) // There should be a spill in loop1, and nowhere else. // TODO: resurrect moving spills out of loops? We could put spills at the start of both exit1 and exit2. if numSpills(f.blocks["loop1"]) != 1 { t.Errorf("spill missing from loop1") } if numSpills(f.blocks["loop2"]) != 0 { t.Errorf("spill present in loop2") } if numSpills(f.blocks["exit1"]) != 0 { t.Errorf("spill present in exit1") } if numSpills(f.blocks["exit2"]) != 0 { t.Errorf("spill present in exit2") } } func numSpills(b *Block) int { n := 0 for _, v := range b.Values { if v.Op == OpStoreReg { n++ } } return n }
Close