Search Options

Results per page
Sort
Preferred Languages
Advance

Results 1 - 10 of 12 for asyncPreempt2 (0.21 sec)

  1. src/runtime/mkpreempt.go

    	for i := 0; i < 8; i++ {
    		lSSE.add("MOVUPS", fmt.Sprintf("X%d", i), 16)
    	}
    
    	p("ADJSP $%d", lSSE.stack)
    	p("NOP SP")
    	l.save()
    	p("#ifndef %s", softfloat)
    	lSSE.save()
    	p("#endif")
    	p("CALL ยทasyncPreempt2(SB)")
    	p("#ifndef %s", softfloat)
    	lSSE.restore()
    	p("#endif")
    	l.restore()
    	p("ADJSP $%d", -lSSE.stack)
    
    	p("POPFL")
    	p("RET")
    }
    
    func genAMD64() {
    	// Assign stack offsets.
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Nov 20 17:19:36 UTC 2023
    - 15.3K bytes
    - Viewed (0)
  2. src/runtime/preempt.go

    }
    
    //go:generate go run mkpreempt.go
    
    // asyncPreempt saves all user registers and calls asyncPreempt2.
    //
    // When stack scanning encounters an asyncPreempt frame, it scans that
    // frame and its parent frame conservatively.
    //
    // asyncPreempt is implemented in assembly.
    func asyncPreempt()
    
    //go:nosplit
    func asyncPreempt2() {
    	gp := getg()
    	gp.asyncSafePoint = true
    	if gp.preemptStop {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri May 17 15:41:45 UTC 2024
    - 15.1K bytes
    - Viewed (0)
  3. src/runtime/signal_windows.go

    	// won't get to see who faulted.)
    	// Also don't push a sigpanic frame if the faulting PC
    	// is the entry of asyncPreempt. In this case, we suspended
    	// the thread right between the fault and the exception handler
    	// starting to run, and we have pushed an asyncPreempt call.
    	// The exception is not from asyncPreempt, so not to push a
    	// sigpanic call to make it look like that. Instead, just
    	// overwrite the PC. (See issue #35773)
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Oct 17 20:32:29 UTC 2023
    - 14.5K bytes
    - Viewed (0)
  4. src/runtime/os_windows.go

    	gp := gFromSP(mp, c.sp())
    	if gp != nil && wantAsyncPreempt(gp) {
    		if ok, newpc := isAsyncSafePoint(gp, c.ip(), c.sp(), c.lr()); ok {
    			// Inject call to asyncPreempt
    			targetPC := abi.FuncPCABI0(asyncPreempt)
    			switch GOARCH {
    			default:
    				throw("unsupported architecture")
    			case "386", "amd64":
    				// Make it look like the thread called targetPC.
    				sp := c.sp()
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Apr 26 22:55:25 UTC 2024
    - 41.5K bytes
    - Viewed (0)
  5. src/runtime/signal_unix.go

    	// preempt.
    	if wantAsyncPreempt(gp) {
    		if ok, newpc := isAsyncSafePoint(gp, ctxt.sigpc(), ctxt.sigsp(), ctxt.siglr()); ok {
    			// Adjust the PC and inject a call to asyncPreempt.
    			ctxt.pushCall(abi.FuncPCABI0(asyncPreempt), newpc)
    		}
    	}
    
    	// Acknowledge the preemption.
    	gp.m.preemptGen.Add(1)
    	gp.m.signalPending.Store(0)
    
    	if GOOS == "darwin" || GOOS == "ios" {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri May 10 16:04:54 UTC 2024
    - 45K bytes
    - Viewed (0)
  6. src/cmd/compile/internal/ssa/_gen/LOONG64Ops.go

    	"F15",
    	"F16",
    	"F17",
    	"F18",
    	"F19",
    	"F20",
    	"F21",
    	"F22",
    	"F23",
    	"F24",
    	"F25",
    	"F26",
    	"F27",
    	"F28",
    	"F29",
    	"F30",
    	"F31",
    
    	// If you add registers, update asyncPreempt in runtime.
    
    	// pseudo-registers
    	"SB",
    }
    
    func init() {
    	// Make map from reg names to reg integers.
    	if len(regNamesLOONG64) > 64 {
    		panic("too many registers")
    	}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Nov 21 19:04:19 UTC 2023
    - 25.2K bytes
    - Viewed (0)
  7. src/cmd/compile/internal/ssa/_gen/MIPS64Ops.go

    	"F23",
    	"F24",
    	"F25",
    	"F26",
    	"F27",
    	"F28",
    	"F29",
    	"F30",
    	"F31",
    
    	"HI", // high bits of multiplication
    	"LO", // low bits of multiplication
    
    	// If you add registers, update asyncPreempt in runtime.
    
    	// pseudo-registers
    	"SB",
    }
    
    func init() {
    	// Make map from reg names to reg integers.
    	if len(regNamesMIPS64) > 64 {
    		panic("too many registers")
    	}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Wed May 24 03:36:31 UTC 2023
    - 25.5K bytes
    - Viewed (0)
  8. src/cmd/compile/internal/ssa/_gen/MIPSOps.go

    	"F14",
    	"F16",
    	"F18",
    	"F20",
    	"F22",
    	"F24",
    	"F26",
    	"F28",
    	"F30",
    
    	"HI", // high bits of multiplication
    	"LO", // low bits of multiplication
    
    	// If you add registers, update asyncPreempt in runtime.
    
    	// pseudo-registers
    	"SB",
    }
    
    func init() {
    	// Make map from reg names to reg integers.
    	if len(regNamesMIPS) > 64 {
    		panic("too many registers")
    	}
    	num := map[string]int{}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Wed May 24 14:43:03 UTC 2023
    - 24K bytes
    - Viewed (0)
  9. src/runtime/proc_test.go

    }
    
    func TestAsyncPreempt(t *testing.T) {
    	if !runtime.PreemptMSupported {
    		t.Skip("asynchronous preemption not supported on this platform")
    	}
    	output := runTestProg(t, "testprog", "AsyncPreempt")
    	want := "OK\n"
    	if output != want {
    		t.Fatalf("want %s, got %s\n", want, output)
    	}
    }
    
    func TestGCFairness(t *testing.T) {
    	output := runTestProg(t, "testprog", "GCFairness")
    	want := "OK\n"
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Wed Jun 14 00:03:57 UTC 2023
    - 25.8K bytes
    - Viewed (0)
  10. src/cmd/compile/internal/ssa/_gen/386Ops.go

    var regNames386 = []string{
    	"AX",
    	"CX",
    	"DX",
    	"BX",
    	"SP",
    	"BP",
    	"SI",
    	"DI",
    	"X0",
    	"X1",
    	"X2",
    	"X3",
    	"X4",
    	"X5",
    	"X6",
    	"X7",
    
    	// If you add registers, update asyncPreempt in runtime
    
    	// pseudo-registers
    	"SB",
    }
    
    func init() {
    	// Make map from reg names to reg integers.
    	if len(regNames386) > 64 {
    		panic("too many registers")
    	}
    	num := map[string]int{}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Mar 14 08:10:32 UTC 2023
    - 45.1K bytes
    - Viewed (0)
Back to top