Search Options

Results per page
Sort
Preferred Languages
Advance

Results 1 - 7 of 7 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/PPC64Ops.go

    	"F23",
    	"F24",
    	"F25",
    	"F26",
    	"F27",
    	"F28",
    	"F29",
    	"F30",
    	// "F31", the allocator is limited to 64 entries. We sacrifice this FPR to support XER.
    
    	"XER",
    
    	// If you add registers, update asyncPreempt in runtime.
    
    	// "CR0",
    	// "CR1",
    	// "CR2",
    	// "CR3",
    	// "CR4",
    	// "CR5",
    	// "CR6",
    	// "CR7",
    
    	// "CR",
    	// "LR",
    	// "CTR",
    }
    
    func init() {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Wed May 22 19:59:38 UTC 2024
    - 43.8K bytes
    - Viewed (0)
Back to top